Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1
4. Methodenentwurf
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 SS2007 © 2007 Albert Zündorf, University of Kassel 2
Zu-N Assocs und Container-Klassen:
Person Raumgaeste in0..n 0..1
in import java.util.*;public class Raum{
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
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 3
Methodenentwurf:
1. Beispiel auf Anwendungsebene anschauen
2. Beispiel in Objektdiagrammen / Story Boards modellieren
3. allgemeines Verhalten auf Anwendungsebene skizzieren
4. allgemeines Verhalten auf Objektebene skizzieren
5. allgemeines Verhalten programmieren
6. programmiertes Verhalten an Ausgangsbeispiel testen
7. programmiertes Verhalten an alternativen Beispielen testen
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 4
Motivation: rettet Prinz(essin) Ada
Aufgabe: Raum bezahlen
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 5
Operation payRoom
t3 :Tuerlocked = true
r2 :Raumkosten = 0
t5 :Tuerlocked = false
r6 :Raumkosten = 10
p1 :Personname = "Ada"
in
r4 :Raumkosten = 12
hat hat
hathat
hat
p7 :Person
name = "Prinz"budget = 42
oeffnet
s9 :Schluessel
hat
r12 :Raumkosten = 1
t10 :Tuerlocked = true oeffnet
s8 :Schluessel
in
hat
hat
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 6
Motivation: rettet Prinz(essin) Ada
Aufgabe: Tür öffnen
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 7
Operation openDoor
t3 :Tuerlocked = true
r2 :Raumkosten = 0
t5 :Tuerlocked = false
r6 :Raumkosten = 10
p1 :Personname = "Ada"
in
r4 :Raumkosten = 12
hat hat
hathat
hat
p7 :Person
name = "Prinz"budget = 30
oeffnet
s9 :Schluessel
hat
r12 :Raumkosten = 1
t10 :Tuerlocked = true oeffnet
s8 :Schluessel
in
hat
hat
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 8
Operation openDoor
t3 :Tuerlocked = true
r2 :Raumkosten = 0
t5 :Tuerlocked = false
r6 :Raumkosten = 10
p1 :Personname = "Ada"
in
r4 :Raumkosten = 12
hat hat
hathat
hat
p7 :Person
name = "Prinz"budget = 30
oeffnet
s9 :Schluessel
hat
r12 :Raumkosten = 1
t10 :Tuerlocked = true oeffnet
s8 :Schluessel
in
hat
hat
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 9
Motivation: rettet Prinz(essin) Ada
Aufgabe: Dinge sammeln
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 10
Operation collectItems
t15 :Tuerlocked = false
r16 :Raumkosten = 8
r14 :Raumkosten = 2
hathat
in
p7 :Person
name = "Prinz"budget = 23
s9 :Schluessel
s8 :Schluessel
in
g13 :Geschenkart = "Ringe"
in in
g17 :Geschenkart = "Blumen"
in
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 11
Klassen als Baupläne für Objekte
Raumkosten : Integer
in
Geschenkname : String
in Tuerlocked : Boolean
Schluessel
inoeffnet
hat
hat
Person
name : Stringgeld : Integer
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 12
Motivation: rettet Prinz(essin) Ada
Aufgabe: kürzesten Weg suchen
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 13
Rette Ada objektorientiert
r1kosten = 1
r2kosten = 2
r3kosten = 3
r4kosten = 0
r7kosten = 12
r5kosten = 10
r10kosten = 11
r11kosten = 9
r8kosten = 8
r12kosten = 7
r13kosten = 6
r9kosten = 5
t2 :Tuer
p1name = "Ada"
p2name = "Prinz"geld = 99
t3 :Tuer t4 :Tuer
t13 :Tuer
t14 :Tuer
t12 :Tuer
t11 :Tuer
t10 :Tuer
t9 :Tuert7 :Tuer
t6 :Tuer
t5 :Tuer
in
in
t1:Tuer
t8 :Tuer
r6kosten = 4
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 14
Rette Ada objektorientiert
r1kosten = 1
r2kosten = 2
r3kosten = 3
r4kosten = 0
r7kosten = 12
r5kosten = 10
r10kosten = 11
r11kosten = 9
r8kosten = 8
r12kosten = 7
r13kosten = 6
r9kosten = 5
t2 :Tuer
p1name = "Ada"
p2name = "Prinz"geld = 99
t3 :Tuer t4 :Tuer
t13 :Tuer
t14 :Tuer
t12 :Tuer
t11 :Tuer
t10 :Tuer
t9 :Tuert7 :Tuer
t6 :Tuer
t5 :Tuer
in
in
t1:Tuer
t8 :Tuer
r6kosten = 4
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 15
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 16