Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Grundlagen der Programmierung: Entwurfsmuster

Prinzip 3: Komposition und Vererbung

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Vererbung ist eines der Kernkonzepte der Objektorientierung. Hier erfahren Sie, warum und in welchen Fällen Sie trotzdem in Betracht ziehen sollten, stattdessen auf Komposition zu setzen.
02:58

Transkript

Das dritte Entwurfsprinzip beschäftigt sich mit Kompositionen und Vererbung und empfiehlt, dass wir die Komposition vorziehen sollten. Beides sind Möglichkeiten um Funktionalität wiederverwenden zu können und dabei Codedopplungen zu vermeiden. Ein wesentlicher Unterschied besteht darin, dass die Vererbung zur Entwicklungszeit festgelegt wird und für die Laufzeit der Anwendung statisch ist, Kompositionsbeziehungen aber zur Laufzeit dynamisch verändert werden können. Ein Muster, was das recht gut verdeutlicht, ist das Strategiemuster. Die grundsätzliche Situation sieht folgendermaßen aus. Wir haben hier eine Klasse und diese Klasse bietet drei Methoden an, also drei Funktionalitäten, drei Verhalten und die sind unabhängig voneinander. Nun soll es für das erste Verhalten je nach Anforderung des Clients drei verschiedene Implementierungen geben. Für das zweite Verhalten vier verschiedenen Implementierungen und für das dritte nochmal drei verschiedene. Wenn wir versuchen dieses Problem mit Vererbung zu erschlagen, dann bedeutet das, dass wir für jede Kombinationsmöglichkeit eine separate Unterklasse erzeugen müssen. Damit kommen wir dann auf 3 x 4 = 12 x 3 = 36 unterschiedliche Klassen. Das sieht dann ungefähr so aus und in jeder dieser Klassen finden wir eine spezielle Kombination dieser drei Verhalten. Die Anwendung des Strategiemusters empfiehlt nun hier die Komposition einzusetzen und das sieht dann so aus. Für jedes der drei Verhalten wird eine eigenen Schnittstelle definiert und unsere eine Klasse hat jetzt drei Attribute, also je eines vom Typ der entsprechenden Schnittstelle. In den drei Schnittstellen wird das benötigte Verhalten definiert und diesen Klassen hier rechts wird es dann implementiert. Für die erste Funktionalität wollen wir drei verschiedene Implementierungen haben, also gibt es jetzt hier drei Klasse, die diese Schnittstelle anbieten. Bei der zweiten sind es vier, also gibt es hier vier Klassen und bei der dritten sind es nochmal drei, also gibt es hier drei Klassen. Um nun eine ganz bestimmte Kombination der Funktionalitäten zu bekommen, muss je eine Instanz aus der ersten, aus der zweiten und aus der dritten Gruppe erzeugt werden und dann an der passenden Stelle in dieses Objekt hineingestöpselt. Dadurch haben wir also nicht nur weniger Klassen, sondern wir sind auch flexibler, was die Objekterzeugung angeht. In der Variante mit Vererbung muss ich mich zu Beginn entscheiden, welche Kombination ich haben möchte. Dann instanziiere ich die entsprechende Klasse und habe ein Objekt, mit dem ausgewählten Verhalten. Brauche ich eine andere Kombination, muss ich das Objekt wegwerfen und mir ein neues erzeugen. Mit Komposition hingegen kann ich mein Objekt behalten. Dann stöpsle ich das Verhalten, das ich nicht mehr haben will aus, erzeuge mir das, was ich stattdessen haben möchte und stöpsle das ein. Das heißt jetzt natürlich nicht, dass Sie ab sofort vollständig auf Vererbung verzichten sollen. Immerhin ist es eines der Grundkonzepte der Objektorientierung. Das Prinzip sagt auch ziehe vor und nicht ersetze durch. Vererbung ist sehr gut geeignet, wenn ich zur Entwicklungszeit vorhandene Funktionalität ändern oder erweitern möchte und das möglichst ohne den ganzen Code nochmal schreiben zu müssen. Komposition bietet mir einfach nur die Möglichkeit, das auch zur Laufzeit des Programms zu tun. Auch hier hängt es also letztlich davon ab, welches Problem Sie lösen möchten, was Sie erreichen wollen.

Grundlagen der Programmierung: Entwurfsmuster

Erhalten Sie einen fundierten Einstieg in das Thema Entwurfsmuster (Design Patterns) und erfahren Sie, wie Sie Entwurfsmuster in objektorientierten Programmiersprechen umsetzen.

2 Std. 49 min (33 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!