javaScript

합성(Composition)

mooyou 2024. 5. 2. 11:53
728x90
300x250

합성은 다른 객체를 포함하여 기능을 확장하는 방법을 말한다. 필요한 기능을 구현하고 있는 객체와 합성해서 기능을 사용하는 것을 말하며 기능을 구현하고 있는 객체와 사용하는 객체 간의 관계를 합성관계라고 한다.

 

// Engine 클래스 정의
class Engine {
  constructor(horsepower) {
    this.horsepower = horsepower;
  }

  start() {
    console.log("Engine started.");
  }
}

// Car 클래스 정의
class Car {
  constructor(make, model, engine) {
    this.make = make;
    this.model = model;
    this.engine = engine;
  }

  start() {
    console.log(`${this.make} ${this.model} started.`);
    this.engine.start(); // Engine 객체의 start 메소드 호출
  }
}

// Engine 객체 생성
const engine = new Engine(200);

// Car 객체 생성
const car = new Car("Hyundai", "Sonata", engine);

// Car 시작
car.start();

 

이 예시에서 'Engine'클래스는 자동차 엔진을 나타내며, 'Car'클래스는 자동차를 나타낸다. Car클래스는 Engine 객체를 포함하고있다.

 

Engin클래스와 Car 클래스는 서로 독립적으로 존재할 수 있다. Car 객체는 필요에 따라 Engine 객체의 메소드를 호출해서 기능을 실행한다.

 

함성을 사용하면 기능을 재사용하고 확장할 수 있으며 객체 간의 의존성을 줄이고 유연한 코드를 작성할 수 있다.

728x90
반응형