본문 바로가기
javaScript

합성(Composition)

by mooyou 2024. 5. 2.
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
반응형

댓글