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 관계가 실제 코드에서 어떻게 적용되는지 보여줍니다. 이러한 관계를 이해하면 더 효과적인 시스템 설계와 구현이 가능합니다.