언어 공부/JAVA
JAVA/CLASS
Code P
2022. 5. 11. 02:22
반응형
포함관계 - 상속 이외에도 클래스를 재사용하는 방법
방식 - 한 클래스의 멤버 변수로다른 클래스 타입의 참조 변수를 선언하는 것을 뜻한다.
class Circle {
int x, y, z;
// 각각의 좌표 변수를 생성했다고 가정하자.
}
class Point {
int x, y;
}
이처럼 Point 클래스는 이미 x와 y좌표를 가지고 있다.
그렇다면 Circle 클래스가 Point 클래스의 x와 y좌표 멤버 변수를 사용할 수는 없을까?? (상속 제외)
방법이 물론 있다.
class Circle {
Point c = new Point(); // 원점;
int r;
}
// 위와 같이 포인트 클래스의 객체를 만들어 x, y좌표를 생성하여 사용할 수 있다.
이처럼 포함관계를 하던 상속관계를 하던 이상하지 않은 상황은 이런 식으로 구별을 하면 된다.
Circle(원)은 Point(점)이다. - Circle is a Point (상속)
Circle(원)은 Point(점)을 가지고 있다 - Circle has a Point (포함)
이처럼 클래스를 가지고 문장을 만들었을 때 '. -은 ~이다'라는 문장이 성립한다면,
서로 상속관계를 맺어주고 '~은 ~을 가지고 있다'는 문장이 성립한다면 포함관계를 맺어주면 된다.
예를 들어 Car 클래스와 SportsCar 클래스는 'SportsCar는 Car이다.'와 같이 문장을 만드는 것이 더 옳기 때문에 이 두 클래스는 Car 클래스를 조상으로 하는 상속관계를 맺어 주어야 한다.
또한. Card 클래스와 Deck 클래스는 'Deck'은 Card를 가지고 있다. 와 같이 문장을 만드는 것이 더 옳기 때문에 Deck 클래스에 Card클래스를 포함시켜야 한다.
* 프로그램의 모든 클래스를 분석하여 가능한 많은 관계를 맺도록 노력해서 코드의 재사용성을 높여야 한다.
반응형