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클래스에 대한 직접적인 참조(멤버 변수)는 없습니다.
의존관계는 연관관계보다 임시적이고 약한 결합입니다.
점선 화살표로 표현합니다.
'CS지식' 카테고리의 다른 글
2진수를 16진수로 변환하는 방법 (0) | 2024.10.31 |
---|---|
[Sublime Text]내가 자주 쓰는 단축키 모음 (0) | 2024.01.04 |
[프론트엔드]웹 역사, 업무범위 (1) | 2024.01.04 |