Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Kernprinzipien der Komposition | Abschnitt
Objektorientierte Programmierung in Python

bookKernprinzipien der Komposition

Swipe um das Menü anzuzeigen

Komposition konzentriert sich darauf, komplexe Objekte durch die Kombination von einfacheren, unabhängigen Komponenten zu erstellen. Anstatt sich auf Vererbung zu verlassen, die starre Hierarchien erzeugt, ermöglicht Komposition Klassen die Zusammenarbeit durch enthaltene Objekte. Dieser Ansatz macht Systeme flexibler, modularer und leichter wartbar, da Komponenten ersetzt oder erweitert werden können, ohne die gesamte Struktur zu beeinträchtigen.

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 implementiert die Logik für Zahlung, Lagerbestand oder Versand nicht selbst. Stattdessen besitzt es separate Objekte (Payment, Inventory, Shipping) und nutzt diese, um seine Aufgaben zu erfüllen.

Jede Komponente hat eine eigene Verantwortung, und Order koordiniert lediglich deren Zusammenarbeit. Wenn Sie ändern möchten, wie Zahlung oder Versand funktioniert, können Sie die jeweilige Komponente austauschen, ohne die Klasse Order zu verändern.

Einige Fallstricke bei der Verwendung von Komposition sind das Erstellen von Gottobjekten, die zu viele Komponenten sammeln und schwer zu verwalten sind, das Durchleiten von Komponenten-APIs durch die äußere Klasse anstatt eine saubere Schnittstelle zu bewahren, sowie das Einführen von versteckter Kopplung, wenn Komponenten zu sehr von den internen Details anderer abhängen.

God-Objekte
expand arrow

Ein God-Objekt versucht, zu viel zu übernehmen. Es enthält viele Komponenten und übernimmt viele Verantwortlichkeiten, was die Klasse schwer verständlich, testbar und wartbar macht.

Durchlässige Komponenten-APIs
expand arrow

Dies tritt auf, wenn die äußere Klasse die internen Methoden oder Attribute ihrer Komponenten offenlegt. Anstatt eine eigene, klare Schnittstelle bereitzustellen, zwingt sie die Nutzer dazu, direkt mit internen Objekten zu interagieren.

Versteckte Kopplung
expand arrow

Komponenten werden durch interne Details eng miteinander verbunden. Eine Änderung an einem Teil führt unerwartet zu Fehlern in einem anderen, da sie sich auf die interne Struktur des jeweils anderen anstatt auf klare Verträge verlassen.

question mark

Was ist ein häufiges Risiko bei der Verwendung von Komposition, das das Design schwerer wartbar machen kann?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 16

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 1. Kapitel 16
some-alt