728x90
UML (Unified Modeling Language)에서 제공하는 클래스 간의 관계는 객체지향 설계를 시각화할 때 매우 중요합니다. 클래스 간의 관계는 시스템 내의 객체 간의 상호작용을 설명하고, 이들이 어떻게 서로 연결되는지를 나타냅니다. UML에서 제공하는 주요 클래스 사이의 관계는 다음과 같습니다:
1. Association (연관 관계)
- 정의: 두 클래스 간에 기본적인 관계를 나타내며, 한 클래스가 다른 클래스의 객체를 참조하거나 상호작용하는 관계를 설명합니다. 예를 들어, 학생 클래스와 교수 클래스가 있을 때, '학생은 교수에게 배운다'는 형태로 표현됩니다.
- 표현: 두 클래스 사이의 선으로 표현됩니다.
- 종류:
- 양방향 (Bidirectional): 두 클래스가 서로를 참조합니다.
- 단방향 (Unidirectional): 한 클래스만 다른 클래스를 참조합니다.
2. Aggregation (집합 관계)
- 정의: 한 클래스가 다른 클래스의 부분(파트)을 포함하는 관계를 나타냅니다. 두 클래스는 독립적으로 존재할 수 있지만, 한 클래스가 다른 클래스의 구성 요소로서 포함되는 관계입니다. 예를 들어, 자동차 클래스와 바퀴 클래스는 집합 관계입니다.
- 표현: 빈 마름모(◇)로 표현되며, 전체(집합체)에서 부분(구성 요소)으로 이어지는 선으로 연결됩니다.
- 예: 자동차는 바퀴를 가지고 있다 (자동차가 없더라도 바퀴는 여전히 존재할 수 있다).
3. Composition (합성 관계)
- 정의: 집합 관계의 특수한 형태로, 전체(Whole)가 존재할 때만 부분(Part)이 존재하는 매우 강한 소유 관계를 나타냅니다. 예를 들어, 집 클래스와 방 클래스 간의 관계에서, 집이 없으면 방도 존재할 수 없습니다.
- 표현: 채워진 마름모(◆)로 표현되며, 마름모는 전체 클래스 쪽에 위치합니다.
- 예: 집은 방을 포함한다 (집이 없어지면 방도 함께 소멸된다).
4. Generalization (일반화 관계)
- 정의: 상위 클래스와 하위 클래스 간의 관계를 나타내며, 하위 클래스가 상위 클래스의 특성을 상속받는 관계입니다. 즉, 상속 관계로, "is-a" 관계로도 불립니다. 예를 들어, 동물 클래스는 상위 클래스이고, 고양이와 강아지는 하위 클래스입니다.
- 표현: 빈 삼각형 화살표로 표현되며, 화살표는 상위 클래스를 가리킵니다.
- 예: 고양이는 동물이다 (고양이는 동물의 특성을 상속받는다).
5. Dependency (의존 관계)
- 정의: 한 클래스가 다른 클래스에 의존하거나 영향을 받는 관계를 나타냅니다. 클래스 A가 클래스 B의 변경에 영향을 받는다면, A는 B에 의존하는 것입니다. 의존 관계는 짧은 시간 동안의 상호작용을 의미합니다.
- 표현: 점선 화살표로 표현되며, 화살표는 의존하는 방향을 가리킵니다.
- 예: 학생은 시험을 본다 (학생은 시험 클래스에 일시적으로 의존).
6. Realization (실체화 관계)
- 정의: 인터페이스와 그것을 구현하는 클래스 간의 관계를 나타냅니다. 클래스는 인터페이스에 정의된 메서드를 실제로 구현하는 역할을 합니다.
- 표현: 점선 화살표에 빈 삼각형으로 표현되며, 화살표는 인터페이스를 가리킵니다.
- 예: 날수 있는 인터페이스는 새 클래스에 의해 구현된다 (새는 날 수 있는 기능을 구현).
7. Dependency Injection (의존성 주입)
- 정의: 클래스가 다른 클래스의 인스턴스를 생성하지 않고, 외부에서 해당 객체를 주입받는 관계입니다. 종속성을 낮추고 테스트하기 쉽게 만드는 구조입니다.
- 예: 자동차 클래스는 엔진을 생성하지 않고 외부에서 주입받는다.
요약:
- Association: 두 클래스 간의 일반적인 관계.
- Aggregation: 부분과 전체의 관계, 전체가 없어도 부분은 존재할 수 있음.
- Composition: 부분과 전체의 관계, 전체가 없으면 부분도 소멸.
- Generalization: 상속 관계, 하위 클래스가 상위 클래스의 특성을 상속받음.
- Dependency: 한 클래스가 다른 클래스에 의존하는 관계.
- Realization: 인터페이스와 구현 클래스 간의 관계.
요약 (일상적인 비유로):
- 연관 관계: 두 사람이 서로 알고 있는 관계 (학생과 교사).
- 집합 관계: 큰 물건이 작은 물건들로 이루어졌지만, 큰 물건이 없어도 작은 물건은 존재할 수 있음 (자동차와 바퀴).
- 합성 관계: 큰 물건이 없으면 작은 물건도 없어지는 관계 (집과 방).
- 일반화 관계 (상속): 부모-자식 관계처럼, 특성을 물려받는 관계 (동물과 고양이).
- 의존 관계: 잠깐 다른 사람의 도움을 받는 관계 (학생과 도서관).
- 실체화 관계: 계약을 맺고 그 계약을 실제로 지키는 관계 (날수 있는 기능을 구현하는 새).
UML 클래스 다이어그램에서 이 관계들은 클래스 간의 상호작용과 구조를 시각적으로 표현하는 데 필수적입니다.
728x90
'Category > 정보처리기사' 카테고리의 다른 글
ARP 스푸핑(ARP Spoofing)이란? (0) | 2024.10.13 |
---|---|
OSI 7계층(OSI 7 Layer)이란? (0) | 2024.10.13 |
Visitor 패턴과 Decorator 패턴 이해하기 (0) | 2024.10.13 |
Factory Method Pattern (팩토리 메서드 패턴)이란? (0) | 2024.10.13 |
UML (Unified Modeling Language) 다이어그램이란? (1) | 2024.10.12 |