UML-Klassendiagramme: Richtlinien

In Visual Studio Ultimate können Sie ein UML-Klassendiagramm verwenden, um Datentypen und ihre Beziehungen getrennt von ihrer Implementierung zu beschreiben. Das Diagramm wird verwendet, um die Konzentration auf die logischen Aspekte der Klassen zu leiten, anstatt auf ihre Implementierung.

Um ein UML-Klassendiagramm zu erstellen, wählen Sie im Menü Architektur die Option Neues Diagramm aus.

Hinweis

In diesem Thema geht es um UML-Klassendiagramme.Es gibt noch eine andere Art von Klassendiagramm, das erstellt und verwendet wird, um Programmcode visuell darzustellen.Weitere Informationen finden Sie unter Entwerfen und Anzeigen von Klassen und Typen.

In diesem Thema

Verwenden von UML-Klassendiagrammen

Grundlegende Schritte zum Zeichnen von Klassendiagrammen

Verwenden von Klassen, Schnittstellen und Enumerationen

Attribute und Vorgänge

Zeichnen und Verwenden von Zuordnungen

Vererbung

Vorlagentypen

Definieren von Namespaces mit Paketen

Generieren von Code aus UML-Klassendiagrammen

Verwenden von UML-Klassendiagrammen

Sie können ein UML-Klassendiagramm für viele verschiedene Zwecke verwenden:

  • Zum Bereitstellen einer von der Implementierung unabhängigen Beschreibung der Typen, die in einem System verwendet und zwischen Komponenten übergeben werden.

    Der Typ "Meal Order" kann z. B. in .NET-Code auf Geschäftsebene, in XML auf den Schnittstellen zwischen Komponenten, in SQL in der Datenbank und in HTML auf der Benutzeroberfläche implementiert werden. Obwohl diese Implementierungen sich in ihren Details unterscheiden, ist die Beziehung zwischen "Meal Order" und anderen Typen wie "Menu" und "Payment" immer gleich. Das UML-Klassendiagramm macht es möglich, diese Beziehungen getrennt von den Implementierungen darzustellen.

  • Zum Verdeutlichen des Glossars mit den Begriffen, die für die Kommunikation zwischen der Anwendung und ihren Benutzern und in Beschreibungen der Benutzeranforderungen verwendet werden. Siehe Modellieren von Benutzeranforderungen.

    Nehmen wir z. B. die Benutzertextabschnitte, Anwendungsfälle oder anderen Anforderungsbeschreibungen einer Restaurantanwendung. Diese Beschreibungen enthalten zum Beispiel Begriffe wie Menu (Speisekarte), Order (Bestellung), Meal (Gericht), Price (Preis), Payment (Bezahlung) usw. Sie können ein UML-Klassendiagramm zeichnen, das die Beziehungen zwischen diesen Begriffen definiert. Auf diese Weise wird das Risiko von Inkonsistenzen in den Anforderungsbeschreibungen, in der Benutzeroberfläche und in den Hilfedokumenten reduziert.

Beziehung zu anderen Diagrammen

Ein UML-Klassendiagramm wird normalerweise zusammen mit anderen Modellierungsdiagrammen gezeichnet, um Beschreibungen der verwendeten Typen bereitzustellen. Die physische Darstellung der Typen wird in keinem der Diagramme wiedergegeben.

Gezeichnetes Diagramm:

UML-Klassendiagramm zum Beschreiben von:

Aktivitätsdiagramm

Typ der Daten, der über einen Objektknoten übergeben wird.

Typen von Eingabe- und Ausgabepins und Aktivitätsparameterknoten.

Siehe UML-Aktivitätsdiagramme: Richtlinien.

Sequenzdiagramm

Typen von Parametern und Rückgabewerte von Meldungen.

Typen der Lebenslinien. Die Klasse einer Lebenslinie sollte Vorgänge für alle Meldungen enthalten, die empfangen werden können.

Siehe UML-Sequenzdiagramme: Richtlinien.

Komponentendiagramm

