## 15.6 Der Klassendesigner (Class Designer) In vielen Unternehmen erstellen die Entwickler während der Designphase das Klassendesign mithilfe der UML (Unified Modeling Language), um die schwierigen und komplexen Anforderungen an eine ausgefeilte Software zu erfüllen. UML ist eine Spezifikation, die eine Reihe von Diagrammen definiert, mit denen eine objektorientierte Software während der Designphase nicht nur visuell dargestellt, sondern auch modelliert werden kann. Mit dem Klassendiagramm von UML lassen sich zum Beispiel Klassen samt ihrer Beziehungen und der Vererbungslinien darstellen. In Visual Studio 2010 ist mit dem Klassendesigner ein Werkzeug integriert, mit dem Sie Klassendiagramme modellieren können, die den UML-Klassendiagrammen ähneln. ### 15.6.1 Ein typisches Klassendiagramm In Abbildung 15.25 sehen Sie einen Ausschnitt des gesamten Klassendiagramms der Anwendung GeometricObjects. Hier klicken, um das Bild zu vergrößern Abbildung 15.25 Ein typisches Klassendiagramm Wie Sie anhand der Abbildung vermutlich schon erahnen, können Sie im Klassendesigner anschaulich komplexe Zusammenhänge zwischen den Klassen erkennen und deren Struktur analysieren. Dabei ist ein Klassendiagramm nicht nur auf Klassen beschränkt, wie im ersten Moment vielleicht zu vermuten wäre. Ebenso lassen sich alle anderen Typdefinitionen des .NET Frameworks abbilden, also Strukturen, Delegates, Schnittstellen usw. Änderungen und Ergänzungen, die Sie im Klassendesigner vornehmen, tragen sofort im Programmcode Früchte: Er passt sich den Änderungen im Klassendiagramm an und übernimmt beispielsweise zusätzliche Typdefinitionen. Ändern Sie den Programmcode, werden die Änderungen auch vom Klassendiagramm direkt übernommen. Das hört sich nicht nur gut an, es funktioniert auch ganz prima. Leider können Sie im Designer immer noch keine generische Typen definieren. Im Vergleich zu den Vorgängerversionen Visual Studio 2005/2008 hat sich da bedauerlicherweise nichts geändert. In Abbildung 15.26 sehen Sie den Klassendesigner in der Entwicklungsumgebung von Visual Studio 2010. In erster Linie werden wir es während der Klassenmodellierung mit drei Fenstern zu haben: mit der Toolbox, in der uns alle Elemente angeboten werden, die wir mit Drag&Drop in den Designer ziehen können mit dem Klassendiagramm, in dem alle am Designprozess beteiligten Typen visualisiert dargestellt sind mit dem Fenster der Klassendetails, mit denen die Member eines Typs analysiert, geändert oder hinzugefügt werden können Hier klicken, um das Bild zu vergrößern Abbildung 15.26 Entwicklungsumgebung des Klassendesigners ### 15.6.2 Hinzufügen und Ansicht von Klassendiagrammen Ein Klassendiagramm ist die Sicht auf die Typstruktur des Programmcodes. Klassendiagramme sind zwar Teil eines Projekts, müssen aber ausdrücklich hinzugefügt werden. Öffnen Sie dazu das Kontextmenü des Projekts im Projektmappen-Explorer, und wählen Sie Klassendiagramm anzeigen. Sie kommen auch über den Menüpunkt Hinzufügen • Neues Element... zum Ziel. Dem Projekt wird eine Datei mit der Endung .cd hinzugefügt. Handelt es sich um die erste Klassenansicht im Projekt, lautet der Bezeichner der Datei standardmäßig ClassDiagram1.cd. Im Designbereich von Visual Studio 2010 sehen Sie anschließend das Klassendiagramm mit allen Typen, die bis zu diesem Zeitpunkt im Projekt mittels Programmcode definiert worden sind. Bei einem zuvor angelegten Konsolenprojekt ist das nur die Klasse Program. Die .cd-Datei ist eine XML-Datei, die nicht nur die einzelnen Typen, sondern auch deren Eigenschaften, Methoden usw. samt deren Parametern exakt beschreibt, die im Klassendiagramm dargestellt werden. Die in einem Klassendiagramm visualisierten Typen können Sie sich ganz nach Wunsch mehr oder weniger detailliert anzeigen lassen. Wenn Sie nur an den Beziehungen zwischen den Typen interessiert sind, benötigen Sie keine weiteren Memberangaben, die in diesem Moment nur überflüssig wären. Sie können die gewünschte Ansicht (mit bzw. ohne Memberliste) einstellen, indem Sie im Designer auf den Doppelpfeil klicken, der links oben im Typrahmen zu sehen ist. Möchten Sie die Klassenmitglieder sehen, haben Sie drei Alternativen: nur die Bezeichner die Bezeichner einschließlich der Typangabe die Bezeichner einschließlich der kompletten Signatur Die Umschaltung erfolgt in der Symbolleiste des Klassendesigners (siehe Abbildung 15.27). Hier klicken, um das Bild zu vergrößern Abbildung 15.27 Symbolleiste des Klassendesigners ### 15.6.3 Die Toolbox des Klassendesigners In der Toolbox werden ganz im Sinne des Klassendesigners Elemente angeboten, die Sie mittels Drag&Drop in den Designbereich ziehen können. Dazu zählen nicht nur Klassen, Strukturen, Delegates und Enumerationen, sondern auch Vererbungs- und Zuordnungslinien. Hier klicken, um das Bild zu vergrößern Abbildung 15.28 Toolbox des Klassendesigners ### 15.6.4 Das Fenster »Klassendetails« Für die im Klassendiagramm aktuell markierte Klasse werden die Klassenmitglieder im Fenster Klassendetails unterhalb des Klassendiagramms angezeigt. Sollte bei Ihnen dieses Fenster nicht zu sehen sein, können Sie es über Ansicht • Weitere Fenster öffnen. Dieses Fenster erlaubt das Hinzufügen und Editieren folgender Klassenmitglieder: Methoden Eigenschaften Felder Ereignisse Das Fenster hat zudem eine linksbündige Symbolleiste mit fünf Schaltflächen. Die unteren vier dienen zur Navigation innerhalb der Liste. Mit der oberen können Sie alle denkbaren Mitgliedstypen hinzufügen, einschließlich der Angabe von Typ und Zugriffsmodifizierer. Die Spalte Zusammenfassung unterstützt das <summary>-Tag der XML-Dokumentation. Die rechte Spalte, Ausblenden, hat keinen Einfluss auf die Klassendefinition und wirkt sich nur auf die Anzeige des betreffenden Members im Klassendiagramm aus. Jeder Methodeneintrag ist mit einem Knoten versehen. Wenn Sie diesen öffnen, können Sie für die entsprechende Methode alle notwendigen Parameter definieren. Geben Sie den Parameternamen an, tragen Sie den gewünschten Datentyp ein, und wählen Sie – falls erforderlich – einen Parametermodifizierer aus der Liste der Spalte Modifizierer aus. Hier klicken, um das Bild zu vergrößern Abbildung 15.29 Fenster »Klassendetails« Vielleicht fällt Ihnen auf, dass die Modifizierer, die im Zusammenhang mit der Vererbung stehen, nicht zur Auswahl anstehen: abstract, override, virtual, sealed. Tatsächlich können diese nur im Eigenschaftsfenster der ausgewählten Methode eingestellt werden. Das Eigenschaftsfenster sollten wir uns noch etwas genauer ansehen, denn hier bieten sich noch weitere Optionen an, die nicht nur die Vererbungsmodifizierer betreffen. Hier klicken, um das Bild zu vergrößern Abbildung 15.30 Eigenschaftsfenster einer Methode im Klassendesigner

Tabelle 15.7 Editierbare Eigenschaften einer Methode im Eigenschaftsfenster

Eigenschaft | Beschreibung
Benutzerdefinierte Attribute | Der Name ist ein wenig irreführend. Tatsächlich können Sie hier alle Attribute angeben, die mit der Methode verknüpft werden sollen.
Hinweise | Gibt den Inhalt des <remarks>-Tags der XML-Dokumentation an.
Name | Der Bezeichner des Members
Neu | Die Einstellung True gibt an, dass dieses Member ein geerbtes Member verbirgt.
Rückgabewerte | Gibt den Inhalt des <returns>-Tags der XML-Dokumentation an.
Statisch | Mit der Einstellung True wird dieses Member zu einem statischen.
Typ | Gibt den Typ des Members an.
Vererbungsmodifizierer | Hier geben Sie an, welcher Modifizierer, der im Zusammenhang mit der Vererbung steht, der Signatur hinzugefügt werden soll.
Zugriff | Gibt den Zugriffsmodifizierer an.
Zusammenfassung | Gibt den Inhalt des <summary>-Tags der XML-Dokumentation an.
Das Hinzufügen der anderen Mitglieder (Konstruktoren, Eigenschaften etc.) unterscheidet sich nicht wesentlich von dem Hinzufügen einer Methode. Daher erübrigt es sich an dieser Stelle, darauf im Detail einzugehen. Auch für sie gilt, dass im Eigenschaftsfenster einige Optionen angeboten werden, die Sie im Fenster Klassendetails vermissen. ### 15.6.5 Klassendiagramme als Bilder exportieren Der Klassendesigner bietet Ihnen an, ein Klassendiagramm als Bild in verschiedenen Bildformaten zu exportieren. Damit wird Ihnen neben den entwicklungstechnischen Fähigkeiten des Klassendesigners ermöglicht, Dokumentationen anschaulich um die Darstellung der Struktur einer Klassenhierarchie zu ergänzen oder das Bild in eine Präsentation (wie zum Beispiel mit MS PowerPoint) zu integrieren. Zu den angebotenen Formaten zählen unter anderem auch BMP, GIF und JPEG.