Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster

Größe: px
Ab Seite anzeigen:

Download "Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster"

Transkript

1 Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster Tutorium 7 iloveswt.de Fabian I. Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

2 Übungsblatt 4 1 Debuggen 2 Benutztrelation image ist selbst kein Modul 3 GUI für Kantendetektoren schreiben Zeitpunkt von setvisible(true) wichtig, setjmenubar(...) vorher aufrufen 4 Klassendiagramm aus Text 5 Kovarianz, Überdecken Gibt es Überdeckung bei Methoden? Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

3 Übungsblatt 4 1 Debuggen 2 Benutztrelation image ist selbst kein Modul 3 GUI für Kantendetektoren schreiben Zeitpunkt von setvisible(true) wichtig, setjmenubar(...) vorher aufrufen 4 Klassendiagramm aus Text 5 Kovarianz, Überdecken Gibt es Überdeckung bei Methoden? Ja, aber nur wenn statisch Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

4 Übersicht 1 Entkopplungsmuster Adapter Beobachter Brücke Iterator Stellvertreter Vermittler 2 Variantenmuster Abstrakte Fabrik Besucher Fabrikmethode Kompositum Schablonenmethode Strategie Dekorierer 3 Zustandshandhabungs-Muster Einzelstück Fliegengewicht Memento Prototyp Zustand 4 Steuerungsmuster Befehl Master/Worker (Master/Slave) 5 Virtuelle Maschinen 6 Bequemlichkeitsmuster Bequemlichkeits-Klasse Bequemlichkeits-Methode Fassade Null-Objekt Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

5 Wiederholung Adapter Klient Ziel operation() adaptiertes Objekt AdaptierteKlasse spezifischeoperation() Klient Ziel operation() AdaptierteKlasse spezifischeoperation() könnte nur Schnittstelle sein. könnte nur Schnittstelle sein. Adapter Adapter operation() adaptiertesobjekt.spezifischeoperation() operation() spezifischeoperation() Adaptiert unpassende Schnittstelle Dient nicht der Bequemlichkeit Unterscheidung zwischen Objekt- und Klassenadapter Klient, Ziel, Adapter, AdaptierteKlasse, operation(), spezischeoperation() Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

6 Wiederholung Beobachter Subjekt meldean(:beobachter) meldeab(:beobachter) benachrichtige() beobachter Beobachter 1 * aktualisiere() für alle b in beobachter { b.aktualisiere() } KonkreterBeobachter KonkretesSubjekt subjektzustand gibzustand() setzezustand() subjekt return subjektzustand beobachterzustand aktualisiere() beobachterzustand = subjekt.gibzustand() Funktioniert nach Abonnenten-Prinzip Beobachter müssen sich bei zu beobachtendem Subjekt anmelden Subjekt, Beobachter, KonkretesSubjekt, KonkreterBeobachter, meldean(:beobachter), meldeab(:beobachter), benachrichtige(), aktualisiere(), subjektzustand, gibzustand(), setzezustand(), beobachterzustand, beobachter, subjekt Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

7 Wiederholung Vermittler Vermittler vermittler Kollege KonkreterVermittler KonkreterKollege1 KonkreterKollege2 Vermittelt komplexes Verhalten zwischen Objekten Macht Interaktion zwischen Objekten austauschbar Vermittler wird über Änderungen bei Kollegen ähnlich informiert wie Beobachter Vermittler, Kollege, KonkreterVermittler, KonkreterKollege1, KonkreterKollege2, vermittler Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

8 Übersicht Entkopplungsmuster Varianten: Sinn: Adapter Beobachter Brücke Iterator Stellvertreter Vermittler System in unabhängige Teile aufteilen Enthalten manchmal Kopplungsglied Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

9 Iterator Ermögliche Sequenziellen Zugriff auf die Elemente eines zusammengesetzten Objekts, ohne seine zugrundeliegende Repräsentation offenzulegen Synonyme Enumerator Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

10 Iterator Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

11 Beispiel Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

12 Aufgabe SS10 Fluglotse 1..* + berechneausweichkurse 1..* (k : Kurs) : Kurs[] beschäftigt Kurs * + gibfo() : Flugobjekt berechnet + gibflughöhe() : int sollkurs istkurs <<abstract>> Luftraumkontrolle + melde(k : Kurs) # nächster() : Fluglotse <<abstract>> Flugobjekt + änderekurs(k : Kurs) a) Orientieren Sie sich am Vermittler-Entwurfsmuster, um das Klassendiagramm um die Klassen Kontrollturm (eines Flughafens) sowie Helikopter und Passagierjet zu ergänzen. Geben Sie Multiplizitäten an, sofern diese ungleich 1 sind. Geben Sie für die Klassen Luftraumkontrolle, Flugobjekt, Kontrollturm, Helikopter und Passagierjet die jeweilige Rolle im Vermittler-Entwurfsmuster an. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

13 Musterlösung 1..* + berechneausweichkurse 1..* (k : Kurs) : Kurs[] beschäftigt Fluglotse Vermittler <<abstract>> Luftraumkontrolle + melde(k : Kurs) # nächster() : Fluglotse Kurs * + gibfo() : Flugobjekt berechnet + gibflughöhe() : int sollkurs istkurs Kollege <<abstract>> Flugobjekt * + änderekurs(k : Kurs) Kontrollturm Helikopter Passagierjet konkreter Vermittler konkreter Kollege Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

