Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Core Principles of Composition | Composition
Programmation Orientée Objet en Python

bookCore Principles of Composition

Glissez pour afficher le menu

La composition consiste à construire des objets complexes en combinant des composants plus simples et indépendants. Plutôt que de s'appuyer sur l'héritage, qui crée des hiérarchies rigides, la composition permet aux classes de collaborer via des objets contenus. Cette approche rend les systèmes plus flexibles, modulaires et faciles à maintenir, car les composants peuvent être remplacés ou étendus sans perturber l'ensemble de la structure.

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 n'implémente pas lui-même la logique de paiement, de gestion des stocks ou d'expédition. Au lieu de cela, il possède des objets séparés (Payment, Inventory, Shipping) et les utilise pour accomplir son travail.

Chaque composant a une responsabilité unique, et Order ne fait que les coordonner. Si vous souhaitez modifier la façon dont le paiement ou l'expédition fonctionnent, vous pouvez remplacer le composant sans modifier la classe Order.

Quelques écueils à éviter lors de l'utilisation de la composition : créer des objets dieux qui accumulent trop de composants et deviennent difficiles à gérer, divulguer les API des composants à travers la classe externe au lieu de maintenir une interface propre, et introduire un couplage caché lorsque les composants dépendent trop des détails internes des autres.

Objets dieu
expand arrow

Un objet dieu essaie d’en faire trop. Il contient de nombreux composants et gère de nombreuses responsabilités, ce qui rend la classe difficile à comprendre, à tester et à maintenir.

Fuite des API de composants
expand arrow

Cela se produit lorsque la classe externe expose les méthodes ou attributs internes de ses composants. Au lieu de fournir sa propre interface claire, elle oblige les utilisateurs à interagir directement avec les objets internes.

Couplage caché
expand arrow

Les composants deviennent fortement liés par des détails internes. Modifier une partie casse de façon inattendue une autre, car ils dépendent de la structure interne de chacun au lieu de contrats clairs.

question mark

Quel est un risque courant lors de l’utilisation de la composition qui peut rendre la conception plus difficile à maintenir ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 3. Chapitre 2
some-alt