継承とコンポジション#
- はじめに
今回は、オブジェクト指向プログラミングの中でも、継承とコンポジションについて学びましょう。これらは、JavaScriptの上級者向けテクニックで、オブジェクト指向プログラミングの基本的な考え方を実現するために使われます。では、二人の説明を見ていきましょう。
それは、あるクラスの特性を別のクラスに引き継ぐことだよね?
そうなの!継承は、あるクラスから別のクラスに特性や機能を引き継ぐことで、コードの再利用性を高めるの。
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.');
}
}
なるほど、
class
でクラスを定義して、
extends
で継承するクラスを指定するんだね!
そうなの!それで、子クラスは親クラスの特性や機能を引き継ぐことができるの。
それは、オブジェクトを組み合わせて新しいオブジェクトを作ることだよね?
そうなの!コンポジションは、オブジェクト同士を組み合わせて、新しいオブジェクトを作ることで、柔軟なコード構造を実現するの。
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"
なるほど、オブジェクトを組み合わせて、新しいオブジェクトを作るんだね!
そうなの!コンポジションを使うことで、クラスの継承の制約から解放されて、もっと柔軟なコード構造を実現できるの!
- おわりに
オブジェクト指向プログラミングにおいて、継承とコンポジションは、コードの再利用性や柔軟性を高めるために使われる重要なテクニックです。継承はクラス間で特性を引き継ぎ、コンポジションはオブジェクト同士を組み合わせて新しいオブジェクトを作ります。これらのテクニックを理解し、適切に使い分けることで、より効率的なコードを書くことができますね!😊