18
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von Beispielen 3. Klassendiagramme in Java implementieren 4. Methodenentwurf 5. Test-First Prinzip 6. Story Driven Modeling 7. Zusammenfassung

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Embed Size (px)

Citation preview

Page 1: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1

3. Klassendiagramme in Java implementieren

Gliederung:

1. Einführung

2. Objektdiagramme zur Analyse von Beispielen

3. Klassendiagramme in Java implementieren

4. Methodenentwurf

5. Test-First Prinzip

6. Story Driven Modeling

7. Zusammenfassung

Page 2: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 2

Motivation: rettet Prinz(essin) Ada

Aufgabe:

Wegesuche

Handicaps:

Räume kosten

genaue Geldmenge ausgeben

versteckte Geschenke

Fallen

. . .

Page 3: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 3

Alternative Modellierungen

t3 :Tuerlocked = true

r2 :Raumkosten = 0

t5 :Tuerlocked = false

r6 :Raumkosten = 10

p1 :Personname = "Ada"

in

r4 :Raumkosten = 12

hat

hat

s7 :Schluessel

in

hat hat

oeffnet

Page 4: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 4

Klassen als Baupläne für Objekte

Raumkosten : Integer

in

Geschenkname : String

in Tuerlocked : Boolean

Schluessel

in oeffnet

hat

hat

Person

name : Stringgeld : Integer

Page 5: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 5

Klassendiagramme

"Syntax" von Klassendiagrammen:

kommt gleich

Semantik von Klassendiagrammen aus extensionaler Sicht:

Menge aller "gültigen" Objektdiagramme / Momentaufnahmen und Szenarios (siehe Verhaltensdiagramme)

ein Objektdiagramm / eine Momentaufnahme ist "gültig" wenn: alle verwendeten Klassen sind deklariert alle benutzten Attribute sind deklariert und werden typkonform verwendet für jeden Link gibt es eine Assoziation zwischen den entsprechenden

Klassen die Kardinialiätsangaben der Assoziationen werden nicht verletzt . . .

Page 6: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 6

Implementierung:

public class Raum {

}

Raum

Raum r = new Raum ();…

r = new Raum ();…

:Raum

:Raum

Struktur

Daten Verhalten

Page 7: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 7

Implementierung:

public class Raum {

public int kosten;

…}

Raum

kosten : Integer

if (r.kosten <= 0)

{

r.kosten = 12;

}

:Raum kosten = 5

:Raum kosten = -1

Struktur

Daten Verhalten

Page 8: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 8

Implementierung:

public class Raum {

public void kassieren (Person p){

…}…

}

Raum

kassieren (p:Person)

r.kassieren (p);

…r.kassieren (p);…

:Raum kosten = 8

:Person geld = 50

:Raum kosten = 12

:Person geld = 100

Struktur

Daten Verhalten

Page 9: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 9

Implementierung:

public class Schluessel {

Tuer tuer;

}

public class Tuer

{

Schluessel oeffner;

}

Schluesseloeffner 0..1

oeffnet

tuer 0..1

…t = new Tuer ();…t = new Tuer ();s = new Schluessel ();t.locked = true;

s.tuer = t;t.oeffner = s;…

Tuer

locked :Boolean

:Schluessel

:Tuer locked = false

Struktur

Daten Verhalten

:Tuer locked = false

Page 10: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 10

Implementierung:

public class Schluessel {

Tuer tuer;

}

public class Tuer

{

Schluessel oeffner;

}

Schluesseloeffner 0..1

oeffnet

tuer 0..1

…if (t.locked){ Schluessel s = t.oeffner; if (s.besitzer == p) {…

Tuer

locked :Boolean

:Schluessel

:Tuer locked = false

Struktur

Daten Verhalten

:Tuer locked = false

oeffnet

Page 11: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 11

Implementierung:

Person

Raum

gaeste 0..n

in

in 0..1

public class Person {

Raum in;}

import java.util.*;public class Raum{

List gaeste;}

…p.in = r;r.gaeste.add (p);…

p.in = r;r.gaeste.add (p);…

Struktur

Daten Verhalten

:Raum kosten = 8

:Raum kosten = 12

:Person geld = 50

:Person geld = 100

Page 12: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 12

Implementierung:

Person

Raum

gaeste 0..n

in

in 0..1

public class Person {

Raum in;}

import java.util.*;public class Raum{

List gaeste;}

…for (Person p : r.gaeste ){ p.geld = p.geld – r.kosten;}…

Struktur

Daten Verhalten

:Raum kosten = 8

:Raum kosten = 12

:Person geld = 50

:Person geld = 100

in in

Page 13: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 13

Rette Ada objektorientiert

Page 14: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 14

Syntax von Klassendiagrammen (UML)

is_a

A B

association assocr1 r2

key

1..*1..2, 4

optionally with roles

exactly onemany (0 - n)

optional (0 - 1)

one or more

{ordered}

qualification

aggregation

ordering

A BD

link attrs

association as class:

B C

D

BA

C

r1 r2

r3

ternary (n-ary) association:

*0..1

«uses»

«friend»

{overlapping}

dependency

composition

navigability

dependencystereotypes

several intervals

unknown number1

refinement (generic instance)

assoc{sorted}

Page 15: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 15

"Syntax" von Objektdiagrammen:

id1 :Class linkname

«Actor»id3 : Controller

attr1 : int == 10attr2 == value[state]

Klasse des Objekts

id2

:Class

Objektbezeichner

Objekt

Waisenobjekt

anonymes Objekst

Stereotyp / "Objektklass if ikation"(Stereotyp kann auch graphisch dargestellt werden)

id3 : Controller

attr1 : int == 10attr == value[state]

Attributwerte

Zustand

benannter Link

unbenannter Link

id1 :Classset1 :Class

Multiobjekt(Menge, Gruppe von Objekten)

Page 16: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 16

Page 17: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 17

Page 18: Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 3. Klassendiagramme in Java implementieren Gliederung: 1. Einführung 2. Objektdiagramme

Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 18