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

GRASP-Prinzipien

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die GRASP-Prinzipien beinhalten eine Sammlung von verschiedenen Prinzipien, deren Fokus auf der Verantwortlichkeit liegt. Diese ermöglichen es einem Programmierer, die Qualität des geschriebenen Codes zu verbessern.

Transkript

Untersuchen wir nun eine weitere Menge von objektorientierten Entwurfsprinzipien. GRASP heißen die und das steht für General Responsibility Assignment Software Patterns. GRASP fokussiert sich auf die Verantwortlichkeiten in einem Projekt. Wer erstellt dieses Objekt? Wer ist dafür zuständig, wie diese Objekte miteinander kommunizieren? Wer kümmert sich darum, alle Nachrichten zu übergeben, die zum Beispiel von einer Benutzeroberfläche empfangen werden? SOLID und GRASP, die kollidieren nicht miteinander. Es sind keine konkurrierenden Prinzipien. Man kann sich entweder für das eine oder für beide oder für keines entscheiden. In GRASP gibt es eine Reihe von Ideen, wobei es hier nicht darum geht, diese auswendig zu lernen. Ich versuche vielmehr, eine Einführung zu geben, um zu zeigen, dass sie existieren. Da sind keine Dogmen, das sind keine festen Regeln, doch Sie werden GRASP als nützliches Werkzeug einschätzen können. Behalten Sie es im Hinterkopf, wenn Sie UML Diagramme zeichnen. Es gibt bestimmte Techniken, um die Verantwortlichkeiten Ihrer Objekte herauszufinden. Als erstes möchte ich auf das sogenannte Expert oder Information Expert Prinzip eingehen. Angenommen wir arbeiten mit den drei Objekten: Kunde, Warenkorb und Artikel. Und wir erkennen, dass der Kunde die aktuelle Gesamtsumme aller Artikel im Warenkorb wissen möchte. Nun hält uns nichts davon ab, diese Daten zu berechnen und sie im Kundenobjekt zu speichern. Doch wenn Sie mal genauer drüber nachdenken, dann ist es doch eigentlich der Warenkorb, der das Meiste über seine Artikel in ihm weiß. Es ist der Warenkorb, der hierfür verantwortlich sein könnte. Ein Objekt, das sich um sich selbst kümmert. Das war jetzt ein einfaches Beispiel für den Gedanken dieses Information Experten oder des Expert Prinzips. Als nächstes haben wir das Erzeugerprinzip, Creator genannt. Wer ist für die Erstellung eines Objektes verantwortlich? Manchmal kann das Zeichnen eines Sequenzdiagramms helfen. Dabei sind so Fragen wichtig wie: Enthält ein Objekt ein anderes? Oder verwendet ein Objekt direkt ein anderes? Oder weiß ein Objekt genug, um ein anderes Objekt zu erzeugen? Wenn das der Fall ist, dann scheint es sinnvoll zu sein, diesen Objekten auch die Creator-Rolle zu übertragen und deutlich zu machen, welche Objekte für die Erstellung anderer Objekte zuständig sind. Als nächstes haben wir die Idee der geringen Kopplung und hohen Kohäsion. Wünschenswert ist eine geringe Kopplung. Es ist eine allgemeine Aussage in der Entwicklung und sie bedeutet, den Umfang der erforderlichen Verbindungen zwischen verschiedenen Objekten zu reduzieren. Wenn ein Objekt mit fünf anderen Objekten eng verbunden sein muss und 20 Methoden aufruft, nur um zu arbeiten, dann liegt eine hohe Kopplung vor. Unmengen von Abhängigkeiten bedeuten ein hohes Risiko, dass irgendwas schief läuft, wenn Sie eine Änderung an einem dieser Objekte vornehmen. Das Ziel ist, geringe Kopplung, um Abhängigkeiten zu reduzieren. Nun bedeutet eine geringe Kopplung nicht gleich gar keine Kopplung. Objekte müssen natürlich voneinander wissen, doch sie sollten ihre Aufgaben möglichst aus eigener Kraft und nur mit einem Minimum von anderen Objekten realisieren können. So viel Unterstützung wie nötig, doch so wenig wie möglich. Oftmals wird von Kopplung und von Kohäsion in einem Atemzug gesprochen. Kohäsion ist das Maß, wie fokussiert das innere Verhalten einer Klasse ist. Ist ein gesamtes Verhalten auf diese einzelne Klasse bezogen? Wenn ja, dann besitzt sie eine hohe Kohäsion. Handelt es sich zum Beispiel um so ein Gott-Objekt mit vielen Verhalten, von den alle nichts miteinander zu tun haben, dann besitzt es eine geringe Kohäsion. Wir streben eine geringe Kopplung und eine hohe Kohäsion an. Das nächste Prinzip heißt Controller. Wenn wir eine Benutzeroberfläche haben und einige geschäftsbezogene Klassen im Hintergrund arbeiten, dann wollen wir keine hohe Kopplung zwischen ihnen haben. Allerdings müssen natürlich die Elemente der Benutzeroberfläche die Geschäftsobjekte schon auch kennen und umgekehrt. Also ist es üblich, eine neue Klasse als Controller zu erstellen und sie zwischen die beiden anderen zu schalten. Wir erwarten also weder vom Geschäftsobjekt, dass es den Bildschirm aktualisiert, noch erwarten wir von den Bildschirmelementen, also den Schaltflächen und Fenstern, dass sie direkt mit dem Geschäftsobjekt kommunizieren. Der Controller vermittelt zwischen ihnen. Vielleicht haben Sie schon mal von dem Architekturmuster Model-View-Controller gehört. Das nächste Prinzip haben wir bereits mehrfach angesprochen. Es heißt Polymorphie. Polymorphie bedeutet, dass die Methoden einer Klasse und alle ihre Subklassen sich automatisch richtig verhalten. Je nachdem zu welcher Klasse Sie gehören. Und ich sage hier automatisch, weil wir hier eben keinen extra Code zur Verhaltensanpassung schreiben müssen. Das geschieht nämlich von ganz von alleine. Das hat alles mit Vererbung zu tun und mit dem richtigen Überschreiben von Methoden. Und schließlich haben wir noch das Prinzip der Protected Variations. Das ist die am weitest reichende Idee. Wie entwirft man ein System, so dass Änderungen und Variationen den geringsten Einfluss auf bereits Vorhandenes haben. Hier bedeutet es als Prinzip, dass wir die wahrscheinlichsten Punkte von Änderungen identifizieren und dass wir sie dann entsprechend schützen. Die meisten der Konzepte, die wir bislang untersucht haben, sind genau darauf ausgerichtet. Dinge wie Kapselung und das Verbergen von Daten zum Beispiel oder auch auf Privat gesetzte Attribute von Klassen, das sind alles Wege, um Klassen gegenüber Änderungen zu schützen bzw. sicher mit diesen Änderungen umzugehen. Unser oberstes Ziel ist es, lesbaren, wartbaren und flexiblen Code zu schreiben.

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...
 

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!