09.01.14 Vorlesung „Programmieren“ Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML) • Standard zur graphischen Modellierung – Spezifikation, Konstruktion und Dokumentation von Software – Vielzahl verschiedener Diagramme • Entwickelt von der Object Management Group (OMG) – Standardisiert von OMG und ISO (ISO/IEC 19501, Version 2.1.2) Bildquelle: http://en.wikipedia.org/wiki/File:UML_Diagrams.jpg Unified Modeling Language (UML) • Diagramme stellen Softwaresysteme sprachunabhängig dar – Ermöglicht Diskussion über Eigenschaften ohne über technische Details einer Programmiersprache zu diskutieren – Erlaubt es auch nicht technisch-versiertem Personal (z.B. Domänenexperten) am Design mitzuwirken • Beispiele zur Nutzung von UML – Kunde und Auftragnehmer prüfen Anforderungen an ein System – Domänenexperten beschreiben (bzw. modellieren) Abläufe in Aktivitätsdiagrammen – Softwareexperten erstellen daraus Klassen- und Sequenzdiagramme Security - 00 Layout Master #3 1 09.01.14 UML Diagrammtypen (14 Stück) Strukturdiagramme Verhaltensdiagramme • • • • • • • • Aktivitätsdiagramm • Sequenzdiagramm • Anwendungsfalldiagramm (auch: Use-Case-Diagramm) • Interaktionsübersichtsdiagramm • Kommunikationsdiagramm • Zeitverlaufsdiagramm • Zustandsdiagramm Komponentendiagramm Klassendiagramm Verteilungsdiagramm Objektdiagramm Paketdiagramm Profildiagramm Kompositionsstrukturdiagramm (auch: Montagediagramm) Security - 00 Layout Master #4 Aktivitätsdiagramm • Stellt eine bestimmte Sicht auf dynamische Aspekte eines modellierten Systems dar – Es wird oft der Ablauf eines Anwendungsfalls des Systems modelliert – Zeigt Zusammenhänge verschiedener Aktionen auf und stellt die Kontroll- und Datenflüsse dar • Beispiel: Spaghetti kochen http://de.wikipedia.org/w/index.php?title=Datei:Activity_2.png&filetimestamp=20110727175635 Security - 00 Layout Master #5 Komponentendiagramm • Darstellung umfasst Komponenten und deren Schnittstellen – Stellt Abhängigkeiten zwischen Komponenten dar – Zeigt, wie Komponenten miteinander verbunden sind http://de.wikipedia.org/w/index.php?title=Datei:Component-4.png&filetimestamp=20080905134924 #6 2 09.01.14 Klassendiagramm Security - 00 Layout Master #7 Klassendiagramm • Modellierung von Klassen, Schnittstellen und deren Beziehungen – Klassen und Interfaces und deren Attribute und Methoden – Zugriffsschutz (public, private, etc.) – Vererbungsbeziehungen • „ist ein“-Beziehungen: extends, implements • Kiwi ist ein Obst, Apfel ist ein Obst – Kompositionen bzw. Assoziationen • „hat ein“- bzw. „hat mehrere“-Beziehungen • Obstkost „hat mehrere“ Obst-Instanzen Security - 00 Layout Master #8 Rückblick: Beispiel: Objekt „Punkt“ • Besteht aus Zustand (Attributen) und Verhalten (Methoden) Punkt Attribute: - double x = 1; - double y = 3; • Zustand eines Punktes – Definiert durch aktuelle x- und y- Werte Methoden: - void setze(double x, double y); - void verschiebe(double dx, double dy); - void rotiere(double radians); • Verhalten eines Punktes – Definiert durch seine Methoden – z.B. Setzen der x- und y-Werte, verschieben, rotieren Security - 04 Cryptology #9 3 09.01.14 Modellierung einer Klasse in UML • Klasse ohne Attribute, Methoden, etc. • Klasse mit einem Attribut • Klasse mit einer Methode • Klasse mit einem Attribut und einer Methode Security - 00 Layout Master #10 Zugriffssteuerung (Methoden & Attribute) • „+“ für public • „#“ für protected ~ • „-“ für private • „~“ für package private – Nur in wenigen Programmiersprachen verfügbar (Java, C#) Security - 00 Layout Master #11 Umsetzung in Java Security - 00 Layout Master #12 4 09.01.14 Umsetzung in Java Security - 00 Layout Master #13 Umsetzung in Java Security - 00 Layout Master #14 Umsetzung in Java Security - 00 Layout Master #15 5 09.01.14 Modellierung von Interfaces in UML • Interfaces markiert durch <<interface>> Security - 00 Layout Master #16 Modellierung einer Klasse in UML • Statische Elemente – Markiert durch Unterstreichung • Abstrakte Elemente – Markiert durch kursive Schrift Security - 00 Layout Master #17 Statische Elemente in Java Security - 00 Layout Master #18 6 09.01.14 Abstrakte Elemente in Java Security - 00 Layout Master #19 Vererbung in UML Security - 04 Cryptology #20 Security - 00 Layout Master #21 Vererbung • Einfache Vererbung 7 09.01.14 Vererbung in Java Security - 00 Layout Master #22 Vererbung • Vererbung + Implementieren von Interfaces Security - 00 Layout Master #23 Vererbung in Java Security - 00 Layout Master #24 8 09.01.14 Beispiel: Obstkorb Security - 00 Layout Master #25 Objektdiagramm Security - 04 Cryptology #26 Objektdiagramm • Dient zur Darstellung des Programmzustands • Notation variablenname : Klasse attributname = wert • Beispiel p : Person name = "Walter" geburtsdatum = "12.12.1922" 9 09.01.14 Objektdiagramm (Beispiel) b1: Bus hersteller="Ford" wechselintervall=10000 km_gefahren=3722 baujahr=1920 b2: Bus Bus hersteller="Mercedes-Benz" wechselintervall=20000 km_gefahren=5647 baujahr=1999 hersteller: String wechselintervall: int km_gefahren: int baujahr: int b3: Bus hersteller="MAN" wechselintervall=30000 km_gefahren=10432 baujahr=2005 oelwechsel(): boolean b4: Bus hersteller="Scania" wechselintervall=35000 km_gefahren=54432 baujahr=2003 5-2-28 Beziehungen zwischen Klassen Security - 04 Cryptology #29 Beispiel: Ein Haus hat ein Fenster Security - 04 Cryptology #30 10 09.01.14 Beziehungen zwischen Klassen • Ein Haus mit einem Fenster – Ein Haus hat ein Fenster • Ein Haus mit 1-n Fenstern – Ein Haus hat viele Fenster (aber mindestens 1) Security - 00 Layout Master #31 Bidirektionale Beziehungen • Beispiel – Ein Haus hat 1..* Fenster – Jedes Fenster hat 0..1 Häuser Security - 00 Layout Master #32 Umsetzung in Java Security - 00 Layout Master #33 11 09.01.14 Umsetzung in Java Security - 00 Layout Master #34 Sequenzdiagramm Security - 00 Layout Master #35 Sequenzdiagramm • Grafische Darstellung von Interaktionen • Beschreibt Austausch von „Nachrichten“ zwischen „Ausprägungen“ – Also z.B. Methodenaufrufe zwischen Instanzen – Beschreibt eine mögliche Interaktion, nicht alle Interaktionen müssen so ablaufen http://de.wikipedia.org/w/index.php?title=Datei:Sequenz_diagramm-2.png&filetimestamp=20080906015648 Security - 00 Layout Master #36 12 09.01.14 Sequenzdiagramm - Bausteine Security - 00 Layout Master #37 Beispiel (Obstkorb) Security - 00 Layout Master #38 Beispiel (Obstkorb) #39 13 09.01.14 Live Demo Security - 00 Layout Master #40 www.gliffy.com Security - 00 Layout Master #41 Soyatec eUML2 für Eclipse • http://www.soyatec.com/euml2/installation/galileo/index.php Security - 04 Cryptology #42 14 09.01.14 Jetbrains IDEA IntelliJ Security - 04 Cryptology #43 Buchtipp • UML Distilled: A Brief Guide to the Standard Object Modeling Language • Details – Taschenbuch: 175 Seiten – Verlag: Addison-Wesley Longman, Amsterdam – Sprache: Englisch – ISBN-10: 0321193687 – ISBN-13: 978-0321193681 Security - 04 Cryptology #44 15