Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Princípios Fundamentais da Composição | Composição
Programação Orientada a Objetos em Python

bookPrincípios Fundamentais da Composição

Deslize para mostrar o menu

Composição concentra-se na construção de objetos complexos por meio da combinação de componentes mais simples e independentes. Em vez de depender de herança, que cria hierarquias rígidas, a composição permite que as classes colaborem por meio de objetos contidos. Essa abordagem torna os sistemas mais flexíveis, modulares e fáceis de manter, pois os componentes podem ser substituídos ou estendidos sem comprometer toda a estrutura.

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ão implementa a lógica de pagamento, estoque ou envio por conta própria. Em vez disso, possui objetos separados (Payment, Inventory, Shipping) e os utiliza para realizar seu trabalho.

Cada componente tem uma responsabilidade, e Order apenas os coordena. Se for necessário alterar como o pagamento ou o envio funcionam, é possível substituir o componente sem modificar a classe Order.

Alguns cuidados ao usar composição incluem evitar objetos deus que acumulam componentes demais e se tornam difíceis de gerenciar, vazamento de APIs de componentes pela classe externa em vez de manter uma interface limpa, e o surgimento de acoplamento oculto quando os componentes dependem excessivamente dos detalhes internos uns dos outros.

Objetos deus
expand arrow

Um objeto deus tenta fazer demais. Ele contém muitos componentes e assume muitas responsabilidades, o que torna a classe difícil de entender, testar e manter.

Vazamento de APIs de componentes
expand arrow

Isso ocorre quando a classe externa expõe os métodos ou atributos internos de seus componentes. Em vez de fornecer sua própria interface limpa, ela força os usuários a interagir diretamente com objetos internos.

Acoplamento oculto
expand arrow

Os componentes tornam-se fortemente conectados por meio de detalhes internos. Alterar uma parte quebra inesperadamente outra porque dependem da estrutura interna um do outro em vez de contratos claros.

question mark

Qual é um risco comum ao usar composição que pode tornar o design mais difícil de manter?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 2

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 3. Capítulo 2
some-alt