이번 학기에 듣게 된 '시스템분석설계' 라는 과목에서 배운 내용을 정리해보고자 글을 씁니다.
각 관계에 대한 자세한 설명은 따로 포스팅하여 예제 코드와 함께 링크 걸겠습니다.
클래스 관계는 위와 같은 다이어그램으로 표현할 수 있습니다.
- Inheritance(Generalization): 부모-자식 관계로, 확장(extends) 개념이 들어갑니다.
https://cuckoobird.tistory.com/213
[소프트웨어공학] 클래스 간의 관계 1. Generalization (Inheritance)
Generalization (Inheritance) 관계Generalization 관계는 두 가지의 특징을 가집니다.1. 부모와 자식 관계: 상위 클래스와 하위 클래 관계가 부모 클래스, 자식 클래스로 작용합니다. 이를 두고 상속(Inheritance
cuckoobird.tistory.com
- Realization: Inheritance 관계에서 더 나아가 추가적으로 하나의 부모에서 다른 자식들이 부분 집합적으로 갖고자 하는 메서드를 추상 메서드로 구현합니다.
- Association: A클래스와 B클래스가 있다고 했을 경우, A클래스는 B클래스를 알고, B클래스를 사용합니다. association은 A클래스에서 B클래스의 객체를 선언합니다.
- Aggregation: Association에서 더하여 A클래스에서 선언한 B클래스를 생성하지 않습니다. Composition과 비교하였을 때에 Association은 예로들어 PC라고 할 수 있고, Composition은 Laptoop이라고 할 수 있습니다. 외부에서 생성된 B클래스를 A클래스에서 사용할 수 있기 때문에 B클래스가 독립적으로 동작하고 키보드가 고장나면 다른 키보드로 갈아낄 수 있는 PC와 비슷합니다.
- Composition: Association에 더하여 A클래스에서 선언한 B클래스를 생성합니다. A클래스에서 B클래스를 생성하기 때문에 예를 들어 Laptop이 키보드를 다른 키보드로 갈아낄 수 없는 것과 같다고 보면 됩니다. 따라서 B클래스는 A클래스에 의해 객체가 생성되고 관리됩니다.
- Dependency: A클래스가 B클래스를 사용하지만 B클래스의 객체를 선언도 생성도 하지 않습니다. A클래스의 메서드에서 Parameter로 B클래스 타입을 받아 이를 통해 사용하는 관계입니다. A클래스의 메서드가 실행되는 동안에만 전달받은 B객체와 관계를 맺습니다. 즉, 객체 소멸 시 까지 관계를 맺는 Association과 비교하여 협력 시간이 짧습니다.
'소프트웨어공학' 카테고리의 다른 글
[소프트웨어공학] 클래스 간의 관계 1. Generalization (Inheritance) (0) | 2024.09.12 |
---|---|
[소프트웨어공학] 6장. 아키텍처 설계와 클래스 설계 (0) | 2024.06.13 |
[소프트웨어공학] 5장. 설계 (0) | 2024.06.13 |
[소프트웨어공학] 4장. 요구 분석 (0) | 2024.04.26 |
[소프트웨어공학] 3장. 계획 (0) | 2024.04.25 |