Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Core Principles of Composition | Composición
Programación Orientada a Objetos en Python

bookCore Principles of Composition

Desliza para mostrar el menú

La composición se centra en construir objetos complejos combinando componentes más simples e independientes. En lugar de depender de la herencia, que crea jerarquías rígidas, la composición permite que las clases colaboren a través de objetos contenidos. Este enfoque hace que los sistemas sean más flexibles, modulares y fáciles de mantener, ya que los componentes pueden ser reemplazados o ampliados sin afectar toda la estructura.

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 no implementa la lógica de pago, inventario o envío por sí mismo. En su lugar, tiene objetos separados (Payment, Inventory, Shipping) y los utiliza para completar su trabajo.

Cada componente tiene una responsabilidad, y Order solo los coordina. Si se desea cambiar cómo funciona el pago o el envío, se puede reemplazar el componente sin modificar la clase Order.

Algunos inconvenientes a tener en cuenta al usar composición son la creación de objetos dios que agrupan demasiados componentes y se vuelven difíciles de gestionar, filtrar las APIs de los componentes a través de la clase externa en lugar de mantener una interfaz limpia, e introducir acoplamiento oculto cuando los componentes dependen demasiado de los detalles internos de otros.

Objetos dios
expand arrow

Un objeto dios intenta hacer demasiado. Contiene muchos componentes y maneja muchas responsabilidades, lo que hace que la clase sea difícil de entender, probar y mantener.

Filtración de APIs de componentes
expand arrow

Esto ocurre cuando la clase externa expone los métodos o atributos internos de sus componentes. En lugar de proporcionar su propia interfaz limpia, obliga a los usuarios a interactuar directamente con los objetos internos.

Acoplamiento oculto
expand arrow

Los componentes se conectan estrechamente a través de detalles internos. Cambiar una parte rompe inesperadamente otra porque dependen de la estructura interna de cada uno en lugar de contratos claros.

question mark

¿Cuál es un riesgo común al usar composición que puede dificultar el mantenimiento del diseño?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 3. Capítulo 2
some-alt