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; }
}