클래스 다이어그램
Source: Dev.to
Overview
클래스 다이어그램은 객체‑지향 모델링의 핵심이며, 서로 다른 엔터티(사람, 사물, 데이터) 간의 관계를 보여주고 시스템의 정적 구조를 나타냅니다.
클래스의 속성, 연산, 제약 조건을 설명하며 객체‑지향 언어에 직접 매핑될 수 있습니다.
Purpose of a Class Diagram
- 애플리케이션의 정적 뷰를 분석하고 설계합니다.
- 시스템의 책임을 설명합니다.
- 컴포넌트 및 배포 다이어그램의 기반을 제공합니다.
- 정방향 및 역방향 엔지니어링을 지원합니다.
Class Representation
클래스는 가로로 세 부분으로 나뉜 사각형으로 표시됩니다:
- Name – 클래스 이름(예:
Flight). - Attributes – 클래스의 속성.
- Operations – 클래스의 메서드.

Types of Relationships
Association
연관은 서로 통신이 필요한 두 클래스를 연결합니다.
- Bidirectional (기본값): 두 클래스가 서로를 인식합니다.
- Unidirectional: 한 방향으로만 탐색이 허용됩니다.

Multiplicity
다중성은 관계에 참여하는 클래스 인스턴스 수를 지정합니다(예: 0..*, 2..4). 연관선에 장식으로 표시됩니다.
Aggregation
전체‑부분 관계를 나타내는 특수한 연관 형태이며, 부분은 전체와 독립적으로 존재할 수 있습니다.
예시: Aircraft는 Airline 없이도 존재할 수 있습니다.
Composition
전체‑부분 관계가 더 강하게 적용되어, 부분의 생명 주기가 전체에 의존합니다.
예시: WeeklySchedule은 Flight 안에 포함되어 있습니다; Flight가 종료되면 WeeklySchedule도 파괴됩니다.
Generalization
일반화는 유사한 클래스를 보다 일반적인 슈퍼클래스로 결합하여 공통점을 강조합니다.
예시: Crew, Pilot, Admin은 모두 Person의 특수화입니다.
Dependency
의존성은 한 클래스(클라이언트)가 다른 클래스(공급자)를 사용하거나 의존한다는 것을 나타냅니다.
예시: FlightReservation은 Payment에 의존합니다.
Abstract Class
추상 클래스는 이름을 이탤릭체로 표시하여 식별합니다.
아래 다이어그램에서 Person과 Account가 추상 클래스입니다.

Additional Resources
- 시퀀스 다이어그램에 대한 자세한 내용은 다음을 참조하세요: