• Keine Ergebnisse gefunden

Übung 04

N/A
N/A
Protected

Academic year: 2022

Aktie "Übung 04"

Copied!
8
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Übung 04

Design Patterns

(2)

0. Organisatorisches

• 08.12.16

• Gastvorlesung: Prof. Dr.-Ing. Thomas Leich (FH Harz, METOP AG): Global SE + SE in Praxis

• 09.12.16

• Reguläre Übung

KEIN neues Übungsblatt

• 15.12.16

KEINE Abgabe eines Übungsblattes

• 16.12.16

KEINE Übung!

• Übungsblatt über Weihnachten steht noch nicht fest

(3)

1. Adapter Pattern

http://giphy.com/gifs/3o7TKCJwXWVFGeIgw0

(4)

1. Adapter Pattern

• Adapter nutzt Delegation, um Aufrufe weiterzuleiten

• Adapter hält eine

Referenz auf Dienst (zu adaptierende Klasse)

• Methodenaufrufe werden vom Adapter zum Ziel

weitergeleitet

(5)

2. Visitor Pattern

9 * 7 + 1 / 3 * 2 + 10 * 4 – 8 Ist das ein Baum?

Ja, aber mehrdeutig

(6)

2. Visitor Pattern

• Visitor (Visitor)

deklariert eine visit() Methode für jedes ConcreteElement der Objekt-Struktur

• die Methodensignatur bestimmt die Klasse die den visit- Request schickt und der Visitor kann mit dem Objekt über das Interface der Klasse kommunizieren

• ConcreteVisitor (EvalVisitor)

implementiert jede visit() Methode die der Visitor deklariert

• jede Methode implementiert einen Teil des Algorithmus, eben jenen Teil der für das jeweilige Objekt der

Objektstruktur vorgesehen ist

• ConcreteVisitor kann auch Zustandinformationen halten

• Element (Node)

deklariert eine accept() Methode die einen Visitor als Argument nimmt

• ConcreteElement (Expression, Addition, Literal)

implementiert eine accept() Methode die einen Visitor als

(7)

2. Visitor Pattern

 Visitor erlaubt einfaches Hinzufügen neuer Operationen

• neue Visitor Klasse vs. Anpassen einer Klassenstruktur

 Visitor separiert verwandte Operationen von nicht- verwandten

• Sowohl Visitor als auch Klassenstruktur werden einfacher verständlich

 Visitor kann über Klassenhierarchien hinweg operieren

void Visitor::visit(String s);

void Visitor::visit(Interger i);

 Visitor kann eigenen Zustand verwalten

• z.B. Laufzeit-Informationen, welches Objekt zuletzt besucht wurde

✗Hinzufügen neuer ConcreteElement Klassen ist unvorteilhaft

• Jedes neue ConcreteElement benötigt i.d.R. eine neue abstrakte Methode und insbesondere eine Implementierung in jedem

ConcreteVisitor

✗verletzt Kapselung

(8)

http://www.hwk-chemnitz.de/fileadmin/user_upload/ausbildung/Pruefungen/Gesellenpruefungen/Fragezeichen.JPG

Referenzen

ÄHNLICHE DOKUMENTE

The Yeoman Warders live with their families within the Tower walls – however, they do not have to taste the food anymore. © maritus images/Steve Vidler ©

In einer kurzen Lehrer- erzählung wird berichtet, dass der Formenzauberer verschiedene Dinge gezaubert hat, die sich unter dem Tuch befi nden.. Ein Schüler wird ausgewählt, greift

Entwickeln Sie einen endlichen Automaten mit Ausgabe zur Simulation des dargestellten Kaffeeautomaten. Klingeltöne für das Handy herunterzuladen. Interpretieren Sie die

„Ausgabestopp“. 7) Ändern Sie das Programm so, dass die Division zweier eingegebener Zahlen ausführt wird. Welcher logische Fehler könnte beim Programmlauf auftreten. Ändern Sie

Hinweis: die Priorität der Features soll *nicht* in der Klasse Feature gespeichert werden... Übung Praktische Informatik 2

Schl¨agt man einen Kreis mit Radi- us 6 cm um T , so schnei- det dieser die von G aus gehende Halbgerade etwa im Punkt R(10,8|12,2) (e) Schl¨agt man Kreise mit4. Radius 4 cm um G

[r]

In jedem steht ein Wort oder sogar ein Teil eines Satzes.. Schreib die Sätze aus dem Hüpfdiktat in