UML 기호 정리 Design Pattern&UML2016. 12. 17. 20:36
지금까지는 상속을 너무 좁은 의미(사전적 의미의 물려받는다는)로만 봤던 것 같다.
공부를 좀 해보다 보니 좀 더 넓은 의미로 상속을 이해해야 한다고 한다.
================
아무튼... UML을 좀 제대로 그려보기 위해 내용 정리를 해봤다.
(그림에는 빼먹었는데,
generalization은 부모쪽으로 갈수록 일반화, 자식쪽으로 가면 전문화(특수화)
realization은 위쪽의 규칙 부분이 가상화, 아래쪽을 따르는(구현) 부분이 실체화)
=============
말로 좀 더 정리를 해보자.
클래스 관계는 6가지가 있다.
has a 계열의 association, composition, aggregation, dependency
is a 계열의 generalization(클래스를 상속), realization(인터페이스를 구현)
is a 관계는 별로 어려울 것이 없고, has a 관계만 좀 명확히 분류를 해볼 필요가 있다.
레퍼런스가 유지되지 않는 것 : dependency
레퍼런스가 유지되는 것 : association, composition, aggregation
그럼 레퍼런스가 유지되는 것만 또 보자.
association은 일단 넘어가고..
composition과 aggregation의 차이는 생명주기에 있다.
composition : 주인객체와 물건객체가 생성과 소멸을 동시에 한다.
aggregation : 물건은 있을 때도 있고, 없을 때도 있다(생명주기가 다르다는 말)
============================
또 생각이 정리가 됐음. 얘네 세가지가 제일 헷갈리는 것임.
association : 독립적인 관계(예를 들면 교수와 학생. 나와 비행기 등등.. 학생은 교수에게 인사를 할 수 있고, 나는 비행기를 이용할 수 있다. 그렇지만 굳이 클래스로 정의할 때 명시해야 할 정도로 깊은 관계를 가진다고는 못한다. 즉 서로 유기적으로 결합될 필요가 없다는 뜻) <- 이해 되면 읽어볼 것
compositiion : 강한 포함관계(생명주기가 같다. 나와 머리의 관계와 같은 것. 일반적인 사람은 머리를 가지고 있음)
aggregation : 약한 포함관계(생명주기가 다르다. 나와 스마트폰의 관계라고 할 수 있음. 스마트폰은 S사를 쓸 수도 있고, L사를 쓸 수도 있음. 직접 사도 되고, 엄마가 사줘서 써도 됨. 심지어는 없어도 살 수 있음. 필요할 때 사서 쓰면 됨)
그럼 다시 한 번 짧게 정리
association : 독립적인 식별 관계
composition : 생명주기가 같은 강한 포함 관계
aggregation : 생명주기가 다른 약한 포함 관계
dependency는 그냥 이용하는 것..(parameter든, 생성이든, 리턴타입이든)
generalization은 상속(일반화<->전문화) 개념
realization은 인터페이스(가상화<->실체화) 개념
====================
보충
aggregation은 UML표준으로 채택하기엔 애매해서 권장하지 않는다는 얘기도 있음..
===========================
영상의 설명을 봐도 도움이 됨
https://www.youtube.com/watch?v=Hz6iEhC7GP8
여기도 내용이 좋다
'Design Pattern&UML' 카테고리의 다른 글
CBD(Component Based Development) (0) | 2016.12.18 |
---|---|
Concrete Class(구상 클래스) (0) | 2016.12.17 |
Use Case는 Delivering 매커니즘과 분리되어야 한다. (0) | 2016.12.17 |
클린코더 영상 보고 공부중 - 디자인 (0) | 2016.12.17 |
디자인 패턴의 5대 원칙 - SOLID (0) | 2016.12.11 |