Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Principi Fondamentali della Composizione | Composizione
Programmazione Orientata Agli Oggetti in Python

bookPrincipi Fondamentali della Composizione

Scorri per mostrare il menu

La composizione si concentra sulla costruzione di oggetti complessi combinando componenti più semplici e indipendenti. Invece di affidarsi all'ereditarietà, che crea gerarchie rigide, la composizione permette alle classi di collaborare tramite oggetti contenuti. Questo approccio rende i sistemi più flessibili, modulari e facili da mantenere, poiché i componenti possono essere sostituiti o estesi senza compromettere l'intera struttura.

123456789101112131415161718192021222324252627282930313233
class Payment: def pay(self, amount): return f"Paid {amount}" class Inventory: def reserve(self, item): return f"{item} reserved" class Shipping: def ship(self, item): return f"{item} shipped" class Order: def __init__(self, item, price, payment, inventory, shipping): self.item = item self.price = price self.payment = payment self.inventory = inventory self.shipping = shipping def process(self): return " | ".join([ self.inventory.reserve(self.item), self.payment.pay(self.price), self.shipping.ship(self.item) ]) order = Order("Laptop", 1200, Payment(), Inventory(), Shipping()) print(order.process())
copy

Order non implementa direttamente la logica di pagamento, inventario o spedizione. Invece, possiede oggetti separati (Payment, Inventory, Shipping) e li utilizza per svolgere il proprio lavoro.

Ogni componente ha una sola responsabilità e Order si limita a coordinarli. Se si desidera cambiare il funzionamento del pagamento o della spedizione, è possibile sostituire il componente senza modificare la classe Order.

Alcuni rischi da considerare nell'uso della composizione sono la creazione di god object che raccolgono troppi componenti e diventano difficili da gestire, la fuga delle API dei componenti attraverso la classe esterna invece di mantenere un'interfaccia pulita, e l'introduzione di accoppiamento nascosto quando i componenti dipendono eccessivamente dai dettagli interni degli altri.

Oggetti dio
expand arrow

Un oggetto dio cerca di fare troppo. Contiene molti componenti e gestisce molte responsabilità, rendendo la classe difficile da comprendere, testare e mantenere.

API dei componenti esposte
expand arrow

Questo accade quando la classe esterna espone i metodi o gli attributi interni dei suoi componenti. Invece di fornire una propria interfaccia pulita, costringe gli utenti a interagire direttamente con gli oggetti interni.

Accoppiamento nascosto
expand arrow

I componenti diventano strettamente collegati tramite dettagli interni. Modificare una parte causa inaspettatamente la rottura di un'altra perché si basano sulla struttura interna reciproca invece che su contratti chiari.

question mark

Qual è un rischio comune nell'uso della composizione che può rendere il design più difficile da mantenere?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 2

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 3. Capitolo 2
some-alt