14 Aufgabe SS10 c) Bilden Sie das folgende Szenario als UML-Sequenzdiagramm ab. Beachten Sie bei Ihrer Modellierung die Informationen aus dem Klassendiagramm aus Aufgabenteil a). Ein Passagierjet p meldet seinen momentanen Kurs k p an den Kontrollturm. Der Kontrollturm beauftragt den nächsten freien Fluglotsen f zu berechnen, ob irgendwelche Flugobjekte ausweichen müssen. Der Fluglotse kommt zu dem Ergebnis, dass keine Kollisionsgefahr besteht und alle Flugobjekte ihren Kurs beibehalten können. Folglich antwortet er mit einem leeren Feld von Kursen. Anschließend meldet ein Helikopter h seinen Kurs k h an den Kontrollturm. Wieder ist der nächste verfügbare Fluglotse der Fluglotse f. Dieser berechnet unter Berücksichtigung von k h, ob nun Flugobjekte ausweichen müssen. Diesmal besteht eine Kollisionsgefahr zwischen dem Passagierjet und dem Helikopter. Deswegen antwortet der Fluglotse mit zwei Ausweichkursen k p und k h für den Passagierjet bzw. den Helikopter. Der Kontrollturm weist daraufhin den Passagierjet und den Helikopter an ihre Kurse auf den jeweiligen Ausweichkurs zu ändern. Hinweis: Modellieren Sie die Kurse nicht als Objekte mit Lebenslinie. Wenn Sie Kurse als Parameter/Rückgabewert benötigen, verwenden Sie die vorgegebenen Bezeichner aus dem Szenario. Zeichnen Sie zu jedem Methodenaufruf auch die Rückantwort ein. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

15 Musterlösung f:fluglotse :Kontrollturm p:passagierjet h:helikopter berechneausweichkurse(k p ) melde(k p ) nächster() f {} berechneausweichkurse(k h ) {k p, k h } nächster() f änderekurs(k p ) melde(k h ) änderekurs(k h ) Methodenaufruf mit Antwort: 8 0,5 P Benennung der Lebenslinien: 4 0,25 P aufgerundet auf nächsten halben Punkt Aktivtätsbalken fehlen selten: -0,5 P, oft/immer: -1 P Antworten fehlen selten: -0,5 P, oft/immer: -1 P Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

16 Aufgabe SS09 <<interface>> neu::form +zeichne() * 1 Zeichenprogramm 1 neu::linie <<uses>> neu::punkt <<create>> +Linie(von : Punkt, bis : Punkt) +zeichne() Zeichnet die Linie im Zeichenprogramm. <<create>> +Punkt(x : int, y : int) +gibx() : int +giby() : int <<interface>> alt::form +male() 1 -linie alt::linie <<create>> +Linie(x0 : int, y0 : int, x1 : int, y1 : int) +male() a) Welches Entwurfsmuster wird hier verwendet? Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

17 Aufgabe SS09 <<interface>> neu::form +zeichne() * 1 Zeichenprogramm 1 neu::linie <<uses>> neu::punkt <<create>> +Linie(von : Punkt, bis : Punkt) +zeichne() Zeichnet die Linie im Zeichenprogramm. <<create>> +Punkt(x : int, y : int) +gibx() : int +giby() : int <<interface>> alt::form +male() 1 -linie alt::linie <<create>> +Linie(x0 : int, y0 : int, x1 : int, y1 : int) +male() a) Welches Entwurfsmuster wird hier verwendet? (Objekt-)Adapter Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

18 Aufgabe SS09 <<interface>> neu::form * 1 Zeichenprogramm +zeichne() 1 neu::linie <<uses>> neu::punkt <<create>> +Linie(von : Punkt, bis : Punkt) +zeichne() Zeichnet die Linie im Zeichenprogramm. <<create>> +Punkt(x : int, y : int) +gibx() : int +giby() : int <<interface>> alt::form +male() 1 -linie alt::linie <<create>> +Linie(x0 : int, y0 : int, x1 : int, y1 : int) +male() b) Weisen Sie den Klassen und Methoden aus dem obigen Klassendiagramm ihre Entsprechungen im verwendeten Entwurfsmuster zu. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

19 Aufgabe Klient Ziel adaptiertes Objekt AdaptierteKlasse operation() spezifischeoperation() könnte nur Schnittstelle sein. Adapter operation() adaptiertesobjekt.spezifischeoperation() Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

20 Musterlösung <<interface>> neu::form * 1 Zeichenprogramm +zeichne() 1 neu::linie <<uses>> neu::punkt <<create>> +Linie(von : Punkt, bis : Punkt) +zeichne() <<create>> +Punkt(x : int, y : int) +gibx() : int +giby() : int Zeichnet die Linie im Zeichenprogramm. <<interface>> alt::form +male() alt::linie 1 -linie <<create>> +Linie(x0 : int, y0 : int, x1 : int, y1 : int) +male() Klasse/Methode Zeichenprogramm neu::linie alt::linie neu::form zeichne() male() Entsprechung Klient Adapter AdaptierteKlasse Ziel operation() spezifischeoperation() Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

21 Aufgabe SS09 <<interface>> neu::form * 1 Zeichenprogramm +zeichne() 1 neu::linie <<uses>> neu::punkt <<create>> +Linie(von : Punkt, bis : Punkt) +zeichne() <<create>> +Punkt(x : int, y : int) +gibx() : int +giby() : int Zeichnet die Linie im Zeichenprogramm. <<interface>> alt::form +male() alt::linie 1 -linie <<create>> +Linie(x0 : int, y0 : int, x1 : int, y1 : int) +male() c) Erweitern Sie das obige Klassendiagramm so, dass das Zeichenprogramm auch mit Rechtecken umgehen kann. Ein Rechteck besteht aus vier Linien und soll über seine linke obere und rechte untere Ecke definiert werden. Vermeiden Sie Abhängigkeiten zum Paket alt. Geben Sie alle Multiplizitäten an. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

22 Musterlösung <<interface>> neu::form * 1 Zeichenprogramm +zeichne() 1 neu::linie <<uses>> neu::punkt 1 -linie <<create>> +Linie(von : Punkt, bis : Punkt) +zeichne() Zeichnet die Linie im Zeichenprogramm. +male() <<interface>> alt::form alt::linie <<create>> +Linie(x0 : int, y0 : int, x1 : int, y1 : int) +male() 4 1 <<create>> +Punkt(x : int, y : int) +gibx() : int +giby() : int neu::rechteck <<uses>> <<create>> +Rechteck(ol : Punkt, ur : Punkt) +zeichne() Klasse mit Methoden 1 P Methoden unvollständig 0,5 P Komposition (Aggregation) zu neu::linie 1 P Ohne Mult. XOR andere Assozia. 0,5 P Implementierung 1 P /Vererbung 0,5 P <<uses>> 0,5 P Bonus (insg. max. 3 P) Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

23 Fragerunde 1 Das Entwurfsmuster Iterator ist den Variantenmustern zuzuordnen. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

24 Fragerunde 1 Das Entwurfsmuster Iterator ist den Variantenmustern zuzuordnen. Falsch 2 Das Entwurfsmuster Iterator ermöglicht polymorphe Iteration. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

25 Fragerunde 1 Das Entwurfsmuster Iterator ist den Variantenmustern zuzuordnen. Falsch 2 Das Entwurfsmuster Iterator ermöglicht polymorphe Iteration. Wahr Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

26 Übersicht Variantenmuster Varianten: Abstrakte Fabrik Besucher Fabrikmethode Kompositium Schablonenmethode Strategie Dekorierer Sinn: Umgang mit Abstraktion Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

27 Besucher Kapsle eine auf den Elementen einer Objektstruktur auszuführende Operation als ein Objekt Das Besuchermuster ermöglicht es, eine neue Operation zu definieren, ohne die Klassen der von ihr bearbeitenden Elemente zu verändern Synonyme Visitor Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

28 Besucher Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

29 Kompositum Erzeugung von Baumstrukturen um Bestandshierarchien zu repräsentieren Ermöglicht es Klienten, sowohl einzelne Objekte als auch Aggregate einheitlich zu behandeln Synonym Composite Whole-part Wird häufig in Kombination mit dem Besucher verwendet. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

30 Kompositum Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

31 Beispiel Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

32 Strategie Algorithmen einer Familie austauschbar machen Ermöglicht es Algorithmus unabhängig vom Klienten zu variieren Synonyme Strategy Policy Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

33 Strategie Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

34 Beispiel Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

35 Dekorierer Dynamisch neue Funktionalität an Objekt anfügen Synonyme Decorator Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

36 Dekorierer Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

37 Beispiel Streams in Java, Beispiel aus JMJRST: new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFileName), 8096)); Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

38 Unterschiede zu Stellvertreter Kann Funktionalität erweitern (d.h. mehr Methoden anbieten) Kann parallel zum umschlossenen Subjekt verwendet werden Dient nicht der Zugriffskontrolle Arbeitet immer auf einem inneren Objekt, erstellt dieses nicht selbst Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

39 Aufgaben a) Zeichnen Sie die Struktur der zwei Entwurfsmuster Strategie und Schablonenmethode. Kennzeichnen Sie die Entwurfsmuster eindeutig. Unterscheiden Sie deutlich zwischen konkreten und abstrakten Klassen/Methoden. b) Zu welcher/welchen Kategorie(n) gehören diese Entwurfsmuster laut Vorlesung? Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

40 Aufgaben a) Zeichnen Sie die Struktur der zwei Entwurfsmuster Strategie und Schablonenmethode. Kennzeichnen Sie die Entwurfsmuster eindeutig. Unterscheiden Sie deutlich zwischen konkreten und abstrakten Klassen/Methoden. b) Zu welcher/welchen Kategorie(n) gehören diese Entwurfsmuster laut Vorlesung? Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

41 Aufgaben a) Zeichnen Sie die Struktur der zwei Entwurfsmuster Strategie und Schablonenmethode. Kennzeichnen Sie die Entwurfsmuster eindeutig. Unterscheiden Sie deutlich zwischen konkreten und abstrakten Klassen/Methoden. b) Zu welcher/welchen Kategorie(n) gehören diese Entwurfsmuster laut Vorlesung? Beides sind Variantenmuster Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

42 Aufgaben c) Welches gemeinsame Ziel haben die beiden Entwurfsmuster? Inwiefern unterscheiden sie sich beim Erreichen dieses Ziels? d) Nennen Sie genau zwei Gründe, die laut Vorlesung für den Einsatz von Entwurfsmustern sprechen. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

43 Aufgaben c) Welches gemeinsame Ziel haben die beiden Entwurfsmuster? Inwiefern unterscheiden sie sich beim Erreichen dieses Ziels? Beide Entwurfsmuster erlauben es, Varianten eines Algorithmus zu verwenden. Die Schablonenmethode verwendet Vererbung, um Teile eines Algorithmus zu variieren, wohingegen die Strategie dies über Delegation erreicht. d) Nennen Sie genau zwei Gründe, die laut Vorlesung für den Einsatz von Entwurfsmustern sprechen. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

44 Aufgaben c) Welches gemeinsame Ziel haben die beiden Entwurfsmuster? Inwiefern unterscheiden sie sich beim Erreichen dieses Ziels? Beide Entwurfsmuster erlauben es, Varianten eines Algorithmus zu verwenden. Die Schablonenmethode verwendet Vererbung, um Teile eines Algorithmus zu variieren, wohingegen die Strategie dies über Delegation erreicht. d) Nennen Sie genau zwei Gründe, die laut Vorlesung für den Einsatz von Entwurfsmustern sprechen. Verbessern die Kommunikation im Team Erfassen wesentliche Konzepte und bringen sie in eine verständliche Form Helfen Entwürfe zu verstehen Dokumentieren Entwürfe kurz und knapp Verhindern unerwünschte Architektur-Drifts Verdeutlichen Entwurfswissen Dokumentieren und fördern den Stand der Kunst Helfen weniger erfahrenen Entwerfern Vermeiden die Neuerfindung des Rades Können Code-Qualität und Code-Struktur verbessern Fördern gute Entwürfe und guten Code durch Angabe konstruktiver Bsp. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

45 Aufgaben a) Welche beiden Entwurfsmuster erkennen Sie in diesem Klassendiagramm? Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

46 Aufgaben a) Welche beiden Entwurfsmuster erkennen Sie in diesem Klassendiagramm? Kompositum, Strategie b) Welchen Kategorien sind diese Entwurfsmuster zuzuordnen? Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

47 Aufgaben a) Welche beiden Entwurfsmuster erkennen Sie in diesem Klassendiagramm? Kompositum, Strategie b) Welchen Kategorien sind diese Entwurfsmuster zuzuordnen? Beides sind Variantenmuster Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

48 Fragerunde 1 Das Strategie-Muster erlaubt es Klienten, Sammlungen von Objekten und einzelne Objekte auf die gleiche Weise zu behandeln. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

49 Fragerunde 1 Das Strategie-Muster erlaubt es Klienten, Sammlungen von Objekten und einzelne Objekte auf die gleiche Weise zu behandeln. Falsch 2 Eine Komponente kann immer nur mit einem einzigen Dekorierer (decorator) versehen werden. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

50 Fragerunde 1 Das Strategie-Muster erlaubt es Klienten, Sammlungen von Objekten und einzelne Objekte auf die gleiche Weise zu behandeln. Falsch 2 Eine Komponente kann immer nur mit einem einzigen Dekorierer (decorator) versehen werden. Falsch 3 Das Muster Strategie (strategy) kapselt austauschbares Verhalten und verwendet Delegierung, um zu entscheiden, welches Verhalten verwendet wird. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

51 Fragerunde 1 Das Strategie-Muster erlaubt es Klienten, Sammlungen von Objekten und einzelne Objekte auf die gleiche Weise zu behandeln. Falsch 2 Eine Komponente kann immer nur mit einem einzigen Dekorierer (decorator) versehen werden. Falsch 3 Das Muster Strategie (strategy) kapselt austauschbares Verhalten und verwendet Delegierung, um zu entscheiden, welches Verhalten verwendet wird. Wahr 4 In Java wird das Entwurfsmuster Null-Objekt durch null realisiert. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

52 Fragerunde 1 Das Strategie-Muster erlaubt es Klienten, Sammlungen von Objekten und einzelne Objekte auf die gleiche Weise zu behandeln. Falsch 2 Eine Komponente kann immer nur mit einem einzigen Dekorierer (decorator) versehen werden. Falsch 3 Das Muster Strategie (strategy) kapselt austauschbares Verhalten und verwendet Delegierung, um zu entscheiden, welches Verhalten verwendet wird. Wahr 4 In Java wird das Entwurfsmuster Null-Objekt durch null realisiert. Falsch Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

53 Nächstes Übungsblatt 1 Java API, Entwurfsentscheidungen begründen 2 Zustandsdiagramm implementieren 3 Java API, Entwurfsmuster erkennen 4 Refactoring, Entwurfsmuster sinnvoll anwenden Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

54 Abschluss Nächstes Tutorium: Montag, Nächstes Thema: Parallelität, Threads Das war es für heute Vielen Dank. Fabian I. Miltenberger Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster /40

Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster

Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster Tutorium 17 Fabian Miltenberger 16.06.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg

Mehr

Entwurfsmuster. Tutorium 17 Fabian Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD)

Entwurfsmuster. Tutorium 17 Fabian Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) Entwurfsmuster Tutorium 17 Fabian Miltenberger 02.06.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der

Mehr

Entwurfsmuster. Tutorium 7 iloveswt.de Fabian I. Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD)

Entwurfsmuster. Tutorium 7 iloveswt.de Fabian I. Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) Entwurfsmuster Tutorium 7 iloveswt.de Fabian I. Miltenberger 06.06.2016 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

Mehr

Klausur Softwaretechnik I

Klausur Softwaretechnik I Klausur Softwaretechnik I 06.08.2009 Prof. Dr. Walter F. Tichy Dipl.-Inform. A. Höfer Dipl.-Inform. D. Meder Hier das Namensschild aufkleben. Zur Klausur sind keine Hilfsmittel und kein eigenes Papier

Mehr

Tutorium Softwaretechnik I

Tutorium Softwaretechnik I Tutorium Softwaretechnik I Moritz Klammler 11. Juli 2017 Fakultät für Informatik, IPD Tichy Titelfoto: Copyright (C) 2010 Multimotyl CC BY-SA 3.0 1 11. Juli 2017 Moritz Klammler - Tutorium Softwaretechnik

Mehr

Entwurfsmuster in Java

Entwurfsmuster in Java Entwurfsmuster in Java Das Observer- und das Decorator-Pattern Friederike Löwe 13. März 2011 Inhaltsverzeichnis Einleitung Wozu eigentlich Entwurfsmuster? Die Grundlage: Design-Prinzipien Das Decorator-Pattern

Mehr

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio Entwurfsmuster Eine Einführung Botond Draskoczy Marcus Vitruvius Pollio Überblick Historie, Literatur Das Flugapparat-Bildschirmschoner-Projekt (FBP) Das internetbasierte Solar-Netzwerk (SNW) Zusammenfassung

Mehr

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff Design Patterns II Der Design Muster Katalog Prof. Dr. Nikolaus Wulff Wiederverwendung Wiederverwendung ist das Schlagwort von OOP zur Erhöhung der Produktivität. Es gibt im Prinzip drei Methoden hierzu:

Mehr

Entwurfsprinzip. Entwurfsprinzip

Entwurfsprinzip. Entwurfsprinzip Die Komposition (hat ein Beziehung) ist der Vererbung (ist ein Beziehung) vorzuziehen. Es können Familien von Algorithmen in eigenen Klassensätzen gekapselt werden. Das Verhalten lässt sich zu Laufzeit

Mehr

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster Entwurfsmuster Lukas Klich Projektgruppe SHUTTLE Seminar: 28.11.2002 Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1 Motivation Die Menschheit löst Probleme, indem sie beobachtet, Beobachtungen

Mehr

Entwurfsmuster Martin Fesser 00IN

Entwurfsmuster Martin Fesser 00IN Entwurfsmuster Martin Fesser 00IN Inhalt Was sind Entwurfsmuster? Vorteile, Nachteile Entwurfsmusterkatalog (nach GoF) Variation von Entwurfsaspekten Wie Entwurfsmuster Entwurfsprobleme lösen Beispiele

Mehr

Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierte und Funktionale Programmierung SS 2014 Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

Structural Patterns. B. Sc. Andreas Meißner

Structural Patterns. B. Sc. Andreas Meißner Structural Patterns B. Sc. Andreas Meißner Seminar Software-Entwurf Fachgebiet Software Engineering, Institut für Angewandte Systeme, Universität Hannover 11/16/2004 Gliederung 1. Wiederholung Entwurfsmuster

Mehr

Objektorientierteund FunktionaleProgrammierung

Objektorientierteund FunktionaleProgrammierung Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II SS 2012 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Einführung in die Informatik II 1 Prüfungstermine EI II im Sommersemester 2012 Klausurtermine

Mehr

Unified Modelling Language

Unified Modelling Language Unified Modelling Language SEP 72 Software-Entwicklung Software-Entwicklung ist Prozess von Anforderung über Modellierungen zu fertigen Programmen Anforderungen oft informell gegeben fertige Programme

Mehr

Softwaretechnik 1 5. Tutorium

Softwaretechnik 1 5. Tutorium Softwaretechnik 1 5. Tutorium Tutorium Nr. 1 Philipp Adolf 17.06.2014 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Aufgabe 1 Nur

Mehr

Kennenlernen. Tutorium 7 iloveswt.de Fabian I. Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD)

Kennenlernen. Tutorium 7 iloveswt.de Fabian I. Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) Kennenlernen Tutorium 7 iloveswt.de Fabian I. Miltenberger 25.05.2016 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

Mehr

Entwurfsmuster (Design Patterns)

Entwurfsmuster (Design Patterns) Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder

Mehr

Software Engineering. 7. Entwurfsmuster

Software Engineering. 7. Entwurfsmuster Software Engineering 7. Entwurfsmuster Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung

Mehr

Entwurfsmuster. Marc Monecke

Entwurfsmuster. Marc Monecke Entwurfsmuster Marc Monecke monecke@informatik.uni-siegen.de Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068 Siegen 20. Mai 2003 Inhaltsverzeichnis 1 Grundlagen

Mehr

Design Patterns. 3. Juni 2015

Design Patterns. 3. Juni 2015 Design Patterns 3. Juni 2015 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Taentzer Softwarequalität 2015 138 Was sind Design Patterns?

Mehr

Entwurfsmuster - Iterator

Entwurfsmuster - Iterator HTWG Konstanz 7. Mai 2009 Muster Klassifikation objektbasiertes Verhaltensmuster des Patterns Ermögliche den sequentiellen Zugriff auf die Elemente eines zusammengestzten Objekts, ohne seine zugrundeligende

Mehr

Informatik II Übung 6 Gruppe 7

Informatik II Übung 6 Gruppe 7 Informatik II Übung 6 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch DEBRIEFING Übung 5 2 U5A1-4 Im Prinzip alles richtig. Falls am Ende noch Zeit, dann Einsicht in die Best Of s 3 THEORIE Java Vererbung,

Mehr

Aktivitäts-, Sequenz- und Zustandsdiagramme

Aktivitäts-, Sequenz- und Zustandsdiagramme Aktivitäts-, Sequenz- und Zustandsdiagramme Tutorium 17 Fabian Miltenberger 19.05.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg und nationales

Mehr

Universität Bremen. Entwurfsmuster. Thomas Röfer. Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster

Universität Bremen. Entwurfsmuster. Thomas Röfer. Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Entwurfsmuster Thomas Röfer Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Mein Rückblick: RoboCup 2 Euer Rückblick: Textsuche Naive Suche abrakadabra Boyer-Moore abrakadabra

Mehr

PRÜFUNG. Grundlagen der Softwaretechnik

PRÜFUNG. Grundlagen der Softwaretechnik Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner PRÜFUNG Grundlagen der Softwaretechnik Name: Matrikelnummer: Note: Prüfungstag: 03.03.2011 Prüfungsdauer:

Mehr

SE Besprechung. Übung 4 Architektur, Modulentwurf

SE Besprechung. Übung 4 Architektur, Modulentwurf SE Besprechung Übung 4 Architektur, Modulentwurf SE, 22.11.11 Mengia Zollinger 2.1 Architekturstile (6 Punkte) 2.1.A Ausgabe eines Monatsabos an Angestellte Lösung: Pipe-and-Filter Beispiel Lösung [Benz,

Mehr

Praxisbuch Objektorientierung

Praxisbuch Objektorientierung Bernhard Lahres, Gregor Rayman Praxisbuch Objektorientierung Von den Grundlagen zur Umsetzung Galileo Press 1.1 Was ist Objektorientierung? 11 1.2 Hallo liebe Zielgruppe 12 1.3 Was bietet dieses Buch (und

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/2015 1 / 24 UML, Teil 2 Überblick: Verhaltensmuster Strategiemuster Befehlsmuster 2 / 24 Aktivitätsdiagramme

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/2015 1 / 24 UML, Teil 2 Überblick: Verhaltensmuster Strategiemuster Befehlsmuster 2 / 24 Aktivitätsdiagramme

Mehr

Klausur Softwaretechnik

Klausur Softwaretechnik Klausur Softwaretechnik 14.03.2008 Prof. Dr. Walter F. Tichy Dipl.-Inform. T. Gelhausen Dipl.-Inform. A. Paar Hier das Namensschild aufkleben. Zur Klausur sind keine Hilfsmittel und kein eigenes Papier

Mehr

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul Behavioral Patterns Seminar Software-Entwurf WS 04/05 Przemyslaw Dul Gliederung Design Pattern (Wiederholung) Einordnung Übersicht über die Kategorien: Creational,Structural,Behavioral Übersicht über die

Mehr

3. Entwurfsmuster zur Entkopplung von Modulen

3. Entwurfsmuster zur Entkopplung von Modulen 3. Entwurfsmuster zur Entkopplung von Modulen OOP-3.1 Entwurfsmuster (Design Patterns): Software-Entwicklungsaufgaben, die in vielen Ausprägungen häufig auftreten. Objektorientierte Schemata, die als Lösungen

Mehr

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer Decorator Pattern Analyse- und Design-Pattern CAS SWE FS14 Roland Müller Samuel Schärer Entwurfsmuster der «Gang of Four» Strukturmuster fassen Klassen und Objekte zu grösseren Strukturen zusammen Adapter

Mehr

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr Entwurfsmuster Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr Was sind Entwurfsmuster (1) Muster (allg.) sind schematische Lösungen für eine Klasse verwandter Probleme Beschreibung:

Mehr

Entwurfsmuster - Iterator & Composite

Entwurfsmuster - Iterator & Composite Entwurfsmuster - Iterator & Composite Alexander Rausch Seminar Entwurfsmuster WS08/09 19. November 2008 Gliederung 1 Einführung 2 Das Iterator Entwurfsmuster 3 Das Composite Entwurfsmuster 4 Quellen 5

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Bernhard Lahres, Gregor Rayman Objektorientierte Programmierung Das umfassende Handbuch Galileo Press 1.1 Was ist Objektorientierung? 13 1.2 Hallo liebe Zielgruppe 14 1.3 Was bietet dieses Buch (und was

Mehr

Sommersemester Implementierung I: Struktur

Sommersemester Implementierung I: Struktur Sommersemester 2003 Implementierung I: Struktur 2 Aufgabe 3 Implementierung I: Struktur Umfang: 1 Woche Punkte: 50 P. In den ersten beiden Aufgaben wurden die Struktur und das Verhalten des Systems modelliert.

Mehr

Inhaltsverzeichnis. Teil 1 Grundlagen der Objektorientierung 29

Inhaltsverzeichnis. Teil 1 Grundlagen der Objektorientierung 29 Vorwort von James Gosling, Sun Microsystems 15 Vorwort an Kursleiter 16 Vorwort des Übersetzers 24 Projekte, die in diesem Buch detailliert besprochen werden 25 Danksagungen 27 Teil 1 Grundlagen der Objektorientierung

Mehr

Matthias Geirhos. Entwurfsmuster. Das umfassende Handbuch. Rheinwerk. Computing

Matthias Geirhos. Entwurfsmuster. Das umfassende Handbuch. Rheinwerk. Computing Matthias Geirhos Entwurfsmuster Das umfassende Handbuch Rheinwerk Computing Inhalt Vorwort 17 1 Einführung 19 1.1 Einleitung und allgemeine Hinweise 19 1.1.1 Für wen ist dieses Buch gedacht? 19 1.1.2 Muster

Mehr

Grundlagen der Softwaretechnik

Grundlagen der Softwaretechnik Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner PRÜFUNG Grundlagen der Softwaretechnik Musterlösung Name: Matrikelnummer: Note: Prüfungstag:

Mehr

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite!

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite! JUnit a Cook s Tour Ziel des Frameworks Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren Design des Frameworks Beginne bei Nichts Schritt für Schritt aus passenden Mustern

Mehr

Observer Chain of Responsibility Mediator

Observer Chain of Responsibility Mediator Observer Chain of Responsibility Mediator Seminar Software Design Pattern - Sommersemester 2009 Vertragender: Christian Kube Betreuer: Frank Schumacher SDP - SS09 - Kommunikation - Christian Kube 1 Paket

Mehr

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik Programmiertechnik II SS 2017 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel bittel@htwg-konstanz.de www-home.htwg-konstanz.de/~bittel SS 2017 Überblick! OOP: Schnittstellen

Mehr

Merkliste SoSy. V Modell. Anforderungen. Eigenschaften VKKNERV. Ermittlung FBI WAS. Volerekarte Punkte KKKMUH

Merkliste SoSy. V Modell. Anforderungen. Eigenschaften VKKNERV. Ermittlung FBI WAS. Volerekarte Punkte KKKMUH Merkliste SoSy V Modell Verifikation - Übereinstimmung SW-Produkt - Spezifikation Validierung - Eignung SW-Produkt - Einsatzzweck Anforderungen Eigenschaften VKKNERV Vollständigkeit Konsistenz Korrektheit

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/2015 1 / 28 Strukturmuster Kompositum Dekorierer Adapter 2 / 28 Einführung: Strukturmuster Zu

Mehr

Einführung in die objektorientierte Programmierung

Einführung in die objektorientierte Programmierung Einführung in die objektorientierte Programmierung Seminarunterlage Version: 4.04 Copyright Version 4.04 vom 17. Juni 2016 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte vorbehalten.

Mehr

Aktivitäts-, Sequenz- und Zustandsdiagramme

Aktivitäts-, Sequenz- und Zustandsdiagramme Aktivitäts-, Sequenz- und Zustandsdiagramme Tutorium 7 iloveswt.de Fabian I. Miltenberger 30.05.2016 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD) KIT Universität des Landes Baden-Württemberg

Mehr

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich WS 02/03 Warum muss ein Objekt wissen, zu welcher Klasse es gehört? Damit die Klassenzugehörigkeit

Mehr

Software Engineering, SoSe 07, WSI, D. Huson, May 7,

Software Engineering, SoSe 07, WSI, D. Huson, May 7, Software Engineering, SoSe 07, WSI, D. Huson, May 7, 2007 17 4 Modellierung in UML Nach einer Vorlesung von Prof. Andreas Zeller, Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken. 4.1

Mehr

185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster

185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster 2013-12-11 Software-Entwurfsmuster 1 185.A01 OOP Software-Entwurfsmuster 2013-12-11 Software-Entwurfsmuster 2 OOP Zweck von Entwurfsmustern Benennen wiederkehrender Probleme und Lösungen Austasch von Erfahrungen

Mehr

Programmiertechnik II WS 2017/18

Programmiertechnik II WS 2017/18 Programmiertechnik II WS 2017/18 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel bittel@htwg-konstanz.de www-home.htwg-konstanz.de/~bittel WS 17/18 Überblick OOP: Schnittstellen

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Unified Modeling Language (UML) Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Unified Modeling Language (UML)

Mehr

UML -Klassendiagramme

UML -Klassendiagramme UML -Klassendiagramme UML - offline: ArgoUML http://argouml.stage.tigris.org/ UML online: Links genmymodel.com umlet.com/umletino/umletino.html Arten von UML-Diagrammen Diagramm Strukturdiagramm Verhaltensdiagramm

Mehr

Objektorientierte Systementwicklung

Objektorientierte Systementwicklung Karl-Heinz Rau Objektorientierte Systementwicklung Vom Geschäftsprozess zum Java-Programm Mit 162 Abbildungen vieweg Überblick und Vorbemerkungen 1 1 Objektorientierte Software-Entwicklung 5 1.1 Überblick

Mehr

7. Zusammenfassung (1)

7. Zusammenfassung (1) Typisierung in OO-Sprachen Subtyping vs. Subclassing Untertypen für Typkonstrukte Funktionsuntertypen und Überschreiben Generik Einsatz von Vererbung konzeptioneller Entwurf: Abstraktion Spezialisierung

Mehr

Methoden und Architekturen der Softwaretechnik

Methoden und Architekturen der Softwaretechnik Joachim Goll Methoden und Architekturen der Softwaretechnik STUDIUM VIEWEG+ TEUBNER Inhaltsverzeichnis Vorwort 7 Wegweiser durch das Buch 11 Inhaltsverzeichnis 17 Begriffsverzeichnis 23 Abkürzungsverzeichnis

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 11 Rekursion Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Universität Bremen. Entwurfsmuster. Thomas Röfer. Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster

Universität Bremen. Entwurfsmuster. Thomas Röfer. Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Entwurfsmuster Thomas Röfer Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Rückblick UML Motivation Historie Spracheinheiten Strukturdiagramme Verhaltensdiagramme 2 Motivation Idee Einige

Mehr

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4 Inhaltsverzeichnis TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA... 1 1 GRUNDLAGEN DER PROGRAMMIERUNG... 4 1.1 Das erste Java-Programm... 4 1.2 Programme und ihre Abläufe... 6 1.3 Entwurf mit Nassi-Shneiderman-Diagrammen...

Mehr

Techniken der Projektentwicklungen

Techniken der Projektentwicklungen Dynamische Modellierung 8. Termin Rückblick auf statische Modellierung Dynamische Modellierung Basiskonzepte Beispiel Erweiterungen Eigenschaften Syntax Rückblick auf statische Modellierung Dynamische

Mehr

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler Übungen zur Vorlesung Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler Übungsblatt 7 Lösungshilfe Aufgabe 1. Analysephase (12 Punkte) Eine Firma hat den Auftrag erhalten eine

Mehr

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 3: Kombination OOP/WF

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 3: Kombination OOP/WF C# Programmierung Eine Einführung in das.net Framework C# Programmierung - Tag 3: Kombination OOP/WF 1/27/2012 1 Mi Statisches Modifizierer Eigenschaften Polymorphie Baupläne Konstruktor WinForms Sealed,

Mehr

ALP II Dynamische Datenmengen

ALP II Dynamische Datenmengen ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung

Mehr

3. Entwurfsmuster zur Entkopplung von Modulen. Übersicht zu Entwurfsmustern

3. Entwurfsmuster zur Entkopplung von Modulen. Übersicht zu Entwurfsmustern 3. Entwurfsmuster zur Entkopplung von Modulen OOP-3.1 Vorlesung Objektorientierte Programmierung WS 2013/2014 / Folie 301 Entwurfsmuster (Design Patterns): Idee der Entwurfsmuster verstehen Software-Entwicklungsaufgaben,

Mehr

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:

Mehr

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik Entwurfsmuster - Design Patterns HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik 27. November 2009 Gliederung 1 Einführung 2 Strategie-Muster 3 Beobachter-Muster

Mehr

Softwaretechnik 1 Übung 2

Softwaretechnik 1 Übung 2 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Übung 2 25.5.2009 Aufgabe 1 Klassendiagram // do X firexoccurred(); XListener + xoccurred(e:xevent) * listeners

Mehr

OOSE 8 Entwurfsmuster (Hörsaalübung)

OOSE 8 Entwurfsmuster (Hörsaalübung) OOSE 8 Entwurfsmuster (Hörsaalübung) SS 2015 Birgit Demuth Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant Composite Iterator Factory Method Class Adapter Object Adapter Observer Singleton

Mehr

Software-Entwurfsmuster

Software-Entwurfsmuster Software-Entwurfsmuster benennen wiederkehrende Probleme und Lösungen dienen dem Austasch von Erfahrungen Wiederverwendung von Erfahrung wo Wiederverwendung von Code versagt sehr abstrakt, daher häufig

Mehr

Mustersuche in Quellcode

Mustersuche in Quellcode Mustersuche in Quellcode Komponentenbasierte Softwareentwicklung 13.07.2005 Peter Schübel 1 Gliederung 1. Vorstellung des Projekts InPulse 2. Design Patterns 1. Idee 2. Beispiele 3. Referenzsystem World

Mehr

Vgl. Oestereich Kap 2.4 Seiten

Vgl. Oestereich Kap 2.4 Seiten Vgl. Oestereich Kap 2.4 Seiten 99-110 1 Vgl. Oestereich Kap 2.41 Seiten 99ff 2 Wie das Klassendiagramm ist auch das Objektdiagramm ebenfalls ein Strukturdiagramm. Da die Anzahl der Attribute sehr groß

Mehr

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Prinzip der Vererbung: Aus

Mehr

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr

UML Eine kurze Einführung

UML Eine kurze Einführung UML Eine kurze Einführung Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Software-Entwurfsmuster

Software-Entwurfsmuster Software-Entwurfsmuster Prinzip von Entwurfsmustern und einige elementare Beispiele Malte Spiess malte@mathematik.uni-ulm.de Seminar Bildanalyse und Simulation mit Java im WS 2003/2004 Universität Ulm

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Software Design Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Software Design Wie schreibe ich gute Software?

Mehr

Strategy & Decorator Pattern

Strategy & Decorator Pattern Strategy & Decorator Pattern Design Patterns Nutzen Wouldn t it be dreamy if only there were a way to build software so that when we need to change it, we could do so with the least possible impact on

Mehr

Inhaltsverzeichnis. Teil 1 Grundlagen der Objektorientierung. Kapitel 1 Objekte und Klassen Objekte und Klassen Instanzen erzeugen Methoden aufrufen

Inhaltsverzeichnis. Teil 1 Grundlagen der Objektorientierung. Kapitel 1 Objekte und Klassen Objekte und Klassen Instanzen erzeugen Methoden aufrufen Inhaltsverzeichnis Vorwort von James Gosling, Sun Microsystems Vorwort an Kursleiter Vorwort zur vierten deutschen Ausgabe Projekte, die in diesem Buch detailliert besprochen werden Danksagungen Teil 1

Mehr

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26 Design Patterns (Software-Architektur) Prof. Dr. Oliver Braun Letzte Änderung: 11.07.2017 15:12 Design Patterns 1/26 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides:

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

Mehr

Effizientes Programmieren

Effizientes Programmieren Effizientes Programmieren Praktikum smuster (09.05.2016) Christopher Pietsch Agenda 1 2 smuster 3 4 1 / 23 smuster (09.05.2016) smuster Teil 1 2 / 23 smuster (09.05.2016) smuster Definition: [...] alle

Mehr

Effizientes Programmieren

Effizientes Programmieren Effizientes Programmieren Praktikum smuster (04.07.2017) Christopher Pietsch Agenda 1 2 smuster 3 4 1 / 23 smuster (04.07.2017) smuster Teil 1 2 / 23 smuster (04.07.2017) smuster Definition: [...] alle

Mehr

4. Objektorientierte Programmierung mit C++

4. Objektorientierte Programmierung mit C++ 4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung der Sprachfamilie Erweiterungen der Sprache C: Ein- und Ausgabe, Referenzen, Speicherallokation und Freigabe Grundlagen des Typkonzepts

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

Unified Modeling Language 2

Unified Modeling Language 2 Unified Modeling Language 2 Marvin Frommhold 17.11.2008 Gliederung Einleitung Geschichte Strukturierung der Spezifikation Diagrammtypen Strukturdiagramme Verhaltensdiagramme CASE-Werkzeuge Quellen Was

Mehr

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik Entwurfsmuster Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik Information über Entwurfsmuster Die heutige Vorlesung: Einführung in die Thematik Die Vorlesung am 12.01:

Mehr

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel Jason T. Roff UML IT Tutorial Übersetzung aus dem Amerikanischen von Reinhard Engel Inhaltsverzeichnis Inhaltsverzeichnis Einführung 11 Grundlagen der UML 15 Warum wir Software modellieren 16 Analyse,

Mehr

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Grundidee abstrakter Klassen:

Mehr

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05. Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational

Mehr

Entwurfsmuster (Design Pattern) ETIS SS05

Entwurfsmuster (Design Pattern) ETIS SS05 Entwurfsmuster (Design Pattern) ETIS SS05 Gliederung Motivation Pattern allgemein Proxy-Pattern Zusammenfassung 2 Motivation I Wie gut sind eure Programme strukturiert? Wartbarkeit? - Verständlichkeit

Mehr

Lehrbuch der Objektmodellierung

Lehrbuch der Objektmodellierung Heide Balzert Lehrbuch der Objektmodellierung Analyse und Entwurf mit CD-ROM Technische Universität Darmstadt FACHBEREICH INFORMATIK BIBLIOTHEK Inventar-Nr.: Sachgebiete: Standort: Tt Spektrum Akademischer

Mehr

Konzepte der Programmiersprachen

Konzepte der Programmiersprachen Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C

Mehr

Programmieren I. Überblick. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Programmieren I. Überblick.  Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft Programmieren I Überblick KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Übersicht Programmieren Programmieren I (1. Semester) 4 Vorlesungs- und Übungsstunden / Woche 7,5 (!) Stunden

Mehr

KLAUSUR SOFTWARETECHNIK

KLAUSUR SOFTWARETECHNIK KLAUSUR SOFTWARETECHNIK 17.09.2009 Prof. Dr. Walter F. Tichy Dipl.-Inform. Andreas Höfer Dipl.-Inform. David J. Meder Hier das Namensschild aufkleben. Zur Klausur sind keine Hilfsmittel und kein eigenes

Mehr

Objektorientierte Modellierung (1)

Objektorientierte Modellierung (1) Objektorientierte Modellierung (1) Die objektorientierte Modellierung verwendet: Klassen und deren Objekte Beziehungen zwischen Objekten bzw. Klassen Klassen und Objekte Definition Klasse Eine Klasse ist

Mehr