---
category: Unified
tags: [UML, Architecture, Design, OOP, Documentation]
title: Class Diagram
description: 객체 지향 시스템의 클래스, 속성, 연산 및 클래스 간의 관계를 시각적으로 표현하여 시스템의 정적 구조를 모델링하는 핵심 UML 다이어그램
last_updated: 2026-05-02
---

# Class Diagram

## 📌 Brief Summary
**클래스 다이어그램(Class Diagram)**은 객체 지향 소프트웨어 설계에서 가장 기본적이고 널리 쓰이는 UML 다이어그램입니다. 시스템의 동적인 실행 흐름(시퀀스 다이어그램)을 보여주는 대신, 시스템을 구성하는 클래스와 인터페이스, 속성과 메서드, 그리고 객체들 간의 정적 관계(상속, 의존, 연관, 집계 등)를 명확하게 시각화합니다. 코드 구조를 한 장의 청사진으로 표현하여, 복잡한 코드베이스의 설계 의도를 파악하고 리팩토링 및 시스템 분석을 가속화하는 핵심 도구입니다.

---

## 📖 Core Content

### 1. 주요 구성 요소
*   **클래스 (Class):** 사각형으로 표현되며 세 구역(이름, 속성, 메서드)으로 나뉩니다.
*   **관계 (Relationships):**
    *   **연관 (Association):** 두 클래스가 서로 연결되어 있음을 의미합니다 (일반적인 참조).
    *   **의존 (Dependency):** 한 클래스의 변경이 다른 클래스에 영향을 미치는 관계입니다 (메서드 파라미터 등).
    *   **상속/일반화 (Inheritance/Generalization):** 부모 클래스와 자식 클래스 간의 IS-A 관계입니다.
    *   **합성 (Composition) & 집계 (Aggregation):** 전체와 부분의 HAS-A 관계를 나타내며, 생명 주기의 종속 여부에 따라 구분됩니다.

### 2. 다층적 활용
*   **C4 모델과의 통합:** C4 모델의 가장 낮은 추상화 계층인 '레벨 4: Code'를 시각화할 때 UML 클래스 다이어그램이 표준으로 사용됩니다.
*   **코드 자동화 및 도구 지원:** 최근에는 PlantUML이나 Mermaid와 같은 도구를 통해 코드(텍스트)로 다이어그램을 정의하거나, IDE에서 실제 코드로부터 다이어그램을 역공학하여 실시간 동기화를 달성합니다.

---

## ⚖️ Trade-offs & Caveats

### ✅ Benefits
*   **설계 검증:** 코드를 작성하기 전, 시스템 데이터 모델과 객체 책임을 명확히 설계하고 검증할 수 있습니다.
*   **명확한 소통:** 복잡한 객체 관계를 시각적으로 보여줌으로써 도메인 전문가와 개발자 간의 소통을 돕습니다.

### ⚠️ Challenges
*   **유지보수의 어려움:** 코드가 지속적으로 변경됨에 따라 수동으로 작성된 다이어그램은 빠르게 구식(Outdated)이 되어 오해를 낳을 수 있습니다.
*   **과도한 상세화 (Too Much Detail):** 시스템의 모든 필드와 getter/setter까지 다이어그램에 구겨 넣으려 하면 가독성이 파괴되어 본래 목적인 '추상화'를 잃게 됩니다.

---

## 🔗 Knowledge Connections

### Related Concepts
*   [[UML_Unified_Modeling_Language]]: 클래스 다이어그램의 문법과 기호를 정의하는 표준 체계입니다.
*   [[Design_Patterns]]: 여러 클래스들의 특정 조합이 만들어내는 보편적인 설계 패턴을 파악할 수 있게 해줍니다.
*   [[Sequence_Diagram]]: 클래스 다이어그램(정적 구조)과 쌍을 이루어 런타임의 동적 상호작용을 보완하는 다이어그램입니다.

### Practical Application Contexts
*   **System Documentation:** 모놀리식 시스템의 복잡한 비즈니스 로직을 모듈 단위로 쪼개어 설명할 때 활용됩니다.
*   **Refactoring:** 거대한 God Class를 여러 작은 클래스로 분해(SOLID 원칙 적용)하기 전 구조적 종속성을 파악하는 도구로 사용됩니다.

---

## 💡 Adjacent Topics
*   [[C4_Model]]: 상위 아키텍처부터 하위 코드(클래스) 레벨까지 줌인(Zoom-in)하는 아키텍처 표현 프레임워크입니다.
*   [[Object_Oriented_Programming]]: 클래스 다이어그램이 기반을 두고 있는 핵심 프로그래밍 패러다임입니다.

---
*Last updated: 2026-05-02*
