programmiermethodik ss2010 © 2010 albert zündorf, university of kassel 1 gesamtvorgehen 1....
TRANSCRIPT
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1
Gesamtvorgehen
1. Textuelle Szenarios
2. Objektdiagramme
3. Klassendiagramm
4. Implementierung des Datenmodells
5. Implementierung der Szenarios als JUnit Tests
6. Textuelle Algorithmen
7. Story Diagramme
8. Implementierung der Algorithmen
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 2
Motivation: Study-Right University
Aufgabe:
Wegesuche
Handicaps:
Motivationspunkte
Pro Credit eine Motivation
214 Credits erreichen
Pflichtkurse
Modulabhängigkeiten
. . .
29
20 17 35
17
ExaminationBoard
Student Karli
Study-RightUniversity
32
23
mathcalculusstochastic
modeling modern arts
algebra
exam
philosophy
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 3
1. Textuelle Szenarios
Start: Karli is in the math room. She has still 197 points motivation and she has already gained 17 credits
1. Karli moves to the modeling room.
2. Karli earns 29 credits and consumes 29 points of her motivation.
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 4
Objekte klassifizieren
r4topic = "exam"
29
20 17 35
17
ExaminationBoard
Student Karli
Study-RightUniversity
32
23
mathcalculusstochastic
modeling modern arts
algebra
exam
philosophy
r3topic = "stochastic"credits = 23
r2topic = "calculus"credits = 20
r1topic = "math"credits = 17
r8topic = "algebra"credits = 35
r7topic = "philosophy"credits = 32
r5topic = "modeling"credits = 29
r6topic = "modern arts"credits = 17
rwkarlimotivation = 197credits = 17
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 5
Objekte klassifizieren
r4 : Roomtopic = "exam"credits = 0
r3 : Roomtopic = "stochastic"credits = 23
r2 : Roomtopic = "calculus"credits = 20
r1 : Roomtopic = "math"credits = 17
r8 : Roomtopic = "algebra"credits = 35
r7 : Roomtopic = "philosophy"credits = 32
r5 : Roomtopic = "modeling"credits = 29
r6 : Roomtopic = "modern arts"credits = 17
rw : Roomtopic = "real life"credits = 0
karli : Studentmotivation = 197credits = 17
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 6
Klassen als Baupläne für Objekte
in
doors
Room
topic : Stringcredits: Integer
Student
motivation : Integercredits: Integer
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 7
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 . . .
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 8
Implementierung:
public class Room {
}
Room
…
Room r = new Room ();…
r = new Room ();…
:Room
:Room
Struktur
Daten Verhalten
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 9
Implementierung:
public class Room {
…
public int credits;
…}
Room
credits : Integer
…
if (r. credits <= 0)
{
r. credits = 12;
}
…
:Room credits = 5
:Room credits = -1
Struktur
Daten Verhalten
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 10
Implementierung:
public class Room {
public void teach (Student s){
…}…
}
Room
teach (s :Student)
…
r.teach (s);
…r.teach (s);…
:Room credits = 8
:Student motivation = 50
:Room credits = 12
:Student motivation = 100
Struktur
Daten Verhalten
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 11
Implementierung:
public class Professor {
Room in;
}
public class Room
{
Professor prof;}
Professorprof 0..1
located
in 0..1
…oldRoom = new Room ();…newRoom = new Room ();myProf = new Professor ();newRoom.topic = "history";
myProf.in = newRoom;newRoom.prof = myProf;…
Room
topic :String
:Professor
:Room topic = "modeling"
Struktur
Daten Verhalten
:Room topic = "math"
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 12
Implementierung:
public class Professor {
Room in;
}
public class Room
{
Professor prof;}
Professorprof 0..1
located
in 0..1
…if (myProf.in != null) {
profRoom = myProf.in; int profCredits = profRoom.credits;
if (profCredits > 40) { System.out.println("this is a VIP prof");…
Room
topic :String
:Professor
:Room topic = "modeling"
Struktur
Daten Verhalten
:Room topic = "math"
located
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 13
Implementierung:
import java.util.*;public class University {
Set rooms;}
public class Room{
University uni;}
…u.rooms.add (r);r.uni = u;…
u.rooms.add (r);r.uni = u;;…
Struktur
Daten Verhalten
:Room credits = 8
:Room credits = 12
:University
:University
Universityuni 0..1
rooms
rooms 0..n
Room
credits :Integer
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 14
Implementierung:
…for (Room r : u.rooms ){ u.teaching = u.teaching + r.credits;}…
Struktur
Daten Verhalten
:Raum kosten = 8
:Raum kosten = 12
:Person geld = 50
:Person geld = 100
in in
import java.util.*;public class University {
Set rooms;}
public class Room{
University uni;}
uni 0..1
rooms
rooms 0..n
Room
credits :Integer
University
teaching :Integer
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 15
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 16
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}
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 17
"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)
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 18
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 19
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 20