Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1....

20
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

Transcript of Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1....

Page 1: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 2: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 3: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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.

Page 4: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 5: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 6: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 7: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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 . . .

Page 8: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 9: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 10: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 11: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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"

Page 12: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 13: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 14: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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

Page 15: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 15

Page 16: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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}

Page 17: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

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)

Page 18: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 18

Page 19: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 19

Page 20: Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.

Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 20