자바/자바의 정석 Ch.7 객체지향 프로그래밍 II

ch7-3,4 클래스 간의 관계, 상속과 포함

돌맹이떼굴떼굴 2023. 4. 13. 13:10

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 값 들어간다.