Programmiermethodik SS 07 Prof. Albert Zündorf Fachgebiet für Software Engineering Wilhelmshöher Allee 73 34121 Kassel (Raum 1339 im Altbau)
Organisatorisches Umfang: 4 SWS teils Vorlesungen teils Übungen Übungsbetreuung: Christian Schneider, Ira Diethelm, Ruben Jubeh und Tutoren Ort und Zeit: Vorlesung: Dienstags 12:00 - 13:30 Raum 0446 (Erste Vorlesung: 17.04.06) Übung: Freitags 13:00 - 18:00 , Raum -1201 (CIP Pool unter der Mensa) (Erste Übung: Freitag, den 20.04.2006) Prüfung: Pflichtübungsaufgaben (korrigiert, unbenotet, Voraussetzung zur Klausur) Klausur in der vorlesungsfreien Zeit Folienskript: http://www.se.eecs.uni-kassel.de hoffentlich am Wochende vorher. Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Literatur Grundlegend: Helmut Balzert: Lehrbuch der Software-Technik (Bd.\ 1 und 2), Spektrum Akademischer Verlag 1996 (viele Details, sehr umfassend, eher ein Nachschlagewerk) Unified Modeling Language: Grady Booch, James Rumbaugh, Ivar Jacobson: The Unified Modeling Language - User Guide, Addison Wesley 1999 (die haben das erfunden) Jochen Seemann, Jürgen Wolff von Gudenberg: Software Entwurf mit UML; Springer 2000 (finde ich ziemlich gut) Martin Hitz, Gerti Kappel: UML @ Work, dpunkt.verlag (ziemlich gut) Albert Zündorf: Rigorous Software Development with UML, Draft, Fachgebietsseiten Hintergrund: Frederick P.\ Brooks: The Mythical Man Month, Addison Wesley 1975 (ist nur kurz aber ziemlich witzig, unbedingt mal lesen) Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Gliederung Einführung Objektdiagramme zur Analyse von Beispielen Methodenentwurf Test-First Prinzip Story Driven Modeling Zusammenfassung Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
1. Einführung Ziele der Veranstaltung: methodische Vorgehensweise zur Entwicklung größerer Programme (> 10000 LOC) objektorientierte Programmierung objektorientierte Modellierung objektorientierte Szenarios Test-First Prinzip Unified Modeling Language Story Driven Modeling Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Motivation: rettet Prinz(essin) Ada Aufgabe: Wegesuche Handicaps: Räume kosten genaue Geldmenge ausgeben versteckte Geschenke Fallen . . . Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Rette Ada, dann mal los Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Rette Ada naiv public class RetteAda { int[] raumkosten = {1,2,3,4,5,6,7,8,9,10,11,12,13}; int[][] tueren = { {0,1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,1,0,1,0,0,0}, {0,0,0,1,0,0,0,0,0,0,0,0,0}, {1,0,0,0,0,0,0,1,0,1,0,0,0}, {1,0,0,0,0,0,0,1,0,1,0,0,0}, {1,0,0,0,0,0,0,1,0,1,0,0,0}, {1,0,0,0,0,0,0,1,0,1,0,0,0}, {1,0,0,0,0,0,0,0,0,1,0,0,0}, {1,0,0,0,0,0,0,0,0,1,0,0,0}, {1,0,0,0,0,0,0,1,0,0,0,0,0}, {1,0,0,0,0,0,0,1,0,1,0,0,0}}; int[] geschenkeOrt = {6, 1, 9}; String [] geschenkeNamen = {"Blumen", "Ringe", "Pralinen"}; int prinzOrt = 5; int prinzessinOrt = 13; float geld = 99; int[] hatGeschenk = {0,0,0}; . . . Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Objektorientierte (Daten)Modellierung int [] reicht zur Datenmodellierung NICHT aus Objekte für Räume, Personen, Geschenke , Fallen … einführen Objektdiagramme zur Analyse von Beispielen Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Rette Ada objektorientiert Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Rette Ada objektorientiert tuer r1 kosten = 1 r2 kosten = 2 r3 kosten = 3 p1 name = "Ada" p2 name = "Prinz" geld = 99 in tuer tuer tuer tuer r4 kosten = 0 r5 kosten = 10 r6 kosten = 4 in tuer tuer tuer r8 kosten = 8 r9 kosten = 5 r7 kosten = 12 tuer tuer tuer tuer tuer r13 kosten = 6 tuer r11 kosten = 9 r10 kosten = 11 r12 kosten = 7 Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Objekte klassifizieren tuer r1 kosten = 1 r2 kosten = 2 r3 kosten = 3 p1 name = "Ada" p2 name = "Prinz" geld = 99 in tuer tuer tuer tuer r4 kosten = 0 r5 kosten = 10 r6 kosten = 4 in tuer tuer tuer r8 kosten = 8 r9 kosten = 5 r7 kosten = 12 tuer tuer tuer tuer tuer r13 kosten = 6 tuer r11 kosten = 9 r10 kosten = 11 r12 kosten = 7 Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Objekte klassifizieren tuer r1 :Raum kosten = 1 r2 :Raum kosten = 2 r3 :Raum kosten = 3 p1 :Person name = "Ada" p2 :Person name = "Prinz" geld = 99 in tuer tuer tuer tuer r4 :Raum kosten = 0 r5 :Raum kosten = 10 r6 :Raum kosten = 4 in tuer tuer tuer r8 :Raum kosten = 8 r9 :Raum kosten = 5 r7 :Raum kosten = 12 tuer tuer tuer tuer tuer r13 :Raum kosten = 6 tuer r11 :Raum kosten = 9 r10 :Raum kosten = 11 r12 Raum kosten = 7 Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Klassen als Baupläne für Objekte Person name : String tuer in in Geschenk name : String Raum kosten : Integer Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Ausblick Übung am Freitag um 13 Uhr im CIP Pool: Objektdiagramme selber entwerfen Klassendiagramm ableiten Vorlesung am Dienstag den 24.4.2007: Klassen in Java implementieren Objektstrukturen mit Java Programmen erzeugen Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel