Video: Klassendiagramme mit UML - Theoretische Objektorientierte Konzepte 1 ● Gehe auf SIMPLECLUB.DE/GO 2024
Es ist natürlich, Objekte in Kategorien zu klassifizieren und Kategorien in Unterkategorien zu organisieren. Wenn Sie nach einem Ort zum Leben suchen, finden Sie sich selbst eine Wohneinheit als ein Haus, Wohnung, Stadthaus, Eigentumswohnung, Villa und so weiter kategorisieren. Häuser können wiederum durch Stile wie Ranch, Split-Level, Colonial und Saltbox organisiert werden. UML bietet Ihnen die Notation, diese Klassifizierungstypen - auch als Generalisierung und Spezialisierung bezeichnet - zu erfassen und als Modellierer und Programmierer zu verwenden.
Einige objektorientierte Entwickler werden sich bemühen, ein wenig Arbeit zu sparen. Wenn sie etwas einmal modellieren und wiederverwenden können, sind sie interessiert. Wenn sie eine Methode (den Programmcode für eine Operation) nur einmal für eine Klasse schreiben und viele Male verwenden können, dann melden Sie sie für eine höhere Produktivität an. Wenn Sie sich Zeit sparen möchten, indem Sie Attribute und Operationen einmal angeben und dann wiederverwenden, lesen Sie weiter.
Wenn Sie Klassen definieren, stellen Sie möglicherweise fest, dass einige Klassen dieselben Attribute oder dieselben Operationen haben. Wenn dies der Fall ist, ordnen Sie diese allgemeinen Features (Attribute, Operationen usw.) in einer allgemeineren Klasse an, die als Superklasse bezeichnet wird. Die Klassen, die die gemeinsamen Merkmale gemeinsam haben, werden als Unterklassen der Oberklasse bezeichnet. Zum Beispiel ist die Länge des aufgezeichneten Materials auf einem Videoband, einem Tonband, einer Compact Disc oder einem Filmfilm ein Attribut aller vier Arten von aufgezeichneten Medien. Diese Klassen können auch andere Attribute teilen, z. B. ihre physischen Abmessungen und das Datum, an dem sie jeweils für eine Aufzeichnung verwendet wurden. In diesem Fall wäre die Superklasse RecordedMedia, die Unterklassen Videotape, Audiotape, CompactDisc und MovieFilm, und einige gemeinsame Attribute könnten recordedLength und totalLength enthalten.
Generalisierung bekannt. Zum Beispiel verallgemeinern Sie das Attribut recordLength in eine allgemeinere Klasse namens RecordedMedia. Der Prozess zum Anzeigen einer Verallgemeinerung in UML ist einfach: 1. Identifizieren Sie die Unterklassen.
Suchen Sie nach Klassen mit denselben Attributen und / oder Operationen. Diese Klassen sind Ihre Unterklassen.
2. Erstellen Sie eine Superklasse.
Geben Sie eine Superklasse an, die die gemeinsamen Attribute und / oder Operationen der Unterklassen enthält. Geben Sie der Superklasse einen Namen, der alle Unterklassen kategorisiert. Das Platzieren der Oberklasse über den Unterklassen im Diagramm erleichtert das Lesen, ist jedoch nicht erforderlich.)
3. Fügen Sie der Superklasse gemeinsame Funktionen hinzu.
Entfernen Sie die gemeinsamen Attribute und Operationen aus den Unterklassen und platzieren Sie sie (einmalig) in der Oberklasse.
4. Zeichnen Sie eine Generalisierungsbeziehung.
Sie zeichnen eine Generalisierungszeile von jeder Unterklasse zur Oberklasse. In UML wird die Generalisierungslinie als durchgezogene Linie mit einer hohlen Pfeilspitze am Oberklassenende dargestellt. In UML wird eine Linie mit der hohlen Pfeilspitze, die eine Unterklasse mit einer Oberklasse verbindet, als Generalisierungsbeziehung bezeichnet.
Nachdem Sie eine Oberklasse mit den allgemeinen Merkmalen wie Attributen und Operationen erstellt haben, erben die Unterklassen
diese Merkmale aus der Oberklasse. Auf diese Weise müssen Sie die gemeinsamen Merkmale nur einmal in der Superklasse schreiben und nicht mehrmals in jeder der Unterklassen. Sie können feststellen, ob Sie eine Verallgemeinerung haben, indem Sie sich die Sprache ansehen, die Sie (oder andere) verwenden, um die Beziehung zwischen Klassen zu beschreiben. Beachten Sie, dass bei der Beschreibung von aufgezeichneten Medien und ihren verschiedenen Typen wie Videoband früher in diesem Abschnitt der Ausdruck "vier Arten von aufgezeichneten Medien" erschien. Wenn Sie Phrasen wie "Art von" oder "Art von" finden, dann haben Sie wahrscheinlich eine Generalisierung auf Ihre Hände. Nehmen wir an, einer Ihrer Kunden kümmert sich um die Nachverfolgung von Materialien in einem Archiv. Dieser Client hat verschiedene
Arten von
aufgezeichneten Medien wie Videobänder und Audiobänder angesammelt. Als Modellierer müssen Sie die Unterschiede zwischen diesen Medien sowie ihre Ähnlichkeiten erfassen. Das Diagramm in Abbildung 1 zeigt die Anfänge einiger Verallgemeinerungen, die in einer Vererbungshierarchie angeordnet sind. Abbildung 1: Einfache Vererbungshierarchie.
Entwickler verwenden den Begriff Generalisierung oder Vererbung, um auf das gleiche Konzept der Wiederverwendung gemeinsamer Attribute und Operationen zu verweisen, die Sie in einer übergeordneten Klasse anzeigen und in Unterklassen wiederverwenden. Generalisierung bezieht sich auf das Konzept der Verallgemeinerung von Spezifika (den Unterklassen) auf das Generische (die Oberklasse). Vererbung bezieht sich auf die Auswirkung der Generalisierung auf die Unterklassen. Wenn Sie eine
Verallgemeinerung
Beziehung zwischen Klassen sehen, unterscheidet sich ihre Bedeutung sehr von der einer Assoziations Beziehung zwischen Klassen. Eine Assoziation ist letztlich eine Beziehung zwischen vielen Objekten - einige Instanzen einer Klasse haben eine Beziehung (Link) zu Instanzen der anderen Klasse. In einer Generalisierungsbeziehung zwischen Klassen geht es wirklich um die Klassen. Das Beste, was Sie sagen können, ist, dass ein aus einer Unterklasse erstelltes Objekt alle Merkmale der Unterklasse und der Oberklasse enthält. Sie haben nur ein Objekt aus einer Klasse in einer Generalisierungsbeziehung. Obwohl Sie zwei Klassen, die Unterklasse und die Oberklasse zeigen, haben Sie nur ein Objekt, das erstellt wird. Sie können sich ein Objekt der Videotape-Klasse vorstellen, das aufgrund der Vererbung auch ein Objekt der RecordedMedia-Klasse ist. Abbildung 2 zeigt ein Objekt, das mit allen Attributen aus der Videobandklasse erstellt wurde.(Die Instanz einer Klasse wird als Objektsymbol dargestellt.) Sie haben nicht zwei verschiedene Objekte (eines für RecordedMedia und eines für Videoband), nur ein Objekt. Wenn das Objekt vtu83-1023 erstellt wurde, wurden alle seine Attributwerte gesetzt. Die Aufnahme auf dem Band dauert 57 Minuten. Die Gesamtlänge des physischen Bandes beträgt 60 Minuten. Das Band ist eine Umatic-Videokassette mit einer Höhe von 10 Zoll, einer Breite von 7 Zoll und einer Tiefe von 1,5 Zoll. Die Aufzeichnung ist analog, und ein Protokoll des Bandinhalts ist an das Band angehängt, auf das der Archivar Bezug nehmen kann. Abbildung 2:
Eine Instanz, die alle geerbten Attribute zeigt.
Sie haben nur eine Instanz, die von einer Unterklasse und ihrer Oberklasse definiert ist. Die Unterklasse und die Oberklasse können eine Konstruktoroperation (um die Instanz zu erstellen) und eine Destruktoroperation (um die Instanz zu zerstören) haben. Wenn Ihre Software ausgeführt wird und Sie eine Instanz einer Unterklasse erstellen, wird zunächst der Konstruktor der Oberklasse ausgeführt, gefolgt vom Konstruktor der Unterklasse. Wenn es an der Zeit ist, die von Ihnen erstellte Instanz zu eliminieren, wird der Destruktor der Unterklasse zuerst aufgerufen, gefolgt vom Destruktor der Oberklasse. Wenn die Dinge komplexer sind, weil Sie Unterklassen von Unterklassen haben, denken Sie daran: Konstruktoren werden von der Spitze der Vererbungshierarchie nach unten aufgerufen. Destruktoren werden in der Reihenfolge von der niedrigsten Unterklasse bis zur höchsten Oberklasse aufgerufen.