構成の例
おいしいフルーツサラダを作っていると想像してください 。
この文脈で構成がどのように機能するかは次のとおりです。
成分:
* フルーツ: これは個々のクラスのようなものです オブジェクト指向プログラミングで。それぞれの果物には、独自の特性(色、味、質感)と行動(スライスでき、食べることができます)があります。
* サラダボウル: これはメインクラスのようなものです オブジェクト指向プログラミングで。それはすべての果物の容器として機能し、それらをまとめて完全な皿を形成します。
構成:
*サラダボウル "a" を持っていません フルーツ。 「」のコレクションがあります 果物。それぞれの果物は独立して存在しますが、サラダボウルのコンテキスト内に一緒になります。
*サラダボウル 継承 果物からのプロパティ。それは単にを保持します それらとは、それらがどのように相互作用するかを定義します サラダ内。
*サラダボウル 果物を追加または削除できます 必要に応じて、その構成に柔軟性を与えます。
例:
* フルーツ: リンゴ、バナナ、イチゴ
* サラダボウル: このサラダボウルには、リンゴ、バナナ、イチゴがあります。また、これらの果物のスライスと配置の方法も定義します。
コードの:
`` Java
クラスフルーツ{
文字列色;
文字列の味;
}
クラスのアップルは果物を拡張します{
//特定のAppleプロパティ
}
クラスバナナは果物を伸ばします{
//特定のバナナプロパティ
}
クラスのsaladbowl {
リスト<フルーツ>果物;
void addfruit(フルーツフルーツ){
fruits.add(フルーツ);
}
void preateSalad(){
//果物のスライスとアレンジ
}
}
//使用の例
saladbowl mysalad =new Saladbowl();
mysalad.addfruit(new Apple());
mysalad.addfruit(new banana());
mysalad.preparesalad();
`` `
これは構成を示しています:
* `saladbowl`クラスはを継承しません 「フルーツ」またはそのサブクラスから。 構成 それらをリストに保持してそれらを保持します。
* `saladbowl`クラスには、独自のユニークな動作があります (サラダの準備)それが保持する果物を含む。
対照的に、継承は次のことを意味します:
* `saladbowl`クラスはを継承します 「フルーツ」クラスの特性と方法で、果物の一種になります。これは非論理的で不適切です。
構成は、柔軟で再利用可能なコードを可能にします。さまざまな組み合わせを備えたさまざまなサラダボウルを簡単に作成できるためです。
