UML-Basics: Einführung in Objekt-Orientierte Modellierung mit der Unified Modeling Language Michael Hahsler
Ziel dieses Seminars Verständnis von Objekt-Orientierung Was sind Klassen? Was ist Vererbung? Modellierung mit UML Welche Diagramme gibt es? Wie liest und erstellt man diese Diagramme
Das Wasserfall Modell UML als Notation Analyse (WAS?) Design (WIE?) Erstellung der Problembeschreibung, Requirements Abbildung der Realität im Objektmodell Design (WIE?) Verfeinerung des Objektmodells Beschreibung der Eigenschaften der Objekte Implementierung Auswahl einer Programmiersprache Programmieren, Testen, Dokumentieren Wartung und Verbesserung UML als Notation
Objekte „Dinge“ aus der realen Welt Besitzen: Eigenschaften (Attribute) Verhalten (Methoden) Kommunizieren mit anderen Objekten (Nachrichten) trinken
Nachrichten und Methoden Nachrichten sind Signale von einem Objekt an ein anderes. Nachrichten lösen Methoden des anderen Objekts aus. trinken (einen Schluck) Michael 1. Dose Nachricht
Kapselung Objekte können Eigenschaften (Attribute) verbergen Objekte können Methoden gegen Zugriff von außen schützen Die allgemein zugänglichen Methoden nennt man Interface Wieviel Flüssigkeit ist in dieser Dose? Kann jeder diese Dose verschließen?
Klassen Bauplan für ähnliche Objekte. Beschreibt Methoden und Attribute die das Objekt bekommt. Objekte (Instanzen) werden aus Klassen erzeugt Volumen = x Instanzierung
Vererbung (Inheritance) Hierarchische Beziehung zwischen Klassen mit ähnlichen Eigenschaften Behälter Dose Häferl Gießkanne
Polymorphismus Griechisch: Vielgestaltigkeit Gemeinsames Interface von verschiedenen Objekten Ich kenne das Interface eines Behälters! Was weiß ich daher über Gießkannen? Behälter Dose Häferl Gießkanne
Objekte und Abstraktion Modellierung ist Vereinfachung Modellierung ist Einschränkung Was ist das Wesentliche? Ist diese Nutzung des modellierten Häferls vorgesehen?
Vorteile der Objekt-Orientierung Objekte in Programmen entsprechen realen Objekten (von Analyse bis zur Implementierung) Modularität durch die Kapselung in Objekte Wiederverwendung von Objektbibliotheken Geringere Kosten bei Wartung ...
Die UML Notation Use Cases Klassendiagramme Collaborationsdiagramme Anforderungen (Requirements) Use Cases Akteure, Szenarios Klassendiagramme Klassen, Beziehungen Collaborationsdiagramme Aktivitätsdiagramm Ablaufmöglichkeiten Sequenzdiagramme Objekte, Interaktionen State-Transition Diagramme Internes Verhalten von Objekten Statische Sicht: log. Aufbau des Systems Dynamische Sicht: Interaktionen, Abläufe
Akteure (Actor) Akteure verwenden das System Akteure stellen Anforderungen (Requirements) an das System. Darstellung in UML Rolle Konsument Ein anderes System Eine andere Organisation
Use Case Diagramme Zeigen die benötigten Interaktionen zwischen dem System und den Akteuren Werden durch Szenarios beschrieben (Normalfall + Problemfälle) Grundlage für die Erstellung des Systems (müssen daher vollständig sein!) Grundlage für das Testen des Systems nach der Erstellung Wichtig: Use Cases beschreiben gewünschte Eigenschaften und nicht das System wie es ist!
Beispiel: Use Case Use Cases für eine KFZ Versicherung: Versicherung abschließen Versicherung kündigen Versicherter bezahlt Prämie Sachbearbeiter behandelt Schadensfall Sachbearbeiter ändert Konditionen
Schadensfall behandeln Beispiel: Use Case Versicherung V. abschließen V. kündigen Fahrzeug- halter Sachbearbeiter Schadensfall behandeln Konditionen ändern Prämie bezahlen
Beispiel: Szenario Schadensfall behandeln: Schaden wird von der Versicherung bezahlt Eigenverschulden Fremdverschulden Fahrzeughalter bezahlt selbst Gerichtsverhandlung Andere Versicherung bezahlt ...
Zusammenfassung Akteure und Anforderungen Use Cases Szenarios
Das Klassendiagram Logischen Aufbau des Systems Statischen Aspekte Zusammenhänge und Beziehungen
Klassen Klassen sind die Baupläne für Objekte (Instanzen) Darstellung in UML Beispiel einer Klasse in UML Klassenname PKW oder Farbe Leistung Geschwindigkeit .... Klassenname Attribute Methoden Beschleunigen Bremsen Lenken ... W59777: PKW Rot 50km Klasse Objekte (Instanzen)
Elemente Klassendiagramm I Beziehungen (Paths/Associations) Richtung der Beziehungen (Navigability) Klassenname spricht mit Klasse A Klasse B spricht mit Klasse A Klasse B
Elemente Klassendiagramm II Kardinalitäten (Multiplicity) Aggregation (Aggregation/Composition) Generalisierung (Generalization) 1 spricht mit 0..* Klasse A Klasse B besteht aus Auto Einzelteile 1 * Einzelteil ... Motor Karosserie
Elemente Klassendiagramm II Abhängigkeiten (Dependencies) Anmerkungen oder Einschränkung benötigt Klasse A Klasse B PKW ist nur fahrtüchtig mit: Räder, Karosserie,... PKW
Beispiel: Klassendiagramm PKW ist nur fahrtüchtig mit: Räder, Karosserie,... besteht aus Einzelteil PKW 1 * 0..* verwendet ... 1 Motor Karosserie 1 besteht aus 4 Fahrzeughalter Zylinder
Wie kommt man zu Klassen? Analyse der Use Cases: Substantive sind Kandidaten für Klassen Verben sind Kandidaten für Methoden Auswahl der Klassen Synonyme finden Unwichtige Klassen entfernen Wichtige Klassen hinzufügen (Brainstorming) Organisation der Klassen
Beispiel: KFZ Versicherung Szenario KFZ Versicherung: Ein Fahrzeughalter muß für sein KFZ eine Versicherung abschließen. Er wird bei der Versicherung von einem Sachbearbeiter betreut. Nach dem Abschluß bekommt der Versicherte einen Vertrag mit den genauen Versicherungsdaten und der Sachbearbeiter führt Unterlagen zu etwaigen Schadensfällen.
Eigenschaften von Klassen Attribute Was muß sich das Objekt merken können? Methoden Welche Eigenschaften soll es haben? PKW Farbe Leistung Geschwindigkeit .... Beschleunigen Bremsen Lenken ...
Beispiel: KFZ Versicherung Klasse Versicherung: Welche Attribute? Welche Methoden? Versicherung ? ?
Zusammenfassung Was sind Klassen Wie kommt man zu Klassen Eigenschaften von Klassen Beziehungen zwischen Klassen
Activity Diagram Zweck: Ablaufmöglichkeiten eines Systems Aktivitäten sind zugeordnet: Klassen Operationen einem Use Case
Beispiel: Kfz Versicherung Szenario Schadensfall: Ein Schadensfall tritt ein. Der Sachbearbeiter wird informiert und bearbeitet den Fall. Der Vorfall wird in den Versicherungsunterlagen vermerkt. Bei Verschulden durch den Versicherungsnehmer wird die monatliche Prämie erhöht.
Beispiel: Activity Diagram Schaden feststellen Selbst bezahlen [Schaden ist gering] [Schaden ist groß] Schaden vermerken Schaden melden Prämie erhöhen [eigenverschulden] Mit anderer Versicherung verhandeln [fremdverschulden] {AND}
Sequence Diagram Zweck: Interaktion zwischen Objekten aus Szenarios Identifikation von zusätzlichen Klassen und Methoden Beinhaltet: Objekte Lebenszeit von Objekten Nachrichten zwischen Objekten
Beispiel: KFZ Versicherung Szenario Versicherung abschließen: Ein Fahrzeughalter beantragt eine KFZ Versicherung. Der Antrag wird vom zuständigen Sachbearbeiter geprüft. Nach erfolgreicher Prüfung wird ein Vertrag abgeschlossen. Szenario Versicherung kündigen: Der Versicherte kündigt die Versicherung. Der Sachbearbeiter löst den Vertrag auf.
Beispiel: Sequence Diagram KFZ Versicherung :Fahrzeughalter :Sachbearbeiter Versicherung beantragen (Daten) Versicherung abschließen Antrag prüfen Vertrag schicken(Versicherungs#) Vertrag erstellen Ein V.: Versicherung Kündigen (Versicherungs#) Versicherung auflösen Vertrag auflösen bestätigen
Collaboration Diagram Zweck: Interaktion und Verflechtung zwischen Objekten Alternativ zu Sequence Diagrams Beinhaltet: Objekte Struktur der Objekte Sequenz von Nachrichten zwischen Objekten
Beispiel: KFZ Versicherung Szenario Versicherung abschließen: Ein Fahrzeughalter beantragt eine KFZ Versicherung. Der Antrag wird vom zuständigen Sachbearbeiter geprüft. Nach erfolgreicher Prüfung wird ein Vertrag abgeschlossen.
Beispiel: Collaboration Diagram KFZ Versicherung Versicherungsdatenbank 1: Versicherung beantragen (Daten) 2: Antrag prüfen 4: Vertrag schicken (Versicherungs#) :Fahrzeughalter :Sachbearbeiter 3: Vertrag erstellen Eine V.: Versicherung
Zusammenfassung Zwischen Objekten: Interaktionen Nachrichten
State Transition Diagram Zweck: Ablauf innerhalb eines Objekts Beinhaltet: Zustände (States) Ereignisse (Events) Übergänge zwischen Zuständen (Transitions)
Elemente: State Transition Diagram Zustand Übergang (Ereignis) Name Aktivität Ereignis(Argumente) [Bedingungen]/Aktion
Beispiel: Kfz Versicherung Szenario Schadensfall: Ein Schadensfall tritt ein. Der Sachbearbeiter wird informiert und bearbeitet den Fall. Der Vorfall wird in den Versicherungsunterlagen vermerkt. Bei Verschulden durch den Versicherungsnehmer wird die monatliche Prämie erhöht.
Beispiel: Kfz Versicherung Klasse Versicherung kündigen Versichert Bearbeitung Schaden tritt ein vermerken Fertig [Eigenverschulden]/Prämie erhöhen Fertig [Fremdverschulden]
Zusammenfassung Zustände Übergänge