Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ コンポジションの導入 | コンポジション
Pythonにおけるオブジェクト指向プログラミング

bookコンポジションの導入

メニューを表示するにはスワイプしてください

コンポジションは、クラスが他のクラスから継承するのではなく、そのインスタンスを含む**「〜を持つ」関係を表します。例えば、Car has an Engine(車はエンジンを持つ)。これは、Truck is a Vehicle(トラックは車両である)のような「〜である」関係をモデル化する継承**とは異なります。

1234567891011121314151617
class Engine: def start(self): return "Engine started" class Car: def __init__(self, brand, engine): self.brand = brand self.engine = engine # Car HAS an Engine def drive(self): return f"{self.brand}: {self.engine.start()}" engine = Engine() car = Car("Toyota", engine) print(car.drive())
copy

CarEngineを継承していません。その代わりに、Engineオブジェクトを含み、それを利用して動作を実行します。これにより、「〜を持つ」関係が示され、「〜である」関係ではありません。この設計は柔軟性が高く、後からの変更も容易です。

Note
注意

柔軟な部品明確な境界、および動作の実行時置換が必要な場合はコンポジションを使用。明確で安定した真の is-a 階層がある場合は継承を優先

question mark

コンポジションを使用する主な利点は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  1
some-alt