3. Objektorientierte Analyse 3.1 Systemanalyse 3.2 Statische Modellierung mit UML 3.3 Weitere UML-Diagramme in der Analyse 3.4 Realisierung von UML-Klassen mit Java 3.5 Dynamische Modellierung mit UML Technische Universität Dresden Prof. Hußmann Softwaretechnologie Methodik der Objektorientierten Analyse Klassen finden Iteration Ziel: Von den Anforderungen zu einem Modell der fachlichen Aufgabe Assoziationen und Aggregationen finden Attribute finden Operationen finden Szenarien finden und prüfen Vererbungsstrukturen finden Zustandsdiagramme erstellen Operationen spezifizieren Strukturen überprüfen Subsysteme finden Variante: Datenorientierte Vorgehensweise Technische Universität Dresden Prof. Hußmann Seite 1 Softwaretechnologie Operation • Definition Eine Operation einer Klasse K ist die Beschreibung einer Aufgabe, die jede Instanz der Klasse K ausführen kann. In der Beschreibung der Klasse wird der Name der Operation angegeben. • Notation: Klasse Attribut_1 ... Attribut_n Operation_1 ... Operation_m • Beispiel: Teambesprechung titel beginn dauer raumFestlegen() einladen() absagen() Zur besseren Unterscheidung von Attributnamen werden meist Klammern hinter Operationsnamen gesetzt, auch wenn über die Parameterliste noch keine Aussagen gemacht werden sollen. Technische Universität Dresden Prof. Hußmann Softwaretechnologie Parameter und Datentypen für Operationen • Detaillierungsgrad: – Analysephase: meist Operationsname ausreichend – Parameternamen und Datentypen können angegeben werden (manchmal auch Parametername ohne Datentyp) – Später (Entwurfsphase) sind vollständige Angaben nötig. • Notation: Operation (Art Parameter:ParamTyp=DefWert, ...): ResTyp – Art (des Parameters): in, out, oder inout (weglassen heißt in) – DefWert legt einen Default-Parameterwert fest, der bei Weglassen des Parameters im Aufruf gilt. • Beispiele (Klasse Teambesprechung): raumFestlegen (wunschRaum: Besprechungsraum): Boolean absagen (grund: String); Technische Universität Dresden Prof. Hußmann Seite 2 Softwaretechnologie Klassenoperation • Definition Eine Klassenoperation A einer Klasse K ist die Beschreibung einer Aufgabe, die nur unter Kenntnis der aktuellen Gesamtheit der Instanzen der Klasse ausgeführt werden kann. Gewöhnliche Operationen heißen auch Instanzoperationen. • Notation: Unterstreichung analog zu Klassenattributen. • Beispiel: Besprechungsraum raumNr kapazität reservieren() freigeben() freienRaumSuchen() Technische Universität Dresden Prof. Hußmann Softwaretechnologie Konstruktoroperation • Definition Eine Konstruktoroperation C einer Klasse K ist eine spezielle Klassenoperation, die eine neue Instanz der Klasse, d.h. ein neues Objekt, erzeugt und initialisiert. Ergebnistyp von C ist immer implizit die Klasse K. Eine Konstruktoroperationen ohne Parameter wird implizit für jede Klasse angenommen. Explizite Konstruktoroperationen werden mit "<<constructor>>" markiert. • Beispiel: Besprechungsraum raumNr kapazität reservieren() freigeben() freienRaumSuchen() neuerBesprechungsraum (raumNr, kapazität) <<constructor>> Technische Universität Dresden Prof. Hußmann Seite 3 Softwaretechnologie Beispiel: Operationen Besprechungsraum raumNr kapazität reservieren() freigeben() freienRaumSuchen() 0..1 Ort Termin * Teambesprechung titel beginn dauer anzahl raumFestlegen() einladen() absagen() verschieben() Privater Termin beschreibg beginn dauer ort wegzeit genehmigen() verschieben() Team name 1 0..1 1..* * leitet 1 Teilnahme * * 2..* 1 Leiter Teammitglied name abteilung terminBestätigen() 1 für Technische Universität Dresden Prof. Hußmann Softwaretechnologie Datenkapselung (1) - Beispiel Besprechungsraum-Objekt Ort Teilnahme ar12: Teambesprechung diverse TeammitgliedObjekte titel = "12.Abteilungsrunde" beginn = 10.10.00 09:00 dauer = 60 leitet verschieben(17.10.00 09:00) Es steht nur lokale Information zur Verfügung: Attributwerte, assoziierte Objekte Technische Universität Dresden 1. Alle Teammitglieder nach Konflikten mit neuem Datum fragen 2. Besprechungsraum zum neuen Termin reservieren 3. Alte Reservierung (Raum) freigeben 4. Datum ändern Prof. Hußmann Seite 4 Softwaretechnologie Datenkapselung (2) - Beispiel im Detail r18: Besprechungsraum 2. reservieren(neu) Ort 3. freigeben(alt) tm1: Teammitglied Teilnahme 1.1 terminBestätigen(neu) ar12: Teambesprechung titel = "12.Abteilungsrunde" beginn = 10.10.00 09:00 dauer = 60 = alt tm2: Teammitglied 1.2 terminBestätigen(neu) 1.3 terminBestätigen(neu) leitet tm3: Teammitglied verschieben(17.10.00 09:00) = neu Anmerkung: Darstellung= UML"Kollaborationsdiagramm" Technische Universität Dresden 1. Alle Teammitglieder nach Konflikten mit neuem Datum fragen 2. Besprechungsraum zum neuen Termin reservieren 3. Alte Reservierung (Raum) freigeben 4. Datum ändern Prof. Hußmann Softwaretechnologie Datenkapselung (3) - Weiteres Beispiel Beispiel: raumFestlegen() in Klasse Teambesprechung Teambesprechung titel beginn dauer raumFestlegen() einladen() absagen() 1. Wieviele Teilnehmer? 2. Welcher Raum? 3. Reservieren. Teilnahme tb: Teambesprechung freienRaumSuchen() R15 Besprechungsraum n=5 (diverse TeammitgliedObjekte) reservieren(tb) R15: Besprechungsraum Technische Universität Dresden Prof. Hußmann Seite 5 Softwaretechnologie Zuordnung von Operationen • Zweifelsfälle: – freienRaumSuchen(): » Operation von "Besprechungsraum" oder von "Teambesprechung"? – genehmigen(): » Operation von "Privater Termin" oder von "Teammitglied"? • Prinzipien: – Möglichst intensive Ausnutzung der Datenkapselung: » da zuordnen, wo am besten von lokaler Information Gebrauch gemacht werden kann – Notwendigkeit zur Objektinteraktion möglichst minimieren – Möglichst Gebrauch von vorhandenen Operationen machen bzw. Operationen mehrfach nutzen. Technische Universität Dresden Prof. Hußmann Softwaretechnologie Methodik der Objektorientierten Analyse Klassen finden Iteration Ziel: Von den Anforderungen zu einem Modell der fachlichen Aufgabe Assoziationen und Aggregationen finden Attribute finden Operationen finden Szenarien finden und prüfen Vererbungsstrukturen finden Zustandsdiagramme erstellen Operationen spezifizieren Strukturen überprüfen Subsysteme finden Variante: Datenorientierte Vorgehensweise Technische Universität Dresden Prof. Hußmann Seite 6 Softwaretechnologie Vererbung • Definition Eine Vererbungsbeziehung von einer Klasse K1 zu einer Klasse K2 ist eine Beschreibung der Tatsache, daß alle Objekte der Klasse K2 zusätzlich zu den in der Klasse K2 beschriebenen Eigenschaften auch alle Eigenschaften der Klasse K1 haben. 'Eigenschaften' sind hier – die Liste der Attribute – die Teilnahme an Assoziationen, Aggregationen und Kompositionen – die Liste der Operationen. • Notation: Klasse_1 • Umgangssprachlich: Klasse_2 Jedes Klasse_2 ist ein Klasse_1. Klasse_2 ist Spezialfall von Klasse_1. Technische Universität Dresden Prof. Hußmann Softwaretechnologie Vererbung und Instanzen Termin titel beginn dauer verschieben() allgTermin:Termin titel = "Noch unklar" beginn = 01.01.00 00:00 dauer = 0 spezTermin:Teambesprechung Teilnahme titel = "12. Abteilungsrunde" beginn = 10.05.98 10:00 dauer = 120 leitung = m1 teilnahme [0] = m1 teilnahme [1] = m3 ... Teambesprechung anzahl leitet Veranst Ort raumFestlegen() einladen() absagen() Technische Universität Dresden Prof. Hußmann Seite 7 Softwaretechnologie Polymorphie Termin ... verschieben (neu: Date):Boolean Privater Termin Teambesprechung verschieben() verschieben() :Privater Termin :Teambesprechung verschieben (neu=20.07.98 17:00) • Die gleiche Nachricht führt zu unterschiedlichen Rechenvorschriften, abhängig vom Empfänger (dynamische Bindung). Technische Universität Dresden Prof. Hußmann Softwaretechnologie Abstrakte und konkrete Klassen • Definition Eine Klasse kann als abstrakt deklariert werden. In diesem Fall ist es nicht zulässig, Instanzen der Klasse zu bilden. Abstrakte Klassen dienen nur als "Schema" in der Vererbung. Eine Klasse, von der Instanzen gebildet werden können, heißt konkret . • Notation: Klasse {abstract} ... ... oder: Kursivschreibung des Klassennamens • Beispiel: Termin {abstract} ... ... Technische Universität Dresden Prof. Hußmann Seite 8 Termin ... ... Softwaretechnologie Überdefinieren von Operationen K K K f f f K1 K2 K1 K2 f Das in K definierte Verhalten gilt für alle Objekte der Klassen K, K1 und K2. Technische Universität Dresden Das in K definierte Verhalten gilt nur für die Objekte der Klassen K und K2. K1 definiert ein anderes Verhalten (Überdefinition, override). K1 K2 f f Das in K definierte Verhalten gilt nur für die Objekte der Klasse K (und ist deshalb nutzlos, wenn K abstrakt ist). Prof. Hußmann Softwaretechnologie Abstrakte und konkrete Operationen • Definition Eine Operation OP kann als abstrakt deklariert werden, wenn sie in einer abstrakten Oberklasse K definiert ist. In diesem Fall legt K kein Verhalten für OP fest. Das Verhalten von OP wird in den Unterklassen von K definiert. Eine Operation einer Klasse, die ein eigenständiges Verhalten aufweist, heißt konkret. • Notation: Klasse {abstract} ... Operation {abstract} • Beispiel: Termin {abstract} ... verschieben() {abstract} veröffentlichen() Technische Universität Dresden Prof. Hußmann Seite 9 Termin ... verschieben () veröffentlichen() Softwaretechnologie Zugriff auf Attributwerte • Attributwerte sind „Privatangelegenheit“ eines Objekts. • Implizite Operationen zum Lesen und Schreiben von Attributwerten – Lesen („get-Methode“) – Setzen („set-Methode“) • Beispiel: – Attribut: – Leseoperation: – Schreiboperation: beginn: Date getBeginn(): Date setBeginn(d: Date) • In den meisten objektorientierten Programmiersprachen (auch Java) werden Attribute syntaktisch wie Variablen eines Pascal/Modula-Records angesprochen: Für Objekt x : Teambesprechung : – Attribut: x.beginn (Typ ist Date) – Leseoperation: … x.beginn … – Schreiboperation: x.beginn = … Technische Universität Dresden Prof. Hußmann Softwaretechnologie Datenkapselung und Sichtbarkeit • Definition Für eine Operation OP einer Klasse K wird eine Sichtbarkeit definiert, z.B. privat (Regelfall) oder öffentlich. • • • • Die Sichtbarkeit eines Attributes ist gleichbedeutend mit der Sichtbarkeit seiner impliziten Operationen. Private Operation OP einer Klasse K: Die Ausführung von OP für ein Objekt der Klasse K ist nur durch ein Objekt der selben Klasse K möglich. Öffentliche (public) Operation: Ein beliebiges Objekt darf OP ausführen. Geschützte (protected) Operation: Ein Objekt O darf OP genau dann ausführen, wenn die Klasse von O eine Unterklasse von K ist. Notation:; – Minuszeichen (privat) – Pluszeichen (öffentlich) – Kreuzzeichen (geschützt) Technische Universität Dresden – Operation + Operation # Operation Prof. Hußmann Seite 10 – Attribut + Attribut # Attribut Softwaretechnologie Vererbung und Sichtbarkeit K1 – a1 # a2 – op1() + op2() # op3() K3 op2 kann verwenden: a1, a2, op1, op3 op5() op5 kann verwenden: op2 op4 kann verwenden: a2, op2, op3 K2 Sichtbarkeitssymbole: – private + public # protected op4() • Alle Attribute und Operationen werden als Bestandteil der Objektstruktur vererbt. • In der Unterklasse sichtbar sind nur öffentliche und geschützte Attribute und Operationen. Technische Universität Dresden Prof. Hußmann Softwaretechnologie Klassendiagramm Terminverwaltung 1 * Termin {abstract} titel beginn dauer verschieben() {abstract} Team name 1 * Privater Termin ort wegzeit Teambesprechung verschieben() * Besprechungsraum raumNr kapazität reservieren() freigeben() freienRaumSuchen() 0..1 VeranstOrt für Technische Universität Dresden anzahl raumFestlegen() einladen() absagen() verschieben() Prof. Hußmann Seite 11 1..* * leitet 1 Teilnahme * 2..* 0..1 1 Leiter Teammitglied name abteilung terminBestätigen() 1 Softwaretechnologie Methodik der Objektorientierten Analyse Klassen finden Iteration Ziel: Von den Anforderungen zu einem Modell der fachlichen Aufgabe Assoziationen und Aggregationen finden Attribute finden Operationen finden Szenarien finden und prüfen Vererbungsstrukturen finden Variante: Datenorientierte Vorgehensweise Technische Universität Dresden Zustandsdiagramme erstellen Operationen spezifizieren Strukturen überprüfen Subsysteme finden Prof. Hußmann Softwaretechnologie 3. Objektorientierte Analyse 3.3 Weitere UML-Diagramme in der Analyse Klassendiagramme Technische Universität Dresden Prof. Hußmann Seite 12 Softwaretechnologie Anwendungsfälle • Definition Ein Akteur ist die Beschreibung einer Rolle, die ein Benutzer (oder ein anderes System) spielt, wenn er/es mit dem System interagiert. • Definition Eine Interaktion ist der Austausch von Nachrichten unter Objekten zur Erreichung eines bestimmten Ziels. • Definition Eine Nachricht ist die Beschreibung einer op(x, y) Operation eines Objekts mit den notwendigen Parameterwerten, so daß die Operation durch das Objekt ausführbar ist. • Definition Ein Anwendungsfall (synonym Use-Case, engl. use case) ist die Beschreibung einer Klasse von Aktionsfolgen (einschließlich Varianten), die ein System ausführen kann, wenn es mit Akteuren interagiert. Technische Universität Dresden Prof. Hußmann Softwaretechnologie Use-Case-Diagramm Terminverwaltung Teambesprechung organisieren Organisator Teambesprechung verschieben Persönlichen Termin einplanen Ungenutzte Raumkapazität ermitteln Raumverwalter Teammitglied Technische Universität Dresden Prof. Hußmann Seite 13 Softwaretechnologie Szenarien • Definition Ein Szenario ist eine Beschreibung einer beispielhaften Folge von Interaktionen von Akteuren mit dem System zur Beschreibung eines Anwendungsfalls. • Es gibt Szenarien für Normalfälle ('gut-Fälle') und Ausnahmefälle. • Beispiel: Eines der Normalfall-Szenarien für 'Teambesprechung organisieren' – – – – Organisator erfährt Thema, Termin, TeilnehmerInnen einer neu geplanten Teambesprechung. Zeitpunkt wird mit TeilnehmerInnen abgestimmt. Raum wird reserviert (falls gewünscht). Einladungen werden an die TeilnehmerInnen versandt. Technische Universität Dresden Prof. Hußmann Softwaretechnologie Sequenzdiagramm Organisator erzeugen tb1:Teambesprechung m3:Teammitglied m5:Teammitglied terminBestätigen() OK terminBestätigen OK bestätigt ... • • • • Senkrechte Linien: 'Leben' einer Objektinstanz Waagrechte Pfeile: (Synchrone) Nachrichten Gestrichelte Pfeile (optional): Antworten (Ergebnisrückgaben) Blöcke auf den senkrechten Linien: Steuerfokus (Aktivierung) Technische Universität Dresden Prof. Hußmann Seite 14 Softwaretechnologie