350 likes | 865 Vues
Objektorientierte Analyse (OOA) Strukturmodellierung. Inhalte Klassen(-Diagramm) Objekte Assoziation Multiplizität Aggregation Vererbung OOA-Muster Model-View-Controller Konzept (MVC). Objektorientierte Analyse (OOA) Klassendiagramm. Klassen
E N D
Objektorientierte Analyse (OOA)Strukturmodellierung • Inhalte • Klassen(-Diagramm) • Objekte • Assoziation • Multiplizität • Aggregation • Vererbung • OOA-Muster • Model-View-Controller Konzept (MVC)
Objektorientierte Analyse (OOA)Klassendiagramm • Klassen • Eine Klasse ist eine Abstraktion einer Gruppe von Objekten mit strukturell gleichen Eigenschaften (Attribute), gleichen Fähigkeiten (Operationen/Methoden), gleichem Verhalten und gleichen Beziehungen zu anderen Objekten. Sie enthält gewissermaßen die Konstruktionsbeschreibung für Objekte, die mit ihr erzeugt werden. • Zusätzlich zu den Eigenschaften und Fähigkeiten kann eine Klasse auch Definitionen von Zusicherungen, Merkmalen und Stereotypen enthalten. • Notation: • Klassen werden durch Rechtecke dargestellt, • Klassenname, Attribute und Operationen werden durch horizontale Linien getrennt. <<stereotyp>> Klassenname {Zusicherung} Beispiel für eine Klasse Beispiel für ein Objekt PKW W5977: PKW Attribute: Was muß sich das Objekt merken können? Farbe Leistung Geschwindigkeit Rot 50km/h Methoden: Welche Fähigkeiten soll es haben? Beschleunigen Bremsen Lenken
Objektorientierte Analyse (OOA)Klassendiagramm • Notation (ff): • Ein Klassenname steht im Singular und beginnt mit einem Großbuchstaben, Attribut- und Operationsname beginnen mit einem Kleinbuchstaben • Attribute und Operationen werden mindestens mit ihrem Namen aufgeführt • im objektorientierten Design (OOD) wie sie zusätzlich beschrieben durch Angabe eines Typs (bei Attributen), von Parametern (bei Operationen) und von Initialwerten und Zusicherungen: • Attribut: SichtbarkeitName : Typ = Initialwert {Zusicherungen} • Operation: Sichtbarkeit Name ( Parameterliste) : Rückgabetyp {Zusicherungen} • Sichtbarkeit (s.a. OOD, public, protected, privat): + , #, - • Parameterliste (durch Kommata getrennt) : Richtung Name : Typ = Initialwert • Richtung: in, out, inout
Objektorientierte Analyse (OOA)Klassendiagramm • Gültigkeitsbereich von Methoden und Attributen: klassen- oder objektbezogen • Eine Klassenmethode kann auch aufgerufen werden, ohne daß ein Objekt dieser Klasse existiert; wird später im Java-Code durch den Modifikator static realisiert! • Klassenattribute und -operationen werden unterstrichen • Im Innovator bedeutet instance = Objekt-/Instanz- undclassifier = Klassenmethode Beispiel für ein Objekt Aufgabe (Dampfer): Kennzeichnen Sie die Klassenvariablen/-attribute und die Klassenmethoden in der Klasse Dampfer durch einen Unterstrich (das ist die übliche Kennzeichnung); die Instanzmethoden und Instanzvariablen bekommen keine Kennzeichnung:
Objektorientierte Analyse (OOA)Klassendiagramm • Objekt: • Ein Objekt ist ein aktives, konkret vorhandenes Modellelement in einem laufenden System. • Es ist ein Exemplar einer Klasse, gekennzeichnet durch eine Anzahl von Attributen, deren Struktur durch die Klasse, der das Objekt entstammt, definiert ist, deren Werte jedoch bei jedem Objekt individuell sein können. • Notation: • Objekte werden durch Rechtecke visualisiert. Diese beinhalten den Namen des Objekts und eventuell zusätzlich den Namen der Klasse des Objekte. Namen sind unterstrichen. Teilt man das Rechteck in zwei Teile, können im unteren Teil die Attribute stehen. objekt : Klasse objekt objekt : Klasse Attribute: :Klasse
Objektorientierte Analyse (OOA)Klassendiagramm • Assoziationen • zwischen Klassen modellieren mögliche Objektbeziehungen (links) zwischen Instanzen der Klassen. • Varianten der Assoziation sind Aggregation und Komposition • Notation: • Assoziationen werden durch eine Linie zwischen den beteiligten Klassen dargestellt. Pfeilspitzen an den Linien geben die Navigation an. Die Linie wird mit einem Namen versehen (kursiv) - daneben kann ein kleines ausgefülltes Dreieck stehen, dessen Spitze die Leserichtung angibt - , der beschreibt, worin und warum diese Beziehung besteht. • Eine Assoziation kann durch Zusicherungen, Merkmale und Stereotypen genauer beschrieben werden. • An den Enden der Verbindungslinie kann ein Rollenname und die Multiplizität (s. Kasten) der Beziehung angegeben werden:
Objektorientierte Analyse (OOA)Klassendiagramm • Übungen für den Zusammenhang zwischen Objekt- und Klassendiagramm. • Entwickeln Sie ein Klassendiagramm aus folgendem Objektdiagramm (INNOVATOR-Darstellung): • Entwickeln Sie ein Klassendiagramm aus nebenstehendem Objektdiagramm. Welche Zahl von Punkten ist mindestens erforderlich, um ein Polygon zu konstruieren? • Entwickeln Sie entsprechend ihrem Klassendiagramm ein Objektdiagramm für zwei Dreiecke, die eine gemeinsame Seite besitzen.
Einzelteil PKW Objektorientierte Analyse (OOA)Klassendiagramm Beispiel für ein Klassendiagramm (aus der Literatur) mit Kommentar, Komposition, Navigation, .... PKW ist nur fahrtüchtig mit: Räder, Karosserie,... besteht aus * 0..* verwendet ... 1 Motor Karosserie besteht aus 4 Fahrzeughalter Zylinder
Objektorientierte Analyse (OOA)Klassendiagramm Übung (Multiplizität): Gegeben sei das nebenstehende Klassendiagramm zur Modellierung eines Quaders. Vervollständigen Sie die Spezifikation der Assoziationen durch Multiplizitäten (Angabe einer Zahl statt “ * ”) und Rollennamen (z.B. Eckpunkt)! Die im Diagramm enthaltenen Assoziationen besitzen alle die Semantik "ist zugeordnet" bzw. “hat”. Übung (Verwandschaftsbeziehungen): Entwickeln Sie ein Klassendiagramm zur Modellierung von den Verwandtschaftsbeziehungen: Vater-Mutter-Kind-Ehepartner; Minimieren Sie dabei die Anzahl der Klassen. Welche Attribute sind unbedingt notwendig?
Objektorientierte Analyse (OOA)Klassendiagramm • Aggregation/Komposition • Eine Aggregation/Komposition ist eine Assoziation, deren beteiligte Klassen eine Ganzes-Teile-Hierarchie darstellen. Bei der Komposition sind die Teile existenzabhängig. • Notation: • Die Assoziationslinie ist zusätzlich mit einer Raute (bei der Komposition ist die Raute schwarz ausgefüllt) auf der Seite des Aggregats (Ganzen) zu versehen. Fehlt die Muliplizität bei der Raute, wird 1 angenommen. • Beispiel PC:
Objektorientierte Analyse (OOA)Klassendiagramm Übung (Fahrzeug): Bilden Sie einen (unvollständigen) Aggregationsbaum für folgende Komponentengruppen eines Autos (Klassen) incl. der Multiplizität:
Objektorientierte Analyse (OOA)Klassendiagramm • Vererbung • Durch Vererbung (Generalisierung bzw. Spezialisierung) werden die Klassen (keine Objekte) aufgrund ihrer strukturellen Gemeinsamkeiten und ihrer Unterschiede hierarchisch gegliedert: • Oberklasse vererbt Eigenschaften • Unterklasse erbt Eigenschaften (Attribute, Operationen, Assoziationen/Aggregationen) und ergänzt diese typischerweise um eigene Eigenschaften • Notation: • Die Vererbung wird mit einem nicht ausgefüllten Pfeil, der von der Unterklasse zur Oberklasse zeigt, dargestellt.
Objektorientierte Analyse (OOA)Klassendiagramm Übung (Beziehungstypen): Geben Sie jeweils an, ob es sich bei den folgenden Relationen um eine Generalisierung, eine Aggregation/Komposition oder eine Assoziation handelt. a. Ein Land hat eine Hauptstadt. b. Eine Datei ist eine normale Datei oder eine Verzeichnisdatei. c. Dateien enthalten Datensätze. d. Ein Polygon ist durch eine geordnete Menge von Punkten definiert. e. Eine Person verwendet eine Programmiersprache für ein Projekt. f. Objektklassen können mehrere Attribute haben. g. Ein Grafikobjekt ist Text, ein geometrisches Objekt oder eine Gruppe.
Objektorientierte Analyse (OOA)Klassendiagramm Übung (Klassendiagramm): Mehrere der nachfolgend aufgeführten Objektklassen besitzen Attribute, die eigentlich Referenzen auf andere Objektklassen darstellen und durch Assoziationen ersetzt werden können. Eine Person kann bis zu drei Firmen als Arbeitgeber haben. Jede Person hat eine ID. Einem Auto ist eine ID zugewiesen. Autos können sich im Besitz von Personen, Firmen und Banken befinden. Die ID eines Autobesitzers ist die ID der Person, Firma oder Bank, die das Auto besitzt. Mit dem Kauf eines Autos kann ein Autokredit verbunden sein.
Objektorientierte Analyse (OOA)Klassendiagramm OOA-Muster (Architektur Pattern) Ein Pattern (Entwurfsmuster) ist ein Problem mit seiner Lösung in einem Kontext. Der Kontext enthält in der Regel Zielkonflikte, die der Designer lösen muss, z.B. Performance gegen Kosten oder Einfachheit gegen Wartbarkeit. Ein eigenes Design, das man einmal gemacht hat und das man in der Form von Patterns beschreibt, ist noch lange kein Pattern (es fehlen die sog. Known Uses) Eine Lösung zu einem häufig auftretenden Problem ist noch lange kein gut geschriebenes Pattern, wenn die Zielkonflikte und die Konsequenzen der Lösung nicht erläutert sind (es fehlen die sog. Forces und Consequences)
Objektorientierte Analyse (OOA)Klassendiagramm OOA-Muster (Pattern): Liste (Container/Collection) Lagerliste 4 OK Nummer Störungsstatus • Es liegt eine Komposition vor • Ein Ganzes besteht aus gleichartigen Teilen, d.h. es gibt nur eine Teil-Klasse • Teil-Objekte bleiben einem Aggregat-Objekt fest zugeordnet • Sie können jedoch gelöscht werden, bevor das Ganze gelöscht wird
Objektorientierte Analyse (OOA)Klassendiagramm • OOA-Muster (Pattern): Exemplar (Typ-Objekt) • Einfache Assoziation • Einmal erstellte Objektverbindungen werden i. Allg. nicht verändert • Sie werden nur gelöscht, wenn das betreffende Exemplar entfernt wird • Der Name der neuen Klasse enthält oft Begriffe wie Typ, Gruppe, Beschreibung, Spezifikation • Eine Beschreibung kann – zeitweise – unabhängig von konkreten Exemplaren existieren, deshalb 0..* • Würde auf die neue Klasse verzichtet, so würde als Nachteil lediglich die redundante »Speicherung« von Attributwerten auftreten.
Objektorientierte Analyse (OOA)Klassendiagramm • OOA-Muster (Pattern): Baugruppe • Es handelt sich um physische Objekte • Es liegt eine Komposition vor • Objektverbindungen bestehen über eine längere Zeit • Ein Teil-Objekt kann von seinem Aggregat-Objekt getrennt werden und einem anderen Ganzen zugeordnet werden • Ein Ganzes kann aus unterschiedlichen Teilen bestehen.
Objektorientierte Analyse (OOA)Klassendiagramm OOA-Muster (Pattern): Stückliste (Composit-Component) • Es liegt eine Komposition vor • Das Aggregat-Objekt und seine Teil-Objekte müssen sowohl als Einheit als auch einzeln behandelt werden können • Teil-Objekte können anderen Aggregat-Objekten zugeordnet werden • Die Kardinalität bei der Aggregat-Klasse ist 0..1 • Ein Objekt der Art A kann sich aus mehreren Objekten der Arten A, B und C zusammensetzen Objekt-Diagramm:
Objektorientierte Analyse (OOA)Klassendiagramm OOA-Muster (Pattern): Stückliste (Composit-Component) Der Sonderfall der Stückliste ist, dass ein Stück nicht aus Objekten unterschiedlicher Art, sondern nur aus einer einzigen Art besteht
Objektorientierte Analyse (OOA)Klassendiagramm OOA-Muster (Pattern): Koordinator • Es liegen einfache Assoziationen vor • Koordination wird verwendet, wenn die Attribute einer m:n-Beziehung gespeichert werden müssen • Die Koordinator-Klasse ersetzt eine n-äre (n >= 2) Assoziation durch binäre Assoziationen mit assoziativer Klasse • Die Koordinator-Klasse besitzt kaum Attribute/Operationen, sondern mehrere Assoziationen zu anderen Klassen, i. Allg. zu genau einem Objekt jeder Klasse.
Objektorientierte Analyse (OOA)Klassendiagramm Übung: Um welche OOA-Muster handelt es sich bei den folgenden Klassendiagrammen?
Objektorientierte Analyse (OOA)Klassendiagramm OOA-Muster (Pattern): Rollen Objektmodell: • Zwischen 2 Klassen existieren 2 oder mehrere einfache Assoziationen • Ein Objekt kann – zu einem Zeitpunkt – in Bezug auf die Objekte der anderen Klasse verschiedene Rollen spielen • Objekte, die verschiedene Rollen spielen können, besitzen unabhängig von der jeweiligen Rolle die gleichen Eigenschaften und ggf. gleiche Operationen.
Objektorientierte Analyse (OOA)Klassendiagramm • OOA-Muster (Pattern): Wechselnde Rollen • Ein Objekt der realen Welt kann zu verschiedenen Zeiten verschiedene Rollen spielen • In jeder Rolle kann es unterschiedliche Eigenschaften (Attribute, Assoziationen) und Operationen besitzen • Die unterschiedlichen Rollen werden mittels Vererbung modelliert • Objektverbindungen zwischen dem Objekt und seinen Rollen werden nur erweitert, d.h. weder gelöscht noch zu anderen Objekten aufgebaut.
Objektorientierte Analyse (OOA)Klassendiagramm OOA-Muster (Pattern): Historie • Es liegt eine einfache Assoziation vor • Für ein Objekt sind mehrere Vorgänge bzw. Fakten zu dokumentieren • Für jeden Vorgang bzw. jedes Faktum ist der Zeitraum festzuhalten • Aufgebaute Objektverbindungen zu den Vorgängen bzw. Fakten werden nur erweitert • Die zeitliche Restriktion {t#k} (k = gültige Kardinalität) sagt aus, was zu einem Zeitpunkt gelten muss, wobei # für die Vergleichsoperationen =, <, >, <=, >= und steht.
Objektorientierte Analyse (OOA)Klassendiagramm • OOA-Muster (Pattern): Gruppe(nhistorie) • Bei der Gruppe liegt eine einfache Assoziation vor • Mehrere Einzel-Objekte gehören – zu einem Zeitpunkt – zum selben Gruppen-Objekt • Es ist jeweils zu prüfen, ob die Gruppe – zeitweise – ohne Einzel-Objekte existieren kann oder ob sie immer eine Mindestanzahl von Einzel-Objekten enthalten muss • Objektverbindungen können auf- und abgebaut werden. • Wenn ein Einzel-Objekt im Laufe der Zeit zu unterschiedlichen Gruppen-Objekten gehört, wird die Historie mittels einer assoziativen Klasse modelliert, dadurch ist die Zuordnung zwischen Einzel-Objekten und Gruppen deutlich sichtbar • Da Informationen über einen Zeitraum festzuhalten sind, bleiben bei der Gruppenhistorie erstellte Objektverbindungen bestehen und es werden nur Verbindungen hinzugefügt
Objektorientierte Analyse (OOA)Klassendiagramm • Model – View – Controller (MVC) - Konzept • Als Model wird die Datenquelle bezeichnet, die Daten unabhängig vom Erscheinungsbild liefert (also beispielsweise aus einer relationalen Datenbank) • Die View zeigt diese Daten dann in passender Art und Weise an (z.B. als Tabelle in einer Java-Applikation) • Der Controller kümmert sich um die Interaktion mit dem Benutzer (das Verhalten der Komponente).
Objektorientierte Analyse (OOA)Klassendiagramm MVC – Beispiel: Web-Registrierung Der Benutzer (Client) fragt als erstes die Seite register.jsp an. Das Formular in der Antwort enthält als ?Action? die validate.jsp . Also schickt der Browser die eingegebenen Daten an die validate.jsp. Die prüft die eingegebenen Werte und gibt dazu die Kontrolle an die entsprechenden Views weiter: an register.jsp (mit Fehler-Hinweis), wenn die Eingaben ungültig waren, sonst an die ok.jsp (mit Erfolgsbestätigung) an. Sind die Eingaben korrekt, werden die Daten zur Speicherung an die UsersBean übergeben.
Objektorientierte Analyse (OOA)Anhang: Lösungen der Übungsaufgaben Seite 7:
Objektorientierte Analyse (OOA)Anhang: Lösungen der Übungsaufgaben Seite 9:
Objektorientierte Analyse (OOA)Anhang: Lösungen der Übungsaufgaben Seite 11:
Objektorientierte Analyse (OOA)Anhang: Lösungen der Übungsaufgaben Seite 13:
Objektorientierte Analyse (OOA)Anhang: Lösungen der Übungsaufgaben Seite 14 (noch mit Fehler):
Objektorientierte Analyse (OOA)Anhang: Lösungen der Übungsaufgaben Seite 22 : Bus – Fahrgast: Baugruppe (?) Vermietung: Koordinator Buch – Buchexemplar: Exemplar