클래스 다이어그램

발행: (2026년 1월 2일 오전 05:57 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

Overview

클래스 다이어그램은 객체‑지향 모델링의 핵심이며, 서로 다른 엔터티(사람, 사물, 데이터) 간의 관계를 보여주고 시스템의 정적 구조를 나타냅니다.
클래스의 속성, 연산, 제약 조건을 설명하며 객체‑지향 언어에 직접 매핑될 수 있습니다.

Purpose of a Class Diagram

  • 애플리케이션의 정적 뷰를 분석하고 설계합니다.
  • 시스템의 책임을 설명합니다.
  • 컴포넌트 및 배포 다이어그램의 기반을 제공합니다.
  • 정방향 및 역방향 엔지니어링을 지원합니다.

Class Representation

클래스는 가로로 세 부분으로 나뉜 사각형으로 표시됩니다:

  1. Name – 클래스 이름(예: Flight).
  2. Attributes – 클래스의 속성.
  3. Operations – 클래스의 메서드.

Class diagram example

Types of Relationships

Association

연관은 서로 통신이 필요한 두 클래스를 연결합니다.

  • Bidirectional (기본값): 두 클래스가 서로를 인식합니다.
  • Unidirectional: 한 방향으로만 탐색이 허용됩니다.

Association example

Multiplicity

다중성은 관계에 참여하는 클래스 인스턴스 수를 지정합니다(예: 0..*, 2..4). 연관선에 장식으로 표시됩니다.

Aggregation

전체‑부분 관계를 나타내는 특수한 연관 형태이며, 부분은 전체와 독립적으로 존재할 수 있습니다.
예시: AircraftAirline 없이도 존재할 수 있습니다.

Composition

전체‑부분 관계가 더 강하게 적용되어, 부분의 생명 주기가 전체에 의존합니다.
예시: WeeklyScheduleFlight 안에 포함되어 있습니다; Flight가 종료되면 WeeklySchedule도 파괴됩니다.

Generalization

일반화는 유사한 클래스를 보다 일반적인 슈퍼클래스로 결합하여 공통점을 강조합니다.
예시: Crew, Pilot, Admin은 모두 Person의 특수화입니다.

Dependency

의존성은 한 클래스(클라이언트)가 다른 클래스(공급자)를 사용하거나 의존한다는 것을 나타냅니다.
예시: FlightReservationPayment에 의존합니다.

Abstract Class

추상 클래스는 이름을 이탤릭체로 표시하여 식별합니다.
아래 다이어그램에서 PersonAccount가 추상 클래스입니다.

Abstract class example

Additional Resources

  • 시퀀스 다이어그램에 대한 자세한 내용은 다음을 참조하세요:
Back to Blog

관련 글

더 보기 »

확장성: ‘100% Lisp’ 오류

그래서 저는 Lisp 언어로 작성된 Emacs‑like 편집기를 홍보하는 몇몇 기사들을 보았고, 가장 흔한 주장 중 하나는 다음과 같습니다: > “It’s written i...

시스템 설계 빠른 가이드

System Design은 규모의 언어이며, 모든 엔지니어는 이를 구사해야 합니다. 저는 복잡한 System Design 주제를 해독하는 데 도움이 되는 1‑페이지 Quick Guide를 만들었습니다.