Komponentenschnittstellen, unter denen die Vorgänge aufgeführt sind.

Siehe UML-Komponentendiagramme: Richtlinien.

Anwendungsfalldiagramm

Typen, die in Beschreibungen der Ziele und Schritte eines Anwendungsfalls erwähnt werden.

Siehe UML-Anwendungsfalldiagramme: Richtlinien.

Grundlegende Schritte zum Zeichnen von Klassendiagrammen

Referenzinformationen zu den Elementen in UML-Klassendiagrammen finden Sie unter UML-Klassendiagramme: Referenz.

Hinweis

Eine ausführliche Beschreibung der Schritte zum Erstellen der Modellierungsdiagramme finden Sie unter Bearbeiten von UML-Modellen und -Diagrammen.

So erstellen Sie ein UML-Klassendiagramm

  1. Wählen Sie im Menü Architektur die Option Neues Diagramm aus.

  2. Wählen Sie unter Vorlagen die Option UML-Klassendiagramm aus.

  3. Benennen Sie das Diagramm.

  4. Wählen Sie unter Zu Modellierungsprojekt hinzufügen ein in der Projektmappe vorhandenes Modellierungsprojekt aus, oder wählen Sie Neues Modellierungsprojekt erstellen aus, und wählen Sie dann OK aus.

    Ein neues Klassendiagramm wird mit dem Werkzeugkasten UML-Klassendiagramm angezeigt. Die Toolbox enthält die erforderlichen Elemente und Beziehungen.

So zeichnen Sie ein UML-Klassendiagramm

  1. Um einen Typ zu erstellen, wählen Sie in der Toolbox das Tool Klasse, Schnittstelle oder Enumeration aus, und klicken Sie dann auf einen leeren Teil des Diagramms. (Wenn die Toolbox nicht angezeigt wird, drücken Sie STRG+ALT+X.)

    Sie können Typen auch auf Grundlage von Typen im Code erstellen. Sie können Typen aus dem Projektmappen-Explorer oder aus dem Architektur-Explorer ziehen, oder Abhängigkeitsdiagramme in das Diagramm ziehen. Siehe Erstellen von UML-Klassendiagrammen aus Code.

  2. Um den Typen Attribute oder Vorgänge oder einer Enumeration Literale hinzuzufügen, wählen Sie im Typ die Überschrift Attribute, Vorgänge oder Literale aus, und drücken Sie die EINGABETASTE.

    Sie können eine Signatur schreiben, z. B. f(x:Boolean):Integer. Siehe Attribute und Vorgänge.

    Um schnell mehrere Elemente hinzuzufügen, drücken Sie am Ende jedes Elements zweimal die EINGABETASTE. Sie können in der Liste mit den PFEILTASTEN nach oben und unten navigieren.

  3. Um einen Typ zu erweitern oder zu reduzieren, wählen Sie oben links das Chevronsymbol aus. Außerdem können Sie den Abschnitt Attribute und Vorgänge einer Klasse oder Schnittstelle erweitern oder reduzieren.

  4. Um zwischen den Typen Zuordnungs-, Vererbungs- oder Abhängigkeitslinks zu zeichnen, klicken Sie auf das entsprechende Tool, auf den Quelltyp und dann auf den Zieltyp.

  5. Um Typen in einem Paket zu erstellen, erstellen Sie mit dem Tool Paket ein Paket und erstellen im Paket dann neue Typen und Pakete. Sie können auch den Kopierbefehl verwenden, um Typen zu kopieren und in ein Paket einzufügen.

  6. Jedes Diagramm ist eine Ansicht eines Modells, das im gleichen Projekt auch von anderen Diagrammen genutzt wird. Um eine Strukturansicht des vollständigen Modells anzuzeigen, wählen Sie Anzeigen, Weitere Fenster, UML-Modell-Explorer aus.

Verwenden von Klassen, Schnittstellen und Enumerationen

In der Toolbox sind drei Standardarten von Klassifizierern verfügbar. Diese werden im gesamten Dokument als Typen bezeichnet.

Eine Klasse, eine Enumeration und eine Schnittstelle

  • Verwenden Sie in den meisten Fällen Klassen (1), um Daten oder Objekttypen darzustellen.

  • Verwenden Sie Schnittstellen (2) in einem Kontext, in dem Sie zwischen reinen Schnittstellen und konkreten Klassen unterscheiden müssen, die über interne Implementierungen verfügen. Dieser Unterschied ist nützlich, wenn der Zweck des Diagramms darin besteht, eine Softwareimplementierung zu beschreiben. Er ist weniger nützlich, wenn Sie passive Daten modellieren oder wenn Sie Konzepte definieren, die zum Beschreiben der Benutzeranforderungen verwendet werden.

  • Verwenden Sie eine Enumeration (3), um einen Typ darzustellen, der über eine begrenzte Anzahl von Literalwerten verfügt, zum Beispiel Stop und Go.

    • Fügen Sie die Literalwerte der Enumeration hinzu. Geben Sie jedem Wert einen anderen Namen.

    • Sie können bei Bedarf auch einen numerischen Wert für jeden Literalwert angeben. Öffnen Sie das Kontextmenü für das Literal in der Enumeration, wählen Sie Eigenschaften aus, und geben Sie dann im Fenster Eigenschaften eine Zahl in das Feld Wert ein.

Geben Sie jedem Typ einen eindeutigen Namen.

Abrufen von Typen aus anderen Diagrammen

Sie können festlegen, dass Typen aus einem anderen Diagramm in Ihrem UML-Klassendiagramm angezeigt werden.

Anderer Diagrammtyp

Abrufen von Typen aus dem anderen Diagramm

UML-Klassendiagramm

Sie können festlegen, dass eine Klasse in mehr als einem UML-Klassendiagramm angezeigt wird. Wenn Sie eine Klasse auf einem Diagramm erstellt haben, ziehen Sie die Klasse aus dem UML-Modell-Explorer auf das andere Diagramm.

Dies ist nützlich, wenn Sie erreichen möchten, dass der Schwerpunkt in jedem Diagramm auf einer bestimmten Gruppe von Beziehungen liegt.

Beispielsweise können Sie die Zuordnungen zwischen einer Essensbestellung (Meal Order) und der Speisekarte (Menu) des Restaurants in einem Diagramm und die Zuordnungen zwischen Essensbestellung und Bezahlung (Payment) in einem anderen Diagramm anzeigen.

Komponentendiagramm

Wenn Sie Schnittstellen für die Komponenten in einem Komponentendiagramm definiert haben, können Sie eine Schnittstelle aus dem UML-Modell-Explorer in das Klassendiagramm ziehen. Im Klassendiagramm können Sie die Methoden definieren, die in der Schnittstelle enthalten sind.

Siehe UML-Komponentendiagramme: Richtlinien.

UML-Sequenzdiagramm

Sie können Klassen und Schnittstellen von Lebenslinien aus in einem Sequenzdiagramm erstellen und die Klasse aus dem UML-Modell-Explorer dann in ein UML-Klassendiagramm ziehen. Jede Lebenslinie in einem Sequenzdiagramm stellt eine Instanz eines Objekts, einer Komponente oder eines Akteurs dar.

Um eine Klasse aus einer Lebenslinie zu erstellen, öffnen Sie das Kontextmenü für die Lebenslinie, und wählen Sie dann Klasse erstellen oder Schnittstelle erstellen aus. Siehe UML-Sequenzdiagramme: Richtlinien.

Programmcode

Sie können Typen aus dem Code im Modell darstellen. Ziehen Sie Klassen, Schnittstellen oder Enumerationen aus dem Architektur-Explorer oder aus den Abhängigkeitsdiagrammen in ein UML-Klassendiagramm.

Typen, die Sie ziehen, werden im Diagramm angezeigt. Abhängige Typen werden ebenfalls dem Modell hinzugefügt. Wenn ein UML-Typ auf diese Weise erstellt wurde, können Sie darauf doppelklicken, um den Quellcode zu öffnen. Siehe Erstellen von UML-Klassendiagrammen aus Code.

Hinweis

Der Code und das Modell bleiben nicht synchronisiert.Sie können das Diagramm zur Erläuterung von Änderungsvorschlägen aktualisieren, ohne den Code zu beeinflussen.Nachfolgende Änderungen im Code wirken sich nicht automatisch auf das Diagramm aus, sofern Sie die Typen nicht erneut in das Diagramm ziehen.

Attribute und Vorgänge

Ein Attribut (4) ist ein benannter Wert, über den jede Instanz eines Typs verfügen kann. Das Zugreifen auf ein Attribut führt nicht dazu, dass der Zustand der Instanz geändert wird.

Ein Vorgang (5) ist eine Methode oder Funktion, die Instanzen des Typs ausführen kann. Dabei kann ein Wert zurückgegeben werden. Wenn seine isQuery-Eigenschaft den Wert "true" hat, kann er den Zustand der Instanz nicht ändern.

Um einem Typ ein Attribut oder einen Vorgang hinzuzufügen, öffnen Sie das Kontextmenü für den Typ, wählen Sie Hinzufügen aus, und wählen Sie dann Attribut oder Vorgang aus.

Um die Eigenschaften anzuzeigen, öffnen Sie das Kontextmenü für das Attribut oder den Vorgang, und wählen Sie dann Eigenschaften aus. Die Eigenschaften werden im Eigenschaftenfenster angezeigt.

Um die Eigenschaften der Parameter eines Vorgangs anzuzeigen, wählen Sie in der Parameters-Eigenschaft […] aus. Ein neues Eigenschaftendialogfeld wird angezeigt.

Ausführliche Informationen zu allen Eigenschaften, die Sie festlegen können, finden Sie unter den folgenden Themen:

Typen von Attributen und Vorgängen

Jeder Typ eines Attributs oder eines Vorgangs und jeder Parametertyp kann einen der folgenden Werte aufweisen:

  • (Keiner) – Sie können die Angabe eines Typs in der Signatur vermeiden, indem Sie den vorangestellten Doppelpunkt (:) weglassen.

  • Einen der standardmäßigen primitiven Typen: Boolesch, Ganze Zahl, Zeichenfolge.

  • Einen Typ, der im Modell definiert ist.

  • Ein parametrisierter Wert eines Vorlagentyps der Form "Template<Parameter>". Weitere Informationen finden Sie unter Vorlagentypen.

Sie können auch den Namen eines Typs schreiben, den Sie im Modell noch nicht definiert haben. Der Name wird unter Nicht spezifizierte Typen im UML-Modell-Explorer aufgeführt.

Hinweis

Wenn Sie anschließend im Modell eine Klasse oder Schnittstelle mit diesem Namen definieren, verweisen ältere Attribute und Operationen weiterhin auf das Element in "Nicht spezifizierte Typen".Wenn Sie diese älteren Komponenten ändern möchten, damit sie auf die neue Klasse verweisen, müssen Sie für jedes Attribut bzw. jede Operation den Typ zurücksetzen und die neue Klasse im Dropdownmenü auswählen.

Mehrere Typen

Sie können eine Multiplizität für beliebige Attribute, Vorgänge oder Parametertypen festlegen.

Die zulässigen Werte lauten wie folgt:

Multiplizität

Das Attribut, der Parameter oder der Rückgabewert enthält Folgendes:

[1]

Ein Wert des angegebenen Typs. Dies ist die Standardeinstellung.

[0..1]

Null oder ein Wert des angegebenen Typs.

[*]

Eine Auflistung einer beliebigen Anzahl von Instanzen des angegebenen Typs.

[1..*]

Eine Auflistung von mindestens einer Instanz des angegebenen Typs.

[n..m]

Eine Auflistung von zwischen n und m Instanzen des angegebenen Typs.

Wenn die Multiplizität mehr als 1 beträgt, können Sie auch diese Eigenschaften festlegen:

  • IsOrdered – Bei "true" hat die Auflistung eine definierte Reihenfolge.

  • IsUnique – Bei "true" enthält die Auflistung keine doppelten Werte.

Sichtbarkeit

Die Sichtbarkeit gibt an, ob auf das Attribut oder den Vorgang von außerhalb der Klassendefinition aus zugegriffen werden kann. Die zulässigen Werte lauten wie folgt:

Name

Kurzform

Bedeutung

Public

+

Zugriff ist von allen anderen Typen möglich.

Private

-

Zugriff ist nur auf die interne Definition dieses Typs möglich.

Package

~

Der Zugriff ist nur innerhalb des Pakets, das diesen Typ enthält, und in allen Paketen möglich, die diesen explizit importieren. Weitere Informationen finden Sie unter Definieren von Namespaces und Paketen.

Protected

#

Der Zugriff ist nur auf diesen Typ und die Typen möglich, die davon erben. Weitere Informationen finden Sie unter Vererbung.

Festlegen der Signatur eines Attributs oder eines Vorgangs

Die Signatur eines Attributs oder eines Vorgangs ist eine Auflistung von Eigenschaften, die die Sichtbarkeit, den Namen, die Parameter (für Vorgänge) und den Typ enthält.

Sie können eine Signatur direkt in das Diagramm schreiben. Klicken Sie zum Auswählen auf das Attribut oder den Vorgang, und klicken Sie dann noch einmal darauf.

Schreiben Sie die Signatur wie folgt:

visibility attribute-name : Type

- oder -

visibility operation-name (parameter1 : Type1, ...) : Type

Beispiel:

+ AddItem (item : MenuItem, quantity : Integer) : Boolean

Verwenden Sie die Kurzform der Sichtbarkeit. Der Standardwert ist + (öffentlich).

Bei jedem Typ kann es sich um im Modell definierte Typen, Standardtypen wie "Ganze Zahl" oder "Zeichenfolge" oder den Namen eines neuen Typs handeln, den Sie noch nicht definiert haben.

Hinweis

Wenn Sie einen Namen ohne einen Typ in eine Parameterliste schreiben, wird anstelle seines Typs der Name des Parameters angegeben.In diesem Beispiel werden "MenuItem" und "Integer" zu den Namen von zwei Parametern mit nicht angegebenen Typen:

AddItem(MenuItem, Integer) /* parameter names, not types! */

Um die Multiplizität eines Typs in einer Signatur festzulegen, schreiben Sie die Multiplizität in eckigen Klammern nach dem Typnamen, z. B.:

+ AddItems (items : MenuItem [1..*])
+ MenuContent : MenuItem [*]

Falls das Attribut oder der Vorgang statisch ist, wird sein Name in der Signatur unterstrichen angezeigt. Wenn dieser abstrakt ist, wird der Name kursiv angezeigt.

Sie können die Eigenschaften Is Static und Is Abstract jedoch nur im Eigenschaftenfenster festlegen.

Vollständige Signatur

Wenn Sie die Signatur eines Attributs oder Vorgangs bearbeiten, werden ggf. einige zusätzliche Eigenschaften am Ende der Zeile und nach jedem Parameter angezeigt. Sie stehen in geschweiften Klammern ({…}). Sie können diese Eigenschaften bearbeiten oder hinzufügen. Beispiel:

+ AddItems (items: MenuItem [1..*] {unique, ordered})
+ GetItems (filter: String) : MenuItem [*] {ordered, query}

Dort stehen die folgenden Eigenschaften zur Auswahl:

In Signatur

Eigenschaft

Bedeutung

unique

Ist eindeutig

Die Auflistung enthält keine doppelten Werte. Gilt für Typen mit einer Multiplizität größer als 1.

ordered

Is Ordered

Die Auflistung ist eine Sequenz. Bei "false" ist kein eindeutiges erstes Element vorhanden. Gilt für Typen mit einer Multiplizität größer als 1.

query

Is Query

Der Vorgang ändert den Zustand seiner Instanz nicht. Gilt nur für Vorgänge.

/

Is Derived

Das Attribut wird aus Werten anderer Attribute oder Zuordnungen berechnet.

"/" steht vor dem Namen eines Attributs. Beispiel:

/TotalPrice: Integer

Normalerweise wird die vollständige Signatur nur im Diagramm angezeigt, während Sie es bearbeiten. Wenn Sie die Bearbeitung beenden, werden die zusätzlichen Eigenschaften ausgeblendet. Falls die vollständige Signatur immer angezeigt werden soll, öffnen Sie das Kontextmenü für den Typ, und wählen Sie dann Vollständige Signatur anzeigen aus.

Zeichnen und Verwenden von Zuordnungen

Verwenden Sie eine Zuordnung, um eine beliebige Art von Verknüpfung zwischen zwei Elementen darzustellen, und zwar unabhängig davon, wie die Verknüpfung in der Software implementiert ist. Sie können eine Zuordnung z. B. verwenden, um einen Zeiger in C#, eine Beziehung in einer Datenbank oder einen Querverweis von einem Teil einer XML-Datei zu einem anderen darzustellen. Sie kann eine Zuordnung zwischen realen Objekten darstellen, z. B. Erde und Sonne. Die Zuordnung besagt nicht, wie der Link dargestellt wird, sondern nur, dass die Informationen vorhanden sind.

Eigenschaften einer Zuordnung

Nachdem Sie eine Zuordnung erstellt haben, legen Sie die Eigenschaften dafür fest. Öffnen Sie das Kontextmenü für die Zuordnung, und wählen Sie dann Eigenschaften aus.

Zusätzlich zu den Eigenschaften der Zuordnung als Ganzes, verfügt jede Rolle, also jedes Ende der Zuordnung, über einige eigene Eigenschaften. Um diese anzuzeigen, erweitern Sie die Eigenschaften Erste Rolle und Zweite Rolle.

Einige Eigenschaften jeder Rolle sind direkt im Diagramm sichtbar. Dies sind:

  • Der Rollenname. Er wird am entsprechenden Ende der Zuordnung im Diagramm angezeigt. Sie können den Namen entweder im Diagramm oder im Eigenschaftenfenster festlegen.

  • Die Multiplizität, deren Standardwert 1 ist. Diese Eigenschaft wird auch am entsprechenden Ende der Zuordnung im Diagramm angezeigt.

  • Aggregation. Wird an einem Ende des Konnektors in Rautenform angezeigt. Damit können Sie angeben, dass die Aggregierungsrolle Instanzen der anderen besitzt oder enthält.

  • Navigierbar. Wenn nur für eine Rolle "true" gilt, wird ein Pfeil angezeigt, der in die navigierbare Richtung zeigt. Sie können dies nutzen, um die Navigierbarkeit von Links und Datenbankbeziehungen in der Software anzugeben.

Ausführliche Informationen zu diesen und anderen Eigenschaften finden Sie unter Eigenschaften von Zuordnungen in UML-Klassendiagrammen.

Eine gezeichnete Zuordnung weist an einem Ende einen Pfeil auf, der angibt, dass die Zuordnung in dieser Richtung navigierbar ist. Dies ist hilfreich, wenn das Klassendiagramm Softwareklassen darstellt und die Zuordnungen Zeiger oder Verweise darstellen. Wenn Sie jedoch ein Klassendiagramm zum Darstellen von Entitäten und Beziehungen oder Geschäftskonzepten verwenden, ist es weniger wichtig, die Navigierbarkeit darzustellen. In diesem Fall kann es ratsam sein, Zuordnungen ohne Pfeile zu zeichnen. Hierfür legen Sie die Is Navigable-Eigenschaft an beiden Enden der Zuordnung auf True fest. Zur Vereinfachung können Sie das Codebeispiel UML-Domänenmodellierung herunterladen.

Attribute und Zuordnungen

Eine Zuordnung ist eine grafische Darstellung eines Attributs. Anstatt z. B. eine Klasse "Restaurant" mit einem Attribut vom Typ "Menu" zu erstellen, können Sie eine Zuordnung von "Restaurant" zu "Menu" ziehen.

Jeder Attributname wird zu einem Rollennamen. Er wird am entgegengesetzten Ende der Zuordnung des besitzenden Typs angezeigt. Ein Beispiel in der Abbildung ist myMenu.

Normalerweise ist es besser, Attribute nur für Typen zu verwenden, die Sie nicht im Diagramm zeichnen würden, z. B. primitive Typen.

Entsprechende Zuordnung und Attribute

Vererbung

Verwenden Sie das Tool Vererbung, um die folgenden Beziehungen zu erstellen:

  • Eine Verallgemeinerungsbeziehung zwischen einem spezialisierten Typ und einem allgemeinen Typ

    - oder -

  • Eine Realisierungsbeziehung zwischen einer Klasse und einer Schnittstelle, die diese implementiert.

Sie können in Vererbungsbeziehungen keine Schleifen erstellen.

Generalisierung

Generalisierung bedeutet, dass der spezialisierende oder abgeleitete Typ Attribute, Vorgänge und Zuordnungen des allgemeinen Typs oder Basistyps erbt.

Der allgemeine Typ wird am Pfeilspitzenende der Beziehung angezeigt.

Die geerbten Vorgänge und Attribute werden in den spezialisierenden Typen normalerweise nicht angezeigt. Sie können der Vorgangsliste des spezialisierenden Typs jedoch geerbte Vorgänge hinzufügen. Dies ist nützlich, wenn Sie im spezialisierenden Typ einige der Eigenschaften eines Vorgangs überschreiben möchten oder wenn Sie angeben möchten, dass der implementierende Code dies durchführen soll.

So überschreiben Sie die Definition eines Vorgangs in einem spezialisierenden Typ

  1. Klicken Sie auf die Generalisierungsbeziehung.

    Sie wird markiert, und daneben wird ein Aktionstag angezeigt.

  2. Klicken Sie auf das Aktionstag und dann auf Vorgänge überschreiben.

    Das Dialogfeld Vorgänge überschreiben wird angezeigt.

  3. Wählen Sie die Vorgänge aus, die im spezialisierenden Typ angezeigt werden sollen, und klicken Sie dann auf OK.

Die ausgewählten Vorgänge werden jetzt im spezialisierenden Typ angezeigt.

Realisierung

Realisierung bedeutet, dass eine Klasse die Attribute und Vorgänge implementiert, die von der Schnittstelle angegeben werden. Die Schnittstelle befindet sich am Pfeilende des Konnektors.

Wenn Sie einen Realisierungskonnektor erstellen, werden die Vorgänge der Schnittstelle automatisch in der realisierenden Klasse repliziert. Wenn Sie einer Schnittstelle neue Vorgänge hinzufügen, werden diese in den realisierenden Klassen repliziert.

Nachdem Sie eine Realisierungsbeziehung erstellt haben, können Sie diese in eine Lollipopnotation konvertieren. Klicken Sie mit der rechten Maustaste auf die Beziehung, und wählen Sie Als Lollipop anzeigen.

Auf diese Weise können Sie die von einer Klasse implementierten Schnittstellen anzeigen, ohne dass die Klassendiagramme zu viele Realisierungslinks enthalten. Außerdem können Sie die Schnittstelle und die Klassen, die diese realisieren, in separaten Diagrammen anzeigen.

Realisierung mit Connector und Lollipop

Vorlagentypen

Sie können einen generischen Typ oder Vorlagentyp definieren, der von anderen Typen oder Werten parametrisiert werden kann.

Sie können z. B. ein generisches Wörterbuch erstellen, das mithilfe von Schlüssel- und Werttypen parametrisiert wird:

Vorlagenklasse mit zwei Parametern

So erstellen Sie einen Vorlagentyp

  1. Erstellen Sie eine Klasse oder eine Schnittstelle. Dies wird zu Ihrem Vorlagentyp. Benennen Sie diesen entsprechend, z. B. Dictionary.

  2. Öffnen Sie das Kontextmenü für den neuen Typ, und wählen Sie dann Eigenschaften aus.

  3. Klicken Sie im Eigenschaftenfenster im Feld Vorlagenparameter auf […].

    Das Dialogfeld Auflistungs-Editor für Vorlagenparameter wird angezeigt.

  4. Wählen Sie Hinzufügen aus.

  5. Legen Sie die Namenseigenschaft auf einen Parameternamen für den Vorlagentyp fest, z. B. Key.

  6. Legen Sie Parameterart fest. Der Standardwert ist Klasse.

  7. Wenn der Parameter nur abgeleitete Klassen einer bestimmten Basisklasse akzeptieren soll, legen Sie Eingeschränkter Wert auf die gewünschte Basisklasse fest.

  8. Fügen Sie so viele Parameter hinzu, wie Sie benötigen, und wählen Sie dann OK aus.

  9. Fügen Sie dem Vorlagentyp Attribute und Vorgänge hinzu, wie Sie dies auch bei anderen Klassen tun.

    Sie können Parameter vom Typ Klasse, Schnittstelle oder Enumeration in der Definition von Attributen und Vorgängen verwenden. Indem Sie beispielsweise die Parameterklassen Key und Value verwenden, können Sie den Vorgang in Dictionary definieren:

    Get(k : Key) : Value

    Sie können einen Parameter vom Typ Ganze Zahl als Grenze einer Multiplizität verwenden. Beispielsweise kann ein Parameter mit einer ganzen Zahl und einem Maximalwert verwendet werden, um die Multiplizität eines Attributs als [0..max] zu definieren.

Wenn Sie Vorlagentypen erstellt haben, können Sie diese zum Definieren von Vorlagenbindungen verwenden:

Aus Wörterbuchvorlage gebundene Klasse

So verwenden Sie einen Vorlagentyp

  1. Erstellen Sie einen neuen Typ, z. B. AddressTable.

  2. Öffnen Sie das Kontextmenü für den neuen Typ, und wählen Sie dann Eigenschaften aus.

  3. Wählen Sie in der Template Binding-Eigenschaft (Vorlagenbindung) in der Dropdownliste den Vorlagentyp aus, zum Beispiel Dictionary.

  4. Erweitern Sie die Template Binding-Eigenschaft.

    Für jeden Parameter des Vorlagentyps wird eine Zeile angezeigt.

  5. Legen Sie jeden Parameter auf einen geeigneten Wert fest. Legen Sie den Key-Parameter z. B. auf eine Klasse mit dem Namen Name fest.

Pakete

Sie können Pakete in einem UML-Klassendiagramm anzeigen. Ein Paket ist ein Container für andere Modellelemente. Sie können in einem Paket beliebige Elemente erstellen. Im Diagramm werden die im Paket enthaltenen Elemente neu angeordnet, wenn Sie das Paket verschieben.

Sie können das Steuerelement zum Reduzieren/Erweitern verwenden, um den Inhalt des Pakets aus- oder einzublenden.

Siehe Definieren von Paketen und Namespaces.

Generieren von Code aus UML-Klassendiagrammen

Generieren Sie C#-Code oder passen Sie die Vorlagen für Codegenerierung an, um die Implementierung der Klassen in einem UML-Klassendiagramm zu starten. So starten Sie das Generieren von Code mithilfe der bereitgestellten C#-Vorlagen:

  • Öffnen Sie das Kontextmenü für das Diagramm oder ein Element, wählen Sie Code generieren aus, und legen Sie dann die erforderlichen Eigenschaften fest.

    Weitere Informationen zum Festlegen dieser Eigenschaften und zum Anpassen der bereitgestellten Vorlagen finden Sie unter Generieren von Code aus UML-Klassendiagrammen.

Siehe auch

Referenz

UML-Sequenzdiagramme: Referenz

Konzepte

Bearbeiten von UML-Modellen und -Diagrammen

UML-Klassendiagramme: Referenz

Modellieren von Benutzeranforderungen

UML-Komponentendiagramme: Referenz

UML-Anwendungsfalldiagramme: Referenz

UML-Komponentendiagramme: Referenz