コンポジションの導入
メニューを表示するにはスワイプしてください
コンポジションは、クラスが他のクラスから継承するのではなく、そのインスタンスを内部に保持する**「〜を持つ(has-a)関係」を表します。例えば、Car(車)はEngine(エンジン)を持つという関係です。これは、Truck(トラック)はVehicle(乗り物)であるのような「〜である(is-a)関係」をモデル化する継承**とは異なります。
1234567891011121314151617class 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())
CarはEngineを継承していません。その代わりに、Engineオブジェクトを保持し、それを利用して動作を実行します。これにより、**「〜を持つ(has-a)」関係が示され、「〜である(is-a)」**関係ではありません。この設計は柔軟性が高く、後から変更しやすくなります。
注意
柔軟な部品、明確な境界、および動作の実行時置換が必要な場合はコンポジションを使用。明確で安定した「is-a」階層がある場合は継承を優先。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 15
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 15