클래스 간의 관계 (UML)
- UML 다이어그램에서 클래스 간의 관계는 객체 지향 프로그래밍에서 클래스들이 어떻게 연결되고 상호작용하는지를 나타냅니다.
1. Association (연관 관계)
표현 방식
의미
- 클래스 간의 일반적인 참조 관계를 나타냅니다.
- 한 클래스가 다른 클래스의 인스턴스를 속성이나 필드로 가지는 경우 나타납니다.
- 두 클래스는 독립적으로 존재할 수 있지만 서로 연결됩니다.
예시 코드
public class Student
{
public Teacher Teacher { get; set; }
}
public class Teacher
{
public string Name { get; set; }
}
- 관계 표시
- Student → Teacher
설명
- Student 클래스는 Teacher 객체를 참조하는 속성을 가지고 있습니다.
- 학생은 특정 교사와 연결될 수 있으며, 이는 단순한 참조 관계입니다.
2. Inheritance (상속 관계)
표현 방식
의미
- 부모-자식 관계를 나타내며, 부모 클래스의 속성과 메서드를 자식 클래스가 상속받습니다.
- 자식 클래스는 부모 클래스의 기능을 확장하거나 재정의할 수 있습니다.
예시 코드
public class Vehicle
{
public void Start() { Console.WriteLine("Vehicle started"); }
}
public class Car : Vehicle
{
public void Drive() { Console.WriteLine("Car is driving"); }
}
- 관계 표시
- 자식 클래스 → 부모 클래스
- Car → Vehicle
설명
- Car는 Vehicle을 상속받아 Start 메서드를 사용할 수 있습니다.
- Car는 Drive라는 고유 기능을 추가로 구현하여 상속받은 기능을 확장합니다.
3. Realization / Implementation (실체화 / 구현)
표현 방식
의미
- 클래스가 인터페이스에서 정의된 기능을 구현하는 관계입니다.
- 인터페이스는 계약(Contract)을 제공하며, 클래스는 이를 준수합니다.
예시 코드
public interface IDriveable
{
void Drive();
}
public class Car : IDriveable
{
public void Drive() { Console.WriteLine("Car is driving"); }
}
- 관계 표시
- 구현 클래스 → 인터페이스
- Car → IDriveable
설명
- Car 클래스는 IDriveable 인터페이스를 구현합니다.
- IDriveable 인터페이스는 Drive 메서드를 요구하며, Car는 이를 구체적으로 정의합니다.
4. Dependency (의존 관계)
표현 방식
의미
- 한 클래스가 다른 클래스의 기능을 일시적으로 사용하는 관계입니다.
- 객체 간 약한 결합을 나타냅니다.
예시 코드
public class PaymentService
{
public void ProcessPayment() { Console.WriteLine("Payment processed"); }
}
public class OrderProcessor
{
public void ProcessOrder(PaymentService paymentService)
{
paymentService.ProcessPayment();
}
}
- 관계 표시
- 의존하는 클래스 → 의존 대상 클래스
- OrderProcessor → PaymentService
설명
- OrderProcessor 클래스는 PaymentService를 매개변수로 전달받아 해당 기능을 사용합니다.
- OrderProcessor는 PaymentService와 강하게 결합되지 않고, 의존성이 필요할 때만 사용하는 관계입니다.
5. Aggregation (집합 관계)
표현 방식
의미
- 전체와 부분 간의 관계로, 부분 객체는 전체와 독립적으로 존재 가능합니다.
- 전체가 삭제되더라도 부분 객체는 사라지지 않습니다.예시 코드
public class School
{
public List<Student> Students { get; set; }
public School()
{
Students = new List<Student>();
}
}
public class Student
{
public string Name { get; set; }
}
- 관계 표시
- 전체 클래스 → 부분 클래스
- School → Student
설명
- School 클래스는 여러 Student 객체를 포함합니다.
- 학생은 학교와 관계없이 독립적으로 존재할 수 있으며, 학교가 없어지더라도 학생 객체는 유지됩니다.
6. Composition (구성 관계)
표현 방식
의미
- 전체와 부분 간의 관계로, 부분 객체는 전체에 종속됩니다.
- 전체가 삭제되면 부분 객체도 함께 삭제됩니다.
예시 코드
public class House
{
public List<Room> Rooms { get; set; }
public House()
{
Rooms = new List<Room>();
}
}
public class Room
{
public string Name { get; set; }
}
- 관계 표시
- 전체 클래스 → 부분 클래스
- House → Room
설명
- House는 여러 Room 객체를 포함합니다.
- 만약 House 객체가 삭제되면, Room 객체들도 삭제됩니다.
- 이는 Room이 House와 강하게 결합되어 있음을 의미합니다.
요약
관계 유형 | 의미 |
---|---|
Association | 클래스 간의 일반적인 참조 관계 |
Inheritance | 부모 클래스의 기능을 자식 클래스가 상속받는 관계 |
Realization | 클래스가 인터페이스를 구현하는 관계 |
Dependency | 한 클래스가 다른 클래스의 객체를 필요할 때만 사용하는 관계 |
Aggregation | 전체와 부분이 독립적으로 존재 가능한 관계 |
Composition | 전체가 삭제되면 부분도 함께 삭제되는 강한 결합 관계 |
'프로그래밍' 카테고리의 다른 글
[EFCore] Entity Framework Core (1) | 2024.11.29 |
---|---|
Hypervisor (하이퍼바이저) (1) | 2024.11.28 |
[Git] 용량이 큰 파일 Push하기 - LFS (0) | 2024.09.05 |
[VisualStudioCode] SSH 원격접속 오류 (1) | 2024.04.26 |
[Tensorflow] TF.Function (0) | 2024.02.20 |