학습 목표
클래스 다이어그램을 해석방법을 학습한다.
- 객체지향을 설명하기 위해서는 클래스다이어그램을 그리고 읽을 줄 알아야 한다.
- 객체들간 관계를 설명하는 클래스 다이어그램에 대해 학습한다.
UML
- Unified Modeling Language 의 약자로 통합 모델링 언어 라고 읽는다.
- 시스템 상호작용, 업무흐름, 시스템 구조, 컴포넌트 관계 등을 표현한다.
- UML 은 아래의 목적으로 사용한다.
- 다른 사람들과의 의사소통 또는 설계 논의
- 전체 시스템의 구조 및 클래스의 의존성 파악
- 유지보수를 위한 설계의 backend 문서
구분 | 설명 |
Use case Diagram | 요구 분석 과정에서 시스템과 외부와의 상호 작용을 묘사함 |
Activity Diagram | 업무의 흐름을 모델링하거나 객체의 생명주기를 표현함 |
Sequence Diagram | 객체 간의 메세지 전달을 시간적 흐름에서 분석함 |
Collaboration Diagram | 객체와 객체가 주고받는 메세지 중심의 작성함 |
Class Diagram | 시스템의 구조적인 모습을 그림 |
Component Diagram | 소프트웨어 구조를 그림 |
Deployment Diagram | 기업 환경의 구성과 컴포넌트들 간의 관계를 그림 |
표1) 주요 UML 다이어그램의 종류
클래스 다이어그램

- UML diagram 은 구조(Structure) 다이어그램 과 행위(Behavior) 다이어그램으로 구분된다.
- 구조 다이어그램
- 시스템의 개념, 관계 등의 측면에서 요소들을 나타내고 각 요소들의 정적인 면을 보기 위해 작성한다.
- 행위 다이어그램
- 각 요소들 혹은 요소들간의 변화나 흐름, 주고받는 데이터 등의 동작을 보기 위해 작성한다.
- 클래스 다이어그램
- 시스템의 관계를 파악할 수 있는 구조 다이어그램이다.
- 클래스간의 관계를 표현하는 대표적인 다이어그램이다.
클래스
일반화 (Generalization)
- 부모 클래스와 자식 클래스의 상속관계를 표현할때 사용된다.
public class Product { private String id; private long price; private long quantity; public long calculateAmount() { return price * amount } } public class Food extends Product { @Override public long caculateAmount() { return super.calculateAmount(); } } public class Device extends Product { @Override public long caculateAmount() { return super.calculateAmount(); } }
실제화 (Realization)
- 인터페이스의 구현을 나타낼때 사용된다.
public interface Validator { public boolean validate(long amount); } public class AmountValidator implements Validator{ @Override public boolean validate(long amount) { if (amount < 0) { return false; } return true; } }
의존 (Dependency)
- 대상 객체에 대한 의존을 나타낸다.
- 메소드내에서 대상클래스에 대한 참조를 이야기하며 메소드 수행이후 참조는 종료됨을 의미한다.
public class Restaurant { public Food makeFood () { return new Food(); } } public class Food extends Product { @Override public long caculateAmount() { return super.calculateAmount(); } }
연관 (Association)
- 연관은 다른 객체의 참조를 가지는 필드를 의미한다.
public class Cart { private Food foods; }