UML – Eine kurze Einführung - DBIS

Transcrição

UML – Eine kurze Einführung - DBIS
UML – Eine kurze Einführung
Programmiermethodik
Eva Zangerle
Universität Innsbruck
Überblick
Einführung
Allgemeine Grundlagen
Java – Ein erster Überblick
Vererbung und Polymorphismus
Objekte und Klassen
Klassen, Objekte und Methoden in
Java
String-Klasse
Ausnahmebehandlung
Wrapper-Klassen
Pakete und Javadoc
UML – Eine kurze Einführung
Objektorientierung
Spezielle Themen
Generische Programmierung
Java Collection-Framework
Streams
Unit-Tests
Entwurfsmuster - Eine Einführung
GUI-Programmierung
Java Virtual Machine
Ausblick
Programmiermethodik - Objektorientierung
2
Modell und Diagramm
• Ein Modell stellt Abstraktion eines Realitätsausschnitts dar.

Um Informationen verständlicher darzustellen
 Analog zum Erstellen von Bauplänen von Gebäuden


Um essentielle Systemaspekte aufzuzeigen
Zur Kommunikation
 Mit Projektmitarbeitern
 Mit Kunden

Um komplexe Architekturen darstellen zu können
• Ein Diagramm ist die grafische Repräsentation eines Modells.
Sicht
Programmiermethodik - Objektorientierung
Modell
Sicht
Realitätsausschnitt
3
Unified Modeling Language (UML)
• Die Unified Modeling Language (UML) ist eine
standardisierte ausdruckstarke Modellierungssprache.
• Mit Hilfe der UML können Softwaresysteme besser
entworfen, analysiert und dokumentiert werden.
• Begriff Unified bedeutet


Unterstützung des gesamten Entwicklungsprozesses.
Unabhängigkeit von Entwicklungswerkzeugen, sowie
Programmiersprachen oder auch Anwendungsbereichen.
• Die UML ist aber nicht



ein Allheilmittel und vollständig,
ein vollständiger Ersatz für eine Textbeschreibung,
eine Methode oder Vorgehensmodell.
Programmiermethodik - Objektorientierung
4
Diagrammarten (1)
• Etliche unterschiedliche Diagrammarten
• Klassendiagramm (in dieser Vorlesung)

Beschreibt den strukturellen Aspekt (Klassen, Interfaces,
Beziehungen).
• Sequenzdiagramm (in der Vorlesung über Entwurfsmuster)


Beschreibt komplexe Interaktionen zwischen Objekten in bestimmten
Rollen.
Beschreibt die zeitliche Abfolge dieser Interaktionen.
• viele mehr (z.B. Business Prozesse, Use Case-Diagramme,
etc.)
Programmiermethodik - Objektorientierung
5
Diagrammarten (2)
Grafik übernommen von http://de.wikipedia.org/wiki/Unified_Modeling_Language
Programmiermethodik - Objektorientierung
6
Notation für Klassen (Übersicht)
Sprachkonzept
Klasse
Klasse mit Abschnitten
Notation
Name
Name
Attribut1
Attribut2
Operation1
Operation2
Programmiermethodik - Objektorientierung
7
Klassen (Attribute)
• Sichtbarkeit für Attribute und Operationen




+ = public
# = protected
- = private
~ = default
• Instanzattribute oder Klassenattribute

Klassenattribute werden unterstrichen
• Zusätzliche Eigenschaften angeben




<<readOnly>>
<<ordered>>
<<unique>>
<<redefines <Operationsname>>>
Programmiermethodik - Objektorientierung
8
Klassen (Multiplizität)
• Multiplizität von Attributen

Spezifiziert wie viele Werte ein Attribut aufnehmen kann.
 Attribut:Typ[a..b]

a..b
 mindestens a .. höchstens b
 a und b sind natürliche Zahlen
 * statt b bedeutet beliebig viele

Beispiele
 1..1
 0..1
 0..*
 1..*
genau ein (entspricht 1)
Null oder ein
beliebig viele (entspricht *)
beliebig viele aber zumindest ein
Programmiermethodik - Objektorientierung
9
Beispiele
Alle Attribute
sind privat
Stack
-max_si ze : int
-top : int
-stackArr : int [0..*]
<<constructor>>+Stack( max_size : int )
+push( element : int )
+pop() : int
+isEmpty() : boolean
+length() : i nt
U ser
User kann mehrere
Passwörter haben
-name : Stri ng [1]
-key : Password [1..*]
Alle Operationen
sind öffentlich
Bereiche (hier
Operationen) können
auch leer bleiben
<<enumeration>>
C o lo r
RED
BLUE
GREEN
BLACK
Datentypen
oder Enumerations
Programmiermethodik - Objektorientierung
10
Klassen (Operationen)
• Obligate Angabe einer (eventuell leeren) Parameterliste für
jede Operation.
• Für jeden Parameter muss zumindest der Name und sein Typ
angegeben werden (auch Multiplizität).
• Auch Rückgabetyp möglich (wenn nichts angegeben – void).
• Unterstreichen kennzeichnet Klassenoperationen.
• Sichtbarkeit wie bei Attributen
• Zusätzliche Eigenschaften





<<abstract>> (oder kursiv geschrieben)
<<leaf>> (wenn final)
<<raisedException>> (wie throws)
<<enumeration>>
<<constructor>>
• Hinweise auf Algorithmen können in einer Notiz angefügt
werden.
Programmiermethodik - Objektorientierung
11
Assoziation
• Grundform (binäre Assoziation)
A
B
• Zusätzliche Angaben

Benennung
 In der Mitte der Kante (Anzeigen der Leserichtung durch Pfeil möglich)



Rollen (an den Enden der Assoziation, spezifische Funktion angeben)
Multiplizitäten (an den Enden, wie bei Attributen)
Angabe von Eigenschaften
 {ordered}
 {unique}
…

Navigationsangaben
 Zulässige Navigationsrichtung (durch Pfeil)
 Keine Navigation erlaubt (durch X)
Programmiermethodik - Objektorientierung
12
Beispiele
has
U ser
has
U ser
Passwo rd
-key
Passwo rd
*
U ser
-owner
has
1
-key
Reflexive
Assoziation
Passwo rd
*
So rted I ntL ist
<<constructor>>+SortedIntLi st()
+insert( element : i nt )
+print()
Node
*
-next
-first
-data : int
0..1
<<constructor>>+Node( data : i nt )
0..1
*
Programmiermethodik - Objektorientierung
13
Beispiel (Java Umsetzung – Grundformen)
U ser
-owner
1
has
-key
Passwo rd
*
U ser
has
-key
Passwo rd
*
public class User{
private Password[] key;
…
}
public class User{
private Password[] key;
…
}
public class Password{
private User owner
…
}
public class Password{
…
…
}
Programmiermethodik - Objektorientierung
14
Beispiel (Java Umsetzung)
B o rr o wer
-currentBorrower
0..1
public class Borrower{
private Book[] borrowedBooks;
private int numBooks;
...
public Borrower(){
numBooks = 0;
borrowedBooks = new Book[5];
}
borrows
-borrowedBooks
Book
5
public class Book{
private Borrower currentBorrower;
...
public void setBorrower(Borrower bw){
currentBorrower = bw;
}
}
public void borrowBook(Book b){
...
borrowedBooks[numBooks] = b;
numBooks++;
b.setBorrower( this );
...
}
}
Programmiermethodik - Objektorientierung
15
Aggregation
• Ist eine spezielle Assoziation (Teile-Ganzes-Beziehung).
• Komposition ist eine speziellere (strengere) Form der
Aggregation mit folgenden Einschränkungen.


Ein Teil darf Kompositionsteil höchstens eines Ganzen sein.
Multiplizität 1 bedeutet, dass das Teil nur solange existiert wie sein
Ganzes.
• Beispiele
has
C o mp an y
1
Aggregation
In vo ice li n e item
Komposition
1..*
has
In vo ice
D ivisi on
1
1..*
Rechnungsposition existiert nur mit
der Rechnung
Programmiermethodik - Objektorientierung
16
Beispiel (Java Umsetzung)
C ar
has
-wheels
W h eel
4
public class Car {
private Wheel[] wheels;
...
public Car(Wheel r1, Wheel r2, … ) {
wheels = new Wheel[4];
wheels[0] = r1;
wheels[1] = r2;
…
}
}
Programmiermethodik - Objektorientierung
C ar
has
-fixedWheels
W h eel
4
public class Car {
private Wheel[] fixedWheels;
...
public Car(){
fixedWheels = new Wheel[4];
fixedWheels [0] = new Wheel();
fixedWheels [1] = new Wheel();
…
}
...
}
17
Vererbung, Schnittstellen
Programmiermethodik - Objektorientierung
18
Programmiermethodik - Objektorientierung
19