디자인 패턴을 보면서 UML을 볼 일이 많아졌는데
긴가민가한 부분들이 있어서 다시한번 정리하는 시간을 가지려고 한다.
디자인패턴 강의를 들을때 'UML도 결국 언어다.' 다른 개발자들과 소통하기 위해 사용하는 도구이다. 라는 말이 기억에 남는다. UML을 공부하면 전세계 개발자들이 공유한 설계도 이해할 수 있겠지. 이는 곧 실력 향상으로 이어질것이라 믿는다.
is-a has-a 관계?
is-a는 흔히말하는 상속관계이다.
has-a는 is-a와 반대되는 의미로, 속한다, 가진다 정도로 보면될듯.
화살표 방향이 이해가 안가.
화살표가 나아가는곳이 주체가 되고, 화살표가 가리키는 요소가 대상이 된다.
A가 B를 참조한다.
화살표의 모양이 의미하는것이 무엇일까? 클래스간의 관계
1) Generalization (일반화)
슈퍼(부모)클래스와 서브(자식)클래스 간의 상속 관계를 나타낸다.
2) Realization (실체화)
Inerface를 implement하여 실제 class로 구현하는것을 의미한다.
3) Dependency(의존)
밑에서 알아볼 Association이랑 조금 혼동이 오는데,
같은점은 외부 클래스를 사용하는것. 다른점은 Dependency는 객체의 참조를 계속 유지하지는 않는다는 점이다. 메서드에서 클래스를 생성한다던지.. 매개변수로 받는다던지 등...
방법은 되게 다양하다.. URL 참조.
https://www.javatpoint.com/uml-dependency
4) Association(연관) Directed Association(방향성이 있는 연관)
다른 클래스를 필드로 갖는다.
방향성이 없으면 A가 B를, B가 A를 참조하거나, 혹은 서로가 서로의 클래스를 필드로 갖는것을 의미한다.
5) Composition
https://www.baeldung.com/java-composition-aggregation-association
'Today I learned' 카테고리의 다른 글
2021 08 10 - Abstract Factory (0) | 2021.08.10 |
---|---|
2021 08 10 - Factory Method (0) | 2021.08.10 |
Concurrency Patterns (0) | 2021.08.09 |
Java Synchronization (0) | 2021.08.06 |
재사용 가능한 디자인 패턴 기반 코딩기술 강의 정리 - Abstract superclass (0) | 2021.08.05 |
댓글