Verallgemeinerungen in UML 2

Es ist natürlich, Objekte in Kategorien zu klassifizieren und Kategorien in Unterkategorien zu organisieren. Wenn Sie nach einem Ort suchen zu leben, findet man sich eine Wohneinheit als ein Haus zu kategorisieren, Wohnung, Reihenhaus, Eigentumswohnung, Villa, und so weiter. Häuser können wiederum, werden weiter durch Stile organisiert wie Ranch, Split-Level, im Kolonialstil, und saltbox. UML bietet Ihnen Notation diese Arten von Klassifikationen zu erfassen - auch als Verallgemeinerung und Spezialisierung bekannt - und von ihnen Gebrauch als Modellierer und Programmierer zu machen.

Einige objektorientierte Entwickler werden sich große Mühe, ein wenig Arbeit zu sparen. Wenn sie einmal etwas modellieren können und wiederverwenden, sie sind interessiert. Wenn sie nur einmal eine Methode (der Programmcode für eine Operation) für eine Klasse schreiben kann und es viele Male verwenden, dann melden Sie sie für eine höhere Produktivität auf. Wenn Sie sich Zeit sparen wollen, indem Attribute und Operationen einmal spezifiziert und dann viele Male wiederverwendet, lesen Sie weiter.

Wie Sie Klassen definieren, können Sie feststellen, dass einige Klassen die gleichen Attribute oder die gleichen Operationen haben. Wenn dies der Fall ist, können Sie diese gemeinsamen Merkmale platzieren (Attribute, Operationen, und so weiter) in einer allgemeineren Klasse genannt Super. Die Klassen, die die gemeinsame Merkmale aufweisen, sind bekannt als Subklassen von der übergeordneten Klasse. Zum Beispiel kann die Länge des aufgezeichneten Materials auf einem Videoband, Audioband, CD, oder Film-Film ist ein Attribut von allen vier kindsof Medien aufgezeichnet. Diese Klassen können andere Attribute teilen auch, wie ihre physikalischen Abmessungen und das Datum jeder wurde verwendet, um eine Aufnahme zu machen. In diesem Fall ist die Super wäre RecordedMedia, würden die Unterklassen Video- und Audiokassetten, Compactdisc und MovieFilm, und einige gemeinsam genutzte Attribute könnten recordedLength und totalLength sein.

Dieser Prozess der Suche nach ähnlichen Attributen oder Operationen in Klassen ist bekannt als Verallgemeinerung. Zum Beispiel verallgemeinern Sie das Attribut RecordLength in eine generische Klasse namens RecordedMedia. Der Prozess für eine Verallgemeinerung in UML zeigt ist einfach:

1. Identifizieren Sie die Unterklassen.

Suchen Sie Klassen, die die gleichen Attribute und / oder Operationen haben. Diese Klassen sind Unterklassen.

2. Erstellen Sie eine übergeordnete Klasse.

Geben Sie eine übergeordnete Klasse, die gemeinsamen Attribute und / oder Operationen der Unterklassen zu halten. Geben Sie der übergeordneten Klasse einen Namen, der alle Unterklassen kategorisiert. Platzieren der übergeordneten Klasse über den Unterklassen im Diagramm machen es leichter zu lesen, ist aber nicht erforderlich.)

3. Fügen gemeinsame Merkmale auf der übergeordneten Klasse.

Entfernen Sie die gemeinsame Attribute und Operationen von den Unterklassen und legen Sie sie (einmal) in der Oberklasse.

4. Zeichnen Sie eine Vererbungsbeziehung.

Sie ziehen eine Verallgemeinerung Linie von jeder Unterklasse der übergeordneten Klasse. In der UML wird die Verallgemeinerung Linie als eine durchgezogene Linie mit einem hohlen Pfeilspitze am Oberende vertreten. In der UML wird eine Linie mit dem hohlen Pfeilspitze, die eine Unterklasse zu einer übergeordneten Klasse verbindet, ist als Verallgemeinerung Beziehung bekannt.

Nachdem Sie eine übergeordnete Klasse mit den gemeinsamen Funktionen wie Attribute und Operationen zu erstellen, die Unterklassen erben diese Funktionen von der übergeordneten Klasse. Auf diese Weise müssen nur die gemeinsamen Merkmale einmal in der übergeordneten Klasse, anstatt viele Male in jeder der Unterklassen zu schreiben.

Man kann sagen, ob Sie mit dem Blick auf die Sprache eine Verallgemeinerung haben Sie (oder andere) verwenden, um die Beziehung zwischen den Klassen zu beschreiben. Beachten Sie, dass bei der Beschreibung der aufgezeichneten Medien und ihre verschiedenen Typen wie Videoband zuvor in diesem Abschnitt, der Ausdruck "vier Kindsof Medien aufgezeichnet" erschien. Wenn Sie sich mit Phrasen wie "Art" oder finden "Art", dann sind die Chancen Sie eine Verallgemeinerung auf Ihren Händen haben.

Sagen Sie, dass einer Ihrer Kunden die Verfolgung von Materialien in einem Archiv betroffen ist. Dieser Client hat sich eine unterschiedliche Arten von aufgenommenen Medien wie Videokassetten und Tonbänder. Als Modellierer, müssen Sie die Unterschiede zwischen diesen Medien sowie ihre Ähnlichkeiten zu erfassen. Das Diagramm in Abbildung 1 zeigt die Anfänge der mehreren Verallgemeinerungen, in eine geordnete Vererbungshierarchie.


Abbildung 1: Einfache Vererbungshierarchie.

Entwickler verwenden den Begriff Verallgemeinerung oder Erbschaft zu dem gleichen Konzept der Wiederverwendung von gemeinsamen Attributen und Operationen zu verweisen, die Sie in einer übergeordneten Klasse zeigen und in Subklassen wiederzuverwenden. Generalisierung bezieht sich auf das Konzept von Besonderheiten zu verallgemeinern (die Unterklassen) an die Generika (die übergeordnete Klasse). Vererbung bezieht sich auf die Wirkung der Verallgemeinerung auf die Subklassen.

Wenn Sie sehen, ein Verallgemeinerung Beziehung zwischen Klassen, ist seine Bedeutung sehr verschieden von der eines Verband Beziehung zwischen den Klassen. Ein Verein ist letztlich eine Beziehung unter vielen Objekte - einige Instanzen einer Klasse haben eine Beziehung (link) mit Instanzen der anderen Klasse. In einer Verallgemeinerung Beziehung zwischen Klassen, die Beziehung ist wirklich über die Klassen. Das Beste, was Sie sagen kann, ist, dass ein Objekt aus einer Unterklasse erstellt wird, enthält alle Funktionen der Unterklasse und der Oberklasse.

Sie haben nur ein Objekt aus einer Klasse in einer Vererbungsbeziehung. Auch wenn Sie zwei Klassen zeigen, die Unterklasse und der Oberklasse, nur Sie haben ein Objekt, das erstellt wird. Sie können auch wegen der Vererbung eine Aufgabe der RecordedMedia Klasse zu sein von dem Videoband Klasse eines Objekts denken. Abbildung 2 zeigt ein Objekt aus dem Videoband-Klasse erstellt mit all seinen Attributen. (Die Instanz einer Klasse wird als Objekt Symbol dargestellt.) Sie haben noch zwei verschiedene Objekte (eine für RecordedMedia und eine für Videoband), nur ein Objekt. Wenn das Objekt vtu83-1023 erstellt wurde, werden alle Werte 'seine Attribute gesetzt wurden. Die Aufzeichnung auf dem Band beträgt 57 Minuten. Die Gesamtlänge des physischen Bandes beträgt 60 Minuten. Das Band ist ein Umatic Videocassette mit einer Höhe von 10 Zoll, einer Breite von 7 Zoll und einer Tiefe von 1,5 Zoll. Die Aufnahme ist analog, und ein Protokoll der Bandinhalt wird auf dem Band befestigt ist, um die archivist zu referenzieren.


Figur 2: Eine Instanz alle zeigen vererbten Attribute.

Sie haben nur eine Instanz von einer Unterklasse und der übergeordneten Klasse definiert. Die Unterklasse und der Oberklasse kann einen Konstruktoroperation haben (die Instanz zu erstellen) und eine destructor Betrieb (die Instanz zu zerstören). Wenn Ihre Software läuft, und Sie erstellen eine Instanz einer Unterklasse wird der Konstruktor der übergeordneten Klasse zuerst von den Konstruktor der Unterklasse ausgeführt, gefolgt. Wenn es darum geht, die Instanz, die Sie erstellt haben, die destructor der Unterklasse zu eliminieren wird zuerst durch die destructor der Oberklasse, gefolgt genannt. Wenn die Dinge komplizierter sind, weil Sie Subklassen von Unterklassen haben, nur nicht vergessen: Konstrukteurs sind von der Spitze der Vererbungshierarchie auf die Bottom-Destruktoren aufgerufen werden, um von der niedrigsten Unterklasse genannt bis zum höchsten übergeordneten Klasse.

Menü