Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Grundlagen der Programmierung: Entwurfsmuster

Strategie: Das Problem

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Das in einer Klasse beschriebene Verhalten kann in einer Unterklasse überschrieben, also verändert werden. In diesem Video sehen Sie einige Nachteile dieses Vorgehens.
03:35

Transkript

In diesem Video lernen Sie das Entwurfsmuster Strategie kennen. Dieses Muster kann in Frage kommen, wenn das Verhalten von Objekten zur Laufzeit festgelegt und auch zur Laufzeit ausgetauscht werden können soll. Insbesondere soll dabei aus einer Gruppe verschiedener Algorithmen ausgewählt werden können. Das heißt, wir möchten das Verhalten eines Objekts variieren können, ohne am Objekt selbst Änderungen vornehmen zu müssen. Insbesondere wollen wir natürlich nicht das Programm anhalten müssen. Den Quelltext ändern. Neu übersetzen. Programm dann wieder starten. Objekt hat neues Verhalten. Ein typisches Beispiel für solche Anforderungen ist, wenn wir aus verschiedenen Sortieralgorithmen auswählen können möchten. Auch das Speichern einer Datei in verschiedenen Dateiformaten erfordert, dass wir zur Laufzeit den passenden Algorithmus auswählen können müssen, um eben die Datei im entsprechend Format zu speichern. Es ist auch möglich, dass mehrere Verhalten, die unabhängig voneinander sind, auch unabhängig voneinander variiert können werden sollen. Zum Beispiel in einem Computerspiel mit verschiedenen Autos, die unterschiedlich gut beschleunigen und bremsen können. Da fährt man dann quasi mit dem Auto durch die Gegend, sammelt Punkte und kann in Lauf der Zeit sein Beschleunigungs- und sein Bremsverhalten entsprechend verbessern. Schauen wir uns dieses letzte Beispiel genauer an. Als Ausgangspunkt nehmen wir die Klasse Auto mit den beiden Methoden zum Bremsen und zum Beschleunigen und mit dem Attribut für die Geschwindigkeit. Nun möchten wir, dass unser Auto besser beschleunigt. Da wir hier einer objektorientierten Welt sind, in eine objektorientierten Welt gibt es Vererbung, können wir uns jetzt hier eine Unterklasse bauen. Die Unterklasse heißt jetzt SchnellesAuto und überschreibt die vererbte Methode beschleunigen entsprechend. Nun machen wir das Gleiche mit dem Bremsverhalten, denn wir möchten schließlich auch bessere Bremsen haben. Also gibt es eine weitere Unterklasse. Ein Auto mit besseren Bremsen und hier überschreiben wir die bremsen Methode. Wenn wir jetzt beides kombinieren wollen, also besseres Bremsverhalten und besseres Beschleunigungsverhalten, brauchen wir natürlich noch eine weitere Unterklasse, nämlich schnelles Auto mit besseren Bremsen, wo wir sowohl beschleunigen als auch bremsen überschreiben. Das ist eigentlich alles noch recht überschaubar, also treiben wir es ein bisschen weiter. Neben den Methoden beschleunigen und bremsen füge ich eine dritte Methode hinzu nämlich musikSpielen. Was wäre ein Auto ohne eine vernünftige Soundanlage? Statt einfach nur zu sagen, wir haben hier langsame und schnelle Autos, machen wir hier 6 Abstufungen. Also von beschleunigt sehr, sehr schlecht bis beschleunigt unglaublich gut. Dann können wir natürlich auch für die Methode bremsen ein breiteres Spektrum anbieten. Sagen wir 5 verschiedene Möglichkeiten. Dann kommen wir noch zu unserer Audioanlage. Machen wir es nicht zu kompliziert. Sagen wir einfach, wir haben ein Monosystem, ein Stereosystem und ein Dolby Surround-3D-Digigal-System, also 3 Varianten. Wenn wir nun alle Kombinationsmöglichkeiten über Vererbung zur Verfügung stellen wollen, dann bedeutet das, wir brauchen 6 x 5 x 3, also 90 Unterklassen. Das ist jetzt vielleicht nicht mehr ganz so überschaubar. Eine typische Anforderung an ein Softwaresystem ist, dass irgendwelche Änderungen daran vorgenommen werden sollen. Schauen wir, wie sich unser Konzept in dieser Hinsicht schlägt. Nehmen wir an, wir möchten eine Änderung vornehmen an einem unserer Beschleunigungsverhalten. Dann müssen wir natürlich in allen Klassen, in denen dieses Beschleunigungsverhalten vorkommt, die entsprechende Änderung vornehmen. Das heiß, 5 x 3 sind 15 Klassen, in denen wir die Erneuerung vornehmen müssen. Schließlich wie sieht es mit Erweiterungen aus? Eines Tages stellen wir möglicherweise fest, 6 Möglichkeiten der Beschleunigung reichen nicht. Wir brauchen 7. Dann heißt das, wir haben jetzt 7 x 5 x 3, also 105 Klassen. Also schlicht durch das Hinzufügen von einer weiteren Möglichkeit zu beschleunigen, brauchen wir 15 weitere Klassen. Ich denke, damit ist deutlich geworden, dass wir unsere Anforderungen auf diese Weise nicht wirklich umgesetzt bekommen.

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!