객체의 합성(has - a)
객체와 관련된 강의에서 객체는 속성과 행위를 가지고 있다고 했는데, 각 객체들은 독립적인 속성과 행위를 가지고 있는데 이러한 객체들이 모여 또 하나의 객체를 만들 수 있습니다. 이것을 객체를 합성한다고 부릅니다.
자동차 객체
class Car {
String name;
Accelerator accelerator;
Engine engine;
Handle handle;
Wheel wheel;
Car(String name) {
this.name = name;
this.accelerator = new Accelerator(name);
this.engine = new Engine(name);
this.handle = new Handle();
this.wheel = new Wheel("빠른 바퀴");
}
}
Car car = new Car("이쁜 자동차");
자동차는 엔진, 액셀러레이터, 핸들, 바퀴를 가지고 있습니다. 이러한 것을 가지고 있다고 해서 has - a 관계라고 부릅니다. (Car has a Engine)
그리고 이러한 자동차 객체는 엔진, 엑셀러레이터, 핸들, 바퀴 객체에 의존합니다. 부품들 중 하나라도 빠지게 되면 완전한 객체가 되지 못합니다. 비정상적인 자동차가 됩니다.
자동차의 부품들에 의존하는 방법은 꼭 한가지만 있는 것은 아닙니다. 이미 우리가 배웠던 생성자를 통해 부품들을 강제적으로 가질 수 있도록 할 수 있습니다.
자동차 객체
class Car {
String name;
Accelerator accelerator;
Engine engine;
Handle handle;
Wheel wheel;
Car(String name, Accelerator accelerator, Engine engine, Handle handle, Wheel wheel) {
this.name = name;
this.accelerator = accelerator;
this.engine = engine;
this.handle = handle;
this.wheel = wheel;
}
}
Accelerator accelerator = new Accelerator("이쁜 자동차");
Engine engine = new Engine("이쁜 자동차");
Handle handle = new Handle();
Wheel wheel = new Wheel("빠른 바퀴");
Car car = new Car("이쁜 자동차", accelerator, engine, handle, wheel);
객체의 합성이라는 개념 자체가 어려운 것은 아니나 익숙하지 않을 뿐입니다. 이후의 강의에서 배우지만 객체의 합성은 현업에서 추상화와 함께 빈번하게 사용합니다.
출처 : https://www.codelatte.io/courses/java_programming_basic/NG46TGZO4VG82O5P
'JAVA' 카테고리의 다른 글
[JAVA]String 객체와 문자열 상수 (0) | 2023.09.20 |
---|---|
[JAVA]캡슐화 (0) | 2023.09.12 |
[JAVA]메서드 오버로딩 (0) | 2023.09.08 |
[JAVA]메서드 (0) | 2023.09.07 |
[JAVA]생성자 오버로딩 (0) | 2023.09.06 |