継承とコンポジション

  • はじめに 今回は、オブジェクト指向プログラミングの中でも、継承コンポジションについて学びましょう。これらは、JavaScriptの上級者向けテクニックで、オブジェクト指向プログラミングの基本的な考え方を実現するために使われます。では、二人の説明を見ていきましょう。
Gal Normal

継承って何?

Geek Curious

それは、あるクラスの特性を別のクラスに引き継ぐことだよね?

Gal Happy

そうなの!継承は、あるクラスから別のクラスに特性や機能を引き継ぐことで、コードの再利用性を高めるの。

Gal Pleased

JavaScriptでは、 class キーワードを使ってクラスを定義するの。そして、 extends キーワードで継承するクラスを指定するの。例えば、こんな感じ!

class Animal {
  constructor(name) {
    this.name = name;
  }
  
  speak() {
    console.log(this.name + ' makes a noise.');
  }
}

class Dog extends Animal {
  speak() {
    console.log(this.name + ' barks.');
  }
}
Geek Happy

なるほど、 class でクラスを定義して、 extends で継承するクラスを指定するんだね!

Gal Happy

そうなの!それで、子クラスは親クラスの特性や機能を引き継ぐことができるの。

Gal Pleased

では、コンポジションについても学んでいこうね!

Gal Normal

コンポジションって何?

Geek Curious

それは、オブジェクトを組み合わせて新しいオブジェクトを作ることだよね?

Gal Happy

そうなの!コンポジションは、オブジェクト同士を組み合わせて、新しいオブジェクトを作ることで、柔軟なコード構造を実現するの。

Gal Pleased

JavaScriptでは、オブジェクトを組み合わせるために、オブジェクトリテラルや関数を使って実装できるの。例えば、こんな感じ!

const barker = (state) => ({
  bark: () => console.log('Woof, I am ' + state.name)
});

const dog = (name) => {
  let state = {
    name
  };

  return Object.assign({},
    barker(state)
  );
};

const myDog = dog('Max');
myDog.bark(); // "Woof, I am Max"
Geek Happy

なるほど、オブジェクトを組み合わせて、新しいオブジェクトを作るんだね!

Gal Happy

そうなの!コンポジションを使うことで、クラスの継承の制約から解放されて、もっと柔軟なコード構造を実現できるの!

  • おわりに オブジェクト指向プログラミングにおいて、継承とコンポジションは、コードの再利用性や柔軟性を高めるために使われる重要なテクニックです。継承はクラス間で特性を引き継ぎ、コンポジションはオブジェクト同士を組み合わせて新しいオブジェクトを作ります。これらのテクニックを理解し、適切に使い分けることで、より効率的なコードを書くことができますね!😊