하나의 클래스는 보통 세 개의 칸으로 나뉜 박스로 표현합니다.
상단: 클래스 이름
중단: 속성(Attributes / 멤버 변수)
하단: 메서드(Operations / 함수)
접근 제어자 표기법
클래스 다이어그램에서는 텍스트 대신 기호를 사용하여 접근 권한을 표시합니다.
+: Public (어디서든 접근 가능)
-: Private (해당 클래스 내부에서만 접근 가능)
#: Protected (상속받은 자식 클래스까지 접근 가능)
클래스 다이어그램의 핵심은 클래스들이 서로 어떻게 연결되어 있는지를 나타내는 '선'의 종류입니다.
1. 상속 (Generalization / Inheritance)
자식 클래스가 부모 클래스의 기능을 물려받는 관계입니다.
표현: 실선과 끝이 빈 삼각형 화살표 (──▷)
예시: '전사' 클래스가 '캐릭터' 클래스를 상속받음.
2. 실현 (Realization)
인터페이스를 실제로 구현하는 관계입니다.
표현: 점선과 끝이 빈 삼각형 화살표 (- - ▷)
예시: '플레이어' 클래스가 '이동 가능(IMovable)' 인터페이스를 구현함.
3. 연관 (Association)
한 클래스가 다른 클래스를 알고 있거나 참조하는 일반적인 관계입니다.
표현: 실선 또는 화살표 (──>)
예시: '선생님' 클래스가 '학생' 클래스를 참조함.
4. 의존 (Dependency)
한 클래스가 메서드 내부에서 일시적으로 다른 클래스를 사용하는 관계입니다.
표현: 점선 화살표 (- - >)
예시: Attack() 메서드 안에서 DamageCalculator 클래스를 잠깐 생성해서 계산함.
5. 집합(Aggregation) & 합성(Composition)
전체와 부분의 관계를 나타냅니다.
집합 (Aggregation): 부분 객체가 전체 객체와 독립적으로 존재할 수 있음 (빈 마름모 ──◇)
예: 축구팀과 축구선수 (팀이 해체되어도 선수는 존재함)
합성 (Composition): 부분 객체의 생명주기가 전체 객체에 종속됨 (꽉 찬 마름모 ──◆)
예: 캐릭터와 인벤토리 (캐릭터 데이터가 삭제되면 인벤토리도 사라짐)
