CS지식

[UML] 클래스 다이어그램 화살표 이해하기

백엔드 개발자 - 젤리곰 2023. 12. 29. 01:07
728x90

 
 
1. 일반화 관계 ( Generaliztion ) 

class Child extends Parent { ... }

하위 클래스가 상위 클래스의 특성을 상속받는 관계에서 사용합니다.
빈삼각형 화살표로 표현합니다.
 
 
2. 실체화 관계 ( Realization )

class ClassX implements Interface { ... }

클래스가 인터페이스를 구현할 때 사용합니다.
빈삼각형에 점선 화살표로 표현합니다.
 
3. 연관 관계 ( Association )

class ClassA { }

class ClassB {
    private ClassA thing;
}

두 클래스가 서로 상호작용할 수 있는 관계입니다.
일반적으로 한 클래스의 객체가 다른 클래스의 객체를 멤버 변수로 가지고 있는 경우 연관관계라 합니다.
짝대기 한줄로 이어줍니다.
 
4. 집합 관계 ( Aggregation )

class Student { }

class School {
    private List<Student> students;
}

'전체'와 '부분'의 관계로 부분은 전체없이 독립적으로 존재할 수 있습니다.
예시를 보면 학교가 없어져도 학생은 다른곳에서 공부를 할 수 있기때문에 집합관계입니다.
하얀 다이아몬드가 전체로 향하도록 화살표를 그립니다.
(합성관계와 구분할 것)
 
5. 합성 관계 ( Composition )

class Engine { }

class Car {
    private Engine engine = new Engine();
}

'전체'와 '부분'의 관계로 부분은 전체없이 존재할 수 없습니다.
엔진은 차량의 핵심부품으로 차가 없으면 자신의 기능을 수행할 수 없습니다.
까만 다이아몬드가 전체로 향하도록 화살표를 그립니다.
 
6. 의존 관계 ( Dependency )

class Student { ... }

class Registration {
    void register(Student student) { ... }
}

한 클래스가 다른 클래스에 의존하는 관계입니다.
쉽게 말하자면, 한 클래스의 메서드가 다른 클래스의 객체를 인자로 사용할 때 의존관계라고 합니다.
위 코드 예시로 보자면 register메서드 내에서만 의존 관계가 발생하며 student클래스에 대한 직접적인 참조(멤버 변수)는 없습니다. 
의존관계는 연관관계보다 임시적이고 약한 결합입니다.
점선 화살표로 표현합니다.

728x90