ch7-3 포함(composite) 관계
1. 클래스의 멤버로 참조변수를 선언하는 것
클래스의 관계에는 1.상속 2.포함, 2가지가 있다. 포함은 클래스의 멤버로 참조 변수를 선언하는 것이다. Circle class는 Point class를 상속받지 않고 포함한다.
왼쪽, 오른쪽 모두 저장공간은 3개이다. 하지만 왼쪽 x에 접근하려면 c.x이고, 오른쪽 x에 접근하려면 c.c.x를 써야 한다.
①의 x, y, r -> c.x, c.y, c.r
②의 r은 c.r이고 x, y -> c.c.x, c.c.y
2. 작은 단위의 클래스를 만들고, 이들을 조합해서 클래스를 만든다.
class Car는 Engine, Door를 포함했다. 자동차를 만들 때, 멤버들을 다쓰기보다는 Engine과 Door class를 만들어 포함시키면 복잡도가 줄어들고, Engine과 Door를 다시 쓸 수 있다.
ch7-4 클래스 간의 관계 설정하기
- 상속관계 '~은 ~이다.(is-a)'
- 포함관계 '~은 ~을 가지고 있다.(has-a)'
위 두 문장을 만들어서 자연스러운 문장을 골라 상속관계인지 포홤관계인지 구분할 수 있다.
원(Circle)은 점(Point)이다. - Circle is a Point.
원(Circle)은 점(Point)을 가지고 있다. - Circle has a Point.
'원이 점을 갖고 있다.'가 자연스럽다. 따라서 포함관계로 쓰는 것이 자연스럽다. 90% 이상이 포함관계이다. 그냥 포함을 쓰고 상속은 필요할 때 사용하자.
포함, 상속을 객체로 그리면 다음과 같다. 그림을 그릴 수 있어야 한다.
실습
1. 상속
2. 포함
⭐ 참조변수의 초기화는 new MyPoint( );를 적어야 한다. 적지 않고 매개변수만 선언하면 null 값 들어간다.
'자바 > 자바의 정석 Ch.7 객체지향 프로그래밍 II' 카테고리의 다른 글
ch7-10,11 참조변수 super, 생성자 super() (0) | 2023.04.15 |
---|---|
ch7-7~9 오버라이딩(overriding) (0) | 2023.04.13 |
ch7-5,6 단일상속 (0) | 2023.04.13 |
ch7-1,2 상속 (0) | 2023.04.13 |
ch7-32 추상 메서드 - 수정ing (0) | 2023.03.26 |