객체지향 프로그래밍을 시작하면서 객체를 이리저리 주고 받던 방식에서 벗어나 객체의 인스턴스 메소드를 사용하여 처리하는 방식으로 변경 및 객체 간 상속관계에 대해 알아본다.
시 제품 완성을 위해 부품을 필요로하는 개념이라고 한다면
시에는 완성된 혹은 그대로의 틀을 가지고 수정하거나(Override) 추가하여 재사용하는 개념이라고 할 수 있다.
이상의 개념을 가지고 아래의 오브젝트 다이어그램을 설명한다.
주체(사용자)의 대리인 main함수를 생략
MenuUI 객체 생성과 동시에 생성자를 통해 MenuRepository 객체가 생성된다.
이를 Composition has a 집합관계라고 할 수 있다.
MenuList 객체 생성과 동시에 Menu의 집합(배열)이 생성되는데, 이때 생성자를 통해 생성되나, 이때 배열 내부는 null로 초기화되어 있으므로 실제 객체는 없다.
이를 Aggregation has a 집합관계라고 할 수 있다.
이때 좀 더 상위의 주체가 하위에 있는 대상을 가진다(has)는 부분에서 종속되는 대상은 Dependency 로 표현한다.