Introduzione alla composizione
Scorri per mostrare il menu
Composizione rappresenta una relazione has-a, in cui una classe contiene un'istanza di un'altra classe invece di ereditarla. Ad esempio, una Car has an Engine. Questo differisce dall'ereditarietà, che modella una relazione 'is-a', come ad esempio una Truck is a Vehicle.
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 non eredita da Engine. Invece, contiene un oggetto Engine e lo utilizza per svolgere le sue funzioni. Questo mostra una relazione has-a, non is-a, rendendo il design più flessibile e facile da modificare in futuro.
Si dovrebbe utilizzare la composizione quando sono necessarie parti flessibili, confini chiari e sostituzione del comportamento a runtime. Preferire l'ereditarietà quando una gerarchia is-a è evidente e stabile.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione