클래스 다이어그램이란?

서로 다른 Entity들(사람, 제품, 데이터 등)이 어떻게 서로 관계를 맺고 있는지를 표현하는 다이어그램이다. 소프트웨어 공학에서 클래스 다이어그램(class diagram)은 통합 모델링 언어(UML)에서 시스템의 클래스, 클래스의 속성, 동작 방식, 객체 간 관계를 표시함으로써 시스템의 구조를 기술하는 정적 구조 다이어그램의 일종이다. 객체지향형 시스템 설계에서, 시스템의 논리 설계를 위한 클래스들의 존재와 그들의 관계를 도식으로 정리한 것이다. 단일 클래스 다이어그램은 시스템 클래스의 구조를 보여준다.

 

좋은 클래스 다이어그램은, 세세하게 모든 요소들을 다 적기보다 전체적인 구조를 쉽게 이해할 수 있게 목적에 맞게 필요한 부분만을 보여주는 것입니다.

 

 

 

클래스 다이어그램의 구성요소

 

Class 클래스

접근 제한자(Access Modifier), 필드/메서드명, 데이터 타입, 파라미터(parameter), 리턴 타입 등을 표현할 수 있다. 이 때 접근 제한자는 다음과 같다.

접근 제한자
(Access Modifier)
+ public
# protected
- private

 

Interface 인터페이스 (스테레오 타입 << >>)

인터페이스는 스테레오 타입 <<>> 으로 표현되는 것 중 하나이며, 스테레오 타입으로 많이 사용되는 것은 <<interface>>, <<utility>>, <<abstract>>, <<enumeration>> 등이 있다.

추상 클래스/메서드

일반적으로 추상클래스는 이탤릭체로 표기하긴 하지만, 칠판이라던가 이탤릭체가 힘든 상황에서는 스테레오타입 <<>> 이나 대괄호 {} 를 이용해서 표현하기도 한다.

 

클래스와의 관계

출처 : https://www.nextree.co.kr/p6753/

Generalization 일반화 (상속)

 

Realization 실체화 (인터페이스 오버라이딩 구현)

 

Dependency 의존 (클래스 참조)

A references B (as a method parameter or return type)

public class A {
    public void myMethod(B b) {
        b.callMethod();
    }
}

 

Association 연관

A has-a C object (as a member variable)

public class A {
    private C c;
}

대여 클래스가 바로 Association Class 이다.

 

Aggregation 집합 VS Composition 합성

학교와 학생은 집합관계이다. 그 이유는 학생들은 학교에 속하긴 하지만, 학교가 없어진다고 해서 학생들이 사라지지 않기 때문이다. 그러나 학교 내부에 존재하는 화장실은 학교가 철거되면 함께 없어지기 때문에 합성관계이다.

 

 

 

 

예제

시스템을 만들려고 한다. 이 도서관 에서는 독서회원을 가지고 있으며 독서회원은 책을 6권까지 빌릴 수 있는 권한을 가진다. 도서관이 소장하고 있는 책은 빌릴 수 있는 일반도서와 빌릴 수 없는 지정도서 두 종류로 나뉘며 같은 책이 여러 카피 있을 수 있다. 독서회원은 책이 모두 대출되어 없으면 예약을 할 수 있다.

+ Recent posts