본문 바로가기

composition2

이펙티브 자바 - 계승대신 구성 - 이 글은 Effective Java 를 기반으로 작성되었습니다. - 개요 계승(extends)은 코드 재사용을 돕는 강력한 도구이지만 잘못 사용하면 S/W 가 깨지기 쉽다. 계승을 사용하기전에는 아래와 같은 사항들을 고려해보는것이 좋다. 단일 패키지내에서 상위 클래스와 하위 클래스 구현자가 같은 경우 계승을 고려해 설계되었으며 문서를 갖춘 클래스인 경우 만약 객체 생성 가능 클래스라면 해당 클래스가 속한 패키지밖에서 계승을 시도하는것은 위험하다. - 계승의 문제점 메소드 호출과 달리 계승은 캡슐화 원칙을 위반한다. 상위 클래스 A 와 이를 extends 한 하위 클래스 B가 있다고 가정해보자. 하위 클래스 B를 변경하지 않아도 release 가 거듭되면서 상위 클래스 A 의 동작이 변경되면 하위 클래.. 2021. 11. 6.
UML - 클래스 다이어그램 고급 - 집합과 합성 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-aggregation-vs-composition/ - 집합(Aggregation)과 합성(Composition) 집합과 합성은 UML 에서 가장 헷갈리는 개념이다. 여기에다가 연관까지 끼어서 연관과 집합과 합성은 무엇이냐라고 묻는다면 이 질문이 곧 지옥이다. 집합을 단순하게 정의하기는 쉽다. 일부분이 되는 관계이며, 자동차가 엔진과 바퀴를 갖고 있는것과 같다고 정의하기도 한다. 하지만 이런 정의는 너무도 애매해서 집합의 개념을 모델링을 하는 사람마다 다르게 사용한다. 이런 애매한 정의로는 집합.. 2021. 2. 10.