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: Objektorientiertes Design

SOLID-Prinzipien

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die SOLID-Prinzipien bestehen aus fünf einzelnen Prinzipien des objektorientierten Designs und basieren auf der Annahme dass eine Klasse ausschließlich über eine Verantwortlichkeit verfügt.

Transkript

Ich werde nun die fünf Prinzipien des objektorientierten Designs durchgehen, die unter dem Akronym SOLID zusammengefasst sind. Sie wurden von Autor Robert Martin zusammengestellt, der in Amerika auch als Onkel Bob bekannt ist. Vorab aber war eine Warnung. Die Namen dieser Prinzipien, die mögen übertrieben kompliziert klingen, die Bedeutungen dahinter sind aber nicht ganz schlecht. S steht für das Single Responsibility Prinzip. O für das Open/Closed Prinzip, L für das Liskovsche Substitutionsprinzip, I ist das Interface Segregation Prinzip und D steht für Dependency Inversion Prinzip. Bevor Sie nun schreiend aus dem Raum rennen sei gesagt, dass die Konzepte hinter den meisten dieser Prinzipien wesentlich einfacher zu merken sind als ihre Namen. Und es geht hier auch nicht darum, sich die Namen dieser Prinzipien zu merken. Die sind überhaupt nicht wichtig. Sehen wir sie uns also nacheinander mal an. Zuerst das Single Responsibility Prinzip. Ein Objekt sollte eine primäre Verantwortlichkeit haben. Einen einzigen Grund zu existieren und dieser Grund ist vollkommen innerhalb der Klasse gekapselt. Es kann mehrere Verhalten besitzen. Doch all diese Verhalten orientieren sich am Hauptgrund seiner Existenz. Ein Objekt, eine Aufgabe. Das hat unter anderem zur Folge, dass wir keine Gott-Objekte erzeugen, die den Platz von mehreren Objekten aus der realen Welt einnehmen. Und wir teilen auch nicht das Verhalten eines Konzeptes auf mehrere Objekte auf. Als nächstes haben wir das O. Das steht für Open/Closed Prinzip, also offen für Erweiterungen, aber geschlossen gegenüber Modifikationen. Das bedeutet, nachdem Sie funktionsfähigen Code geschrieben haben und sich dann Ihre Anforderung ändern, dann schreiben Sie neuen Code dazu, aber Sie ändern nicht den gesamten Code, der bereits funktioniert. Das hat zum Beispiel mit der Vererbung zu tun. Angenommen wir haben funktionsfähigen Code und erhalten dann eine neue Anforderung. Diese können wir mit einer neuen Klasse unterstützen, die Verhalten einer Superklasse erbt. Und wenn diese Klasse zusätzliches Verhalten benötigt, dann ändern wir eben nicht die ursprüngliche Superklasse, sondern wir stellen neuen Code in dieser Kindklasse bereit. Wir ändern also nicht den vorhandenen Code, der bereits funktioniert. Unser System ist offen für Erweiterungen, aber geschlossen gegenüber Modifikationen. L steht für das Liskovsche Substitutionsprinzip. Ich hoffe, ich habe meine Zunge nicht beim Aussprechen gebrochen. Dieses Prinzip bedeutet, dass Subklassen immer auch ihre Eltern Objekte vollkommen ersetzen können sollten. Auch das hat was mit Vererbung zu tun. Es sollte niemals die Situation auftreten, in der wir sagen müssen, wir können alles von dieser Subklasse übernehmen, nur diese eine Funktion nicht. Die müssen wir speziell behandeln. Wenn das der Fall ist, klingt es nicht wie eine echte Subklasse und sie verstößt eben gegen dieses Prinzip. I steht für das Interface Segregationsprinzip. Die Idee hierbei ist, dass viele spezifische Schnittstellen besser sind als eine einzige Allzweck-Schnittstelle. Eine Klasse kann viele Methoden haben, um auf sie zuzugreifen. Und ähnlich wie beim Prinzip Single Responsibility gilt hier auch: eine Methode, ein Zweck. Wenn ich zwei unterschiedliche Ziele verfolge, schreibe ich besser zwei unterschiedliche Methoden, eben Interfaces. Und Schließlich haben wir das D, das steht für Dependency Inversion Prinzip. Das bedeutet, dass wir hauptsächlich mit Abstraktionen arbeiten, um die Abhängigkeiten zwischen den Objekten zu reduzieren. Hier mal ein Beispiel: Angenommen wir haben eine Anwendung, um MP3s zu kaufen und herunterzuladen. Das ist unsere Klasse mit dem Namen Store. Die hat nun zwei Objekte, um Dateien einzulesen und auszugeben, zu schreiben. Die heißen AudioFileReader und AudioFileWriter. Das Dependency Inversion Prinzip bedeutet nun, dass wir diese beiden sehr konkreten Klassen besser abstrahieren sollten. Statt eines AudioFileReaders verwenden wir nur einen Reader. Die Speicherklasse Store, ganz oben im Bild, hängt nun nicht von den konkreten Klassen AudioFileWriter und AudioFileReader ab, sondern von ihren Abstraktionen. Diese neue Abstraktionsebene, die bietet uns die Flexibilität, als Low-Level Klasse jede Klasse einzusetzen, die von diesen abstrakten Klassen, Reader und Writer, erbt. Denkbar sind dann zum Beispiel sowas wie ein MovieFileReader und ein MovieFileWriter oder später meinetwegen ein GameFileReader und ein GameFileWriter oder was auch immer kommen mag. Es erlaubt uns also Substitutionen und bietet mehr Flexibilität für später. Einige dieser Prinzipien, die ich Ihnen gerade vorgestellt habe, können Sie umgehen. Andere können Sie brechen. Das sind Prinzipien und keine Gesetze. SOLID ist so eine Art Checkliste, die helfen kann, gute Klassen zu designen.

Grundlagen der Programmierung: Objektorientiertes Design

Lernen Sie alle Grundbegriffe und Methoden von objektorientiertem Design kennen und holen Sie sich das Rüstzeug, um bald Ihre eigene Softwareprojekte zu starten.

2 Std. 43 min (45 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:23.05.2014
Laufzeit:2 Std. 43 min (45 Videos)

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!