UML
Unified Modeling Language
Vortrag im Rahmen des Praktikums Telematik
SS04
03.05.04
Bilmeze Atalan
Biljana Sapundjieva
Was ist UML?
UML ist eine Sprache zur Spezifikation,
Visualisierung, Konstruktion und
Dokumentation von Modellen für
Softwaresysteme, Geschäftsmodelle und
andere Nicht-Softwaresysteme.
1
Inhaltsverzeichnis
•
•
•
•
•
Anwendungsfalldiagramme
Klassendiagramme
Sequenzdiagramme
Paket-Diagramme
Deployment-Diagramme
Anwendungsfalldiagramme
Definition Anwendungsfall (use case):
Eine Folge von Schritten (sequence of events),
die die Interaktion eines Benutzers mit einem
System beschreibt.
Quelle: Professor Bernd Brügge, Ph.D, SS2001, Einführung in die Informatik 2
2
Bestandteile von
Anwendungsfalldiagrammen
• Akteuren
• Anwendungsfällen
• Beziehungen
Bezeichner des
Anwendungsfalles
Die Arten von Beziehungen
1. Beziehungen zwischen Anwendungsfällen
und Akteuren
2. include-Beziehung zwischen
Anwendungsfall und Anwendungsfall
3. extend-Beziehung zwischen Anwendungsfall
und Anwendungsfall
4. Generalisierung- und SpezialisierungsBeziehung:
Diese Beziehung besteht immer zwischen
Komponenten gleichen Typs.
3
Beispiel
Szenario:
Der Kunde durchstöbert einen Katalog und
legt die ausgewählten Artikel in seinen
Einkaufskorb. Zum Zahlen gibt er seine
Versand- und Kreditkateninformation an und
bestätigt seinen Kauf. Das System autorisiert
den Verkauf mit einer Quittung und einer E-Mail an
die Email-Adresse aus der Versandinformation.
Quelle: Professor Bernd Brügge, Ph.D, SS2001, Einführung in die Informatik 2
Modellierung als Anwendungsfall
•
•
•
•
•
•
•
•
•
•
•
•
Name des Anwendungsfalles: Einkauf eines Artikel
Akteur: Kunde
Ereignisfluss:
Kunde durchstöbert den Katalog.
Kunde wählt Artikel aus.
Kunde legt die ausgewählten Artikel in den Einkaufskorb.
Kunde gibt Versand- und Kreditkarteninformation an.
Kunde bestätigt Kauf.
Kunde gibt Kreditkarte an.
System autorisiert die Kreditkarte.
System bestätigt den Verkauf mit Quittung.
System bestätigt Verkauf mit E-Mail an die E-MailAdresse aus der Versandinformation.
Quelle: Professor Bernd Brügge, Ph.D, SS2001, Einführung in die Informatik 2
4
Modellierung als
Anwendungsfalldiagramm
Quelle: Professor Bernd Brügge, Ph.D, SS2001, Einführung in die Informatik 2
Klassendiagramme
Ein Klassendiagramm beschreibt die Typen
von Objekten im System und die
verschiedenen Arten von statischen
Beziehungen zwischen diesen.
5
Klassendiagramme bestehen aus:
•
•
•
•
Klassen
Assoziationen
Aggregationen/Kompositionen
Generalisierungen
Klassen
• Klassen sind Baupläne für Objekte.
• UML-Darstellung:
6
Notation der Attribute
•
Notation:
<Zugriffsmodifizierer><Name>:<Typ>[=<Initialwert>]
•
Beispiel:
+name: String = Müller
•
Java:
public String name=Müller;
•
Zugriffsmodifizierer:
1. +: public
2. - : private
3. #: protected
Notation der Methoden
• <Zugriffsmodifizierer><Name>(<Parameterliste>):
<Rückgabetyp>
• Notation der Parameterliste:
• <Argument>:<Argumenttyp>[=Standardwert]
• Beispiel:
• -summe ( a: Integer, b: Integer) : Integer
• in Java:
private int summe(int a, int b){}
7
Kommentare in UML
Assoziationen
• Beschreiben allgemein Verbindungen
zwischen Klassen
• Besteht dann, wenn eine Klasse eine andere
Klasse kennen muss, um ihre Aufgaben
erfüllen zu können.
8
Multiplizitäten
• Die Zahl an einem Assoziationsende, die
besagt, wie viele Objekte an der Beziehung
beteiligt sein können, heißt Multiplizität.
• Beispiele für Multiplizitäten:
– 0...*
–1
– 0...1
Quelle: Professor Bernd Brügge, Ph.D, SS2001, Einführung in die Informatik 2
Aggregationen
•Assoziationen
•Ganzes-Teile-Hierarchie
9
Kompositionen
• Spezialfall der Aggregation, bei denen die
Teile existenzabhängig vom Aggregat sind
Generalisierung (Vererbung)
•Ermöglicht eine hierarchische Klassenstruktur
Beispiel:
10
Beispiel für ein
Klassendiagramm
Vom Klassendiagramm zum Java Code
• Assoziationen werden analog zu Attributen als Instanzoder Klassenvariablen übersetzt.
• Ungerichtete Assoziationen werden durch je eine Variable
in beiden assoziierten Klassen realisiert; für den Namen
der Variablen bietet sich der Rollenname an.
• gerichtete Assoziationen stellen eine Navigierbarkeit in der
Pfeilrichtung an:
– Die Klasse, von der der Pfeil ausgeht, hat eine Variable
der anderen Klasse mit deren Rollenname
Quelle: Professor Bernd Brügge, Ph.D, SS2001, Einführung in die Informatik 2
11
Vom Klassendiagramm zum Java Code
• Beispiele für die Übersetzung der Multiplizität an einen
Assoziationsende:
– 1 wird übersetzt durch eine Variable, die auch
instantiiert sein muss
– * wird übersetzt durch eine Variable, die beliebig viele
Objekte beinhalten kann, also ein Objekt vom Typ einer
Sammlungs-Klasse (collection)
• Reihung
• Sequenz
• Baum
• Java.util.Vector
Quelle: Professor Bernd Brügge, Ph.D, SS2001, Einführung in die Informatik 2
Übersetzung von Methoden im
Klassen-Diagramm
• Aus einer Beschreibung einer Methode im UMLKlassendiagramm (Implementierungsmodell) kann man
folgende Informationen zur Code-Generierung entnehmen:
– Name der Methode
– Parameter
– Ergebnistyp, falls vorhanden
– Modifikatoren (private, protected, public, abstract)
– Art der Methode:
• Instanz-Methode oder Klassen-Methode
Quelle: Professor Bernd Brügge, Ph.D, SS2001, Einführung in die Informatik 2
12
Übersetzung von Vererbung im
Klassendiagramm
• Beide Arten von Vererbung in UML haben ein Gegenstück in Java:
• Implementierungsvererbung Æ Unterklassenbildung
• Code der Oberklasse wird nicht geändert
• Schlüsselwort extends in Unterklasse
•
•
•
•
Schnittstellenvererbung Æ Implementierungsklassen,
Code der Schnittstelle bzw. abstrakten Klasse wird nicht geändert
Konkretisierung von abstrakten Klassen
Schlüsselwort implements in Implementierungsklasse bzw.
Konkretisierung von abstrakten Methoden
Quelle: Professor Bernd Brügge, Ph.D, SS2001, Einführung in die Informatik 2
Probleme der Übersetzung der
Mehrfachvererbung in Java
• Mehrfachvererbung ist in Java nicht erlaubt
• Lösung:
– Komposition/Aggregation: von einer oder gewünschten
Klassen wird eine Instanzvariable angelegt
– Delegation: für jedes gewünschte Merkmal der
aggregierten Klasse wird eine Methode definiert
(eventuell sogar gleichen Namens), in der auf der
Instanzvariable die entsprechende Methode aufgerufen
wird. Der Aufruf wird also weitergegeben. Diese
Weitergabe bezeichnet man als Delegation.
13
Beispiel für die Lösung von
Mehrfachvererbung
Beispiel für die Lösung von
Mehrfachvererbung
class Sicht extends java.awt.Button implements
ModelChangeListener{
//Komposition
private java.awt.Textfiel field;
//Delegation
public String getText(){
return field.getText();
}
}
Quelle: Professor Bernd Brügge, Ph.D, SS2001, Einführung in die Informatik 2
14
Beispiel für ein
Klassendiagramm
Vom Klassendiagramm zum Java
Code
public class Kunde{
Korb korb;
Rechnung rechnung;
Katalaog katalog;
public Nummer kreditKartenNr(){}
}
15
Vom Klassendiagramm zum Java
Code
public class Rechnung{
Kunde kunde;
public String versandArt(){}
public Daten kreditKartenDaten(){}
public Rechnung erstelle(){}
}
Vom Klassendiagramm zum Java
Code
public class Katalog{
java.util.Vector artikel;
public void stoebern(){}
}
16
Vom Klassendiagramm zum Java
Code
public class Artikel{
Katalog katalog;
Korb korb;
public Artikel auswaehlen(){}
}
Vom Klassendiagramm zum Java
Code
public class Korb{
java.util.Vector artikel;
public void hineinlegen(){}
public void kaufBestaetigen(){}
}
17
Sequenzdiagramme
• Zeigt die Interaktion der Objekte in ihrer
zeitlichen Abfolge
• Im Vordergrund steht die Lebenszeit der
Objekte im Bezug auf bestimmte Abläufe
Beispiel für ein Sequenzdiagramm
18
Vom Sequenzdiagramm nach Java
• Nachrichten werden in Java in Form von
Methoden bzw. Methodenaufrufen implementiert
• Für die Übersetzung in Programmcode sind
folgende Punkte zu überlegen:
• Wo wird der Code platziert? (in welchen
Methoden?)
• Auf welchen Objektinstanzen wird ein
Methodenaufruf durchgeführt?
• Unter welchen Bedingungen findet dieses Szenario
statt?
Java Code zum SequenzDiagramm
•
class Kunde{
...
f.Stoebern();
a.Auswaehlen();
b.Hineinlegen();
r.Versandart();
r.KreditkartenDaten();
b.Kaufbestaetigen();
}
•
class Katalog {
...
stöbern()
...
}
19
Java Code zum SequenzDiagramm
•
class Artikel{
...
auswaehlen()
...
}
•
class Korb{
...
hineinlegen()
...
kaufBestaetigen()
...
}
Java Code zum SequenzDiagramm
•
class Rechnung{
...
versandart()
...
kreditkartenDaten()
...
erstellen()
...
pruefe()
...
}
20
Das Paketdiagramm
Dient
– Strukturierung des Systems
– Beschreibung von Abstraktionen
– Gliederung von Klassendiagrammen
Antwort auf die Frage:
Wie kann ich das Modell so darstellen, dass
ich den Überblick bewahre?
Funktion
Das Paketdiagramm
• Bündelt zusammenhängende Klassen in ein Paket
Æ vereinfachte, abstrakte Sicht auf System
• Mehrere Abstraktionsebenen sind möglich
ÆHierarchische Paketschachtelung
Æ1 Paket kann aus anderen, detaillierteren Paketen
bestehen
Vorteil: Wiederverwendbarkeit von Paketen
21
Beispiel für ein Paket-Diagramm
Deployment Diagramm
• zur Darstellung der Hardware
• Bestandteile eines Deployment-Diagramms:
– Knoten
– physikalische Verbindungen
22
Beispiel für ein DeploymentDiagramm
Weiterführende Links / Literatur
•The Unified Modeling Language User Guide Booch,
Rumbaugh, Jacobsen, Addis-Wesley(1999)
•Rational-Homepage: www.rational.com
•Tutorial Uni Wien :
http://qse.ifs.tuwien.ac.at/courses/SE1/UML_Tutorial_20040
308.pdf
•UML konzertriert Fowler,Scott,Addis-Wesley(2000)
•www.oose.de
23