공부/UML

[UML] 클래스 다이어그램 의존,연관,일반화,실체화 정리

2020. 1. 10. 09:21

Dependendy (의존)

A - - - - - - - - - - - -

>

B

A의 메서드에 매개변수로 B가 있거나

A의 메서드에서 B의 메서드를 실행한다.

Association (연관)

A

>

B

A의 멤버로 B가 있다.

Generalization (일반화)

A ▷ B

A(자식)가 B(부모)를 상속받았다. (A extents B)

Realization (실체화)

A - - - - - - - - - - - -▷ B

A가 B를 구현하였다. (A implements B)

화살표의 방향

A > B (A ▷ B)

A가 B를 바라본다.

A가 변경되면 B는 아무 영향이 없지만

B가 변경되면 B를 바라보고있는 A는 영향을 받는다

실선과 점선

실선이 점선보다 더 연관성이 크다

 


예시

의존성 (Dependency)

의존성 관계는 한 클래스가 다른 클래스의 메서드를 사용하거나 매개 변수로 사용할 때 발생합니다. 예를 들어, 우리는 Customer 클래스와 Order 클래스를 가질 수 있습니다. 여기에서 Customer 클래스는 Order 클래스의 인스턴스를 매개변수로 사용하는 메서드를 가질 수 있습니다.

public class Customer {
    public void placeOrder(Order order) {
        //...
    }
}

이 경우 Customer 클래스는 Order 클래스에 의존합니다. 즉, Order 클래스가 변경되면 Customer 클래스에도 영향을 미칠 수 있습니다.

연관관계 (Association)

연관 관계는 한 클래스가 다른 클래스의 인스턴스를 속성으로 가지고 있는 경우를 나타냅니다. 예를 들어, Employee 클래스와 Department 클래스를 생각해봅시다.

public class Employee {
    private Department department;
    //...
}

Employee 클래스는 Department의 인스턴스를 속성으로 가지고 있습니다. 이런 관계를 연관 관계라고 합니다.

일반화 (Generalization)

일반화 관계는 한 클래스가 다른 클래스를 상속받는 경우를 나타냅니다. 예를 들어, 우리는 Vehicle이라는 기본 클래스와 Car라는 하위 클래스를 가질 수 있습니다.

public class Vehicle {
    //...
}

public class Car extends Vehicle {
    //...
}

이 경우 Car 클래스는 Vehicle 클래스를 상속받고 있습니다. 이러한 관계를 일반화 관계라고 합니다.

실체화 (Realization)

실체화 관계는 한 클래스가 인터페이스를 구현하는 경우를 나타냅니다. 예를 들어, Drivable이라는 인터페이스와 이를 구현하는 Car 클래스를 생각해봅시다.

public interface Drivable {
    //...
}

public class Car implements Drivable {
    //...
}

Car 클래스는 Drivable 인터페이스를 구현합니다. 이런 관계를 실체화 관계라고 합니다.

이 예제들은 UML 관계가 실제 코드에서 어떻게 적용되는지 보여줍니다. 이러한 관계를 이해하면 더 효과적인 시스템 설계와 구현이 가능합니다.

반응형