프로그래밍

클래스 간의 관계 (UML)

Victory_HA 2024. 12. 6. 10:34

클래스 간의 관계 (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