JAVA

[JAVA]객체의 합성

당고개 2023. 9. 12. 17:00

객체의 합성(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