의존 관계
- 공급자의 변경이 클라이언트에게도 영향을 주는 관계
- 클라이언트 -> 공급자
- 결합도의 또 다른 형태
- 이미 의존관계가 표시되는 경우 사용x
- 모든 것이 다 중요한 것은 아님
인터페이스
- 다중 상속의 문제점으로 인터페이스가 등장하게 됨
- 인터페이스는 계약을 정의함
- 형식적으로 추상 클래스(속성이 없음)와 동일함
- 속성과 메서드가 없고 오로지 추상적 오퍼레이션만
<<interface>>
사용해서 표현
- 인터페이스와 관련될 수 있는 의무
![](https://velog.velcdn.com/images/ssonzm/post/c81c5b03-7f66-4296-ad48-a8aa57d07e57/image.png)
u
-
인터페이스를 사용한다.
![](https://velog.velcdn.com/images/ssonzm/post/f29d6b25-971f-453f-a635-a37a6b9e3e2c/image.png)
-
인터페이스를 제공한다.
![](https://velog.velcdn.com/images/ssonzm/post/c3b17943-67e8-48d6-b048-fd802f20b159/image.png)
사용자 입장에서는 SiteSearch로 알고 있음 (다형성 제공)
- SearchController가 SiteSearch를 상속받은 것
Aggregation and composition
![](https://velog.velcdn.com/images/ssonzm/post/9a1c7f4d-01b0-484e-a497-5b8141eed33c/image.png)
- Aggregation
- 느슨한 전체와 부분 관계
- 연관과 별 차이 없음
- 가능하면 사용하지 말 것!
- Composition
- 강한 전체와 부분 관계
- 특정 시간에 부분은 전체에 포함
- 부분은 항상 하나의 전체에 포함
- 전체는 부분의 생성과 삭제를 책임짐
- 즉 전체가 없어지면 부분도 자동으로 삭제되어야 함
제약 사항
제약에 맞춰야 함
설계자가 개발자에게 챙겨달라고 부탁하는 것
![](https://velog.velcdn.com/images/ssonzm/post/6a51e150-91de-4674-97da-a2ec77a6a781/image.png)
연관 클래스
Singleton 클래스
템플릿 클래스와 인터페이스
액티브 클래스
- 자신의 쓰레드를 실행하고 제어
![](https://velog.velcdn.com/images/ssonzm/post/8fceedc1-66af-46a6-bcb0-f89c34728a47/image.png)
Interaction Diagram and Class Diagram
- Interaction diagram을 그리고 나서 Class diagram을 그림
![](https://velog.velcdn.com/images/ssonzm/post/0669ed19-fa3d-4523-9920-ef69d3b9673f/image.png)