• Keine Ergebnisse gefunden

Universit¨at Karlsruhe (TH) Lehrstuhl f¨ur Programmierparadigmen

N/A
N/A
Protected

Academic year: 2022

Aktie "Universit¨at Karlsruhe (TH) Lehrstuhl f¨ur Programmierparadigmen"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Universit¨ at Karlsruhe (TH)

Lehrstuhl f¨ ur Programmierparadigmen

Fortgeschr. Objektorientierung SS 2008 http://pp.info.uni-karlsruhe.de/

Dozent: Prof. Dr.-Ing. G. Snelting snelting@ipd.info.uni-karlsruhe.de Ubungsleiter:¨ Daniel Wasserrab wasserra@ipd.info.uni-karlsruhe.de Andreas Lochbihler lochbihl@ipd.info.uni-karlsruhe.de Ubungsblatt 8¨ Ausgabe: 23.6.2008 Besprechung: 25.6.2008

1. Visitor Pattern und Multimethoden

Sie haben eine Hierarchie mit folgenden Java-Klassen:

1 a b s t r a c t c l a s s E x p r e s s i o n { } 2

3 p u b l i c c l a s s I n t E x p r e s s i o n e x t e n d s E x p r e s s i o n {

4 int v a l u e;

5 } 6

7 p u b l i c c l a s s A d d E x p r e s s i o n e x t e n d s E x p r e s s i o n { 8 E x p r e s s i o n e1, e 2;

9 } 10

11 p u b l i c c l a s s M u l t E x p r e s s i o n e x t e n d s E x p r e s s i o n { 12 E x p r e s s i o n e1, e 2;

13 }

Nun m¨ochten Sie nachtr¨aglich eine prettyPrint()-Methode implementieren, welche eine Expression korrekt formatiert ausgibt, ohne sie direkt in die Klassen zu implementieren.

Welche Probleme entstehen dabei? L¨osen Sie dieses Problem einmal durch Anwendung des Visitor Patterns und einmal mit Multimethoden. Welche Vor- und Nachteile haben beide Ans¨atze?

2. Mixins in Scala

(a) Schreiben Sie einen trait Ordered, der die Vergleichsmethoden <, <=, > und >=

bereitstellt und diese auch, soweit m¨oglich, bereits implementiert.

(b) Implementieren Sie nun eine Datumsklasse Date, welche diesen trait verwendet.

(c) ¨Uberlegen Sie sich, wie man dies in Java realisieren w¨urde und diskutieren Sie beide Ans¨atze.

3. Iteratoren durch Mixins in Scala

Betrachten Sie folgenden trait f¨ur einen abstrakten Iterator:

1 t r a i t A b s I t e r a t o r {

2 t y p e T;

3 def h a s N e x t: b o o l e a n ;

4 def n e x t: T;

5 }

(2)

FOO SS 2008 Ubungsblatt 8¨ S. 2

(a) Definieren Sie jetzt einen davon abgeleitetentraitRichIterator, der einef oreach- Schleife des Iterators implementiert, welcher eine Funktion ¨ubergeben werden kann, dieunit(Scalasvoid) zur¨uckliefert. Welche Eigenschaft vontraits n¨utzen Sie dabei aus?

(b) Definieren Sie einen weiteren, vonAbsIteratorabgeleitetentraitSyncIterator, der jeden Aufruf vonhasN extundnextsynchronisiert. Was ist hierbei die Besonderheit?

(c) Definieren Sie nun noch eine konkreteStringIterator Klasse, welche unter Verwen- dung des trait AbsIterator die einzelnen Zeichen eines Strings zur¨uckgibt. Was m¨ussen Sie dabei beachten?

(d) Zum Schluss ben¨otigen wir noch ein konkretes Testprogramm, das synchronisiert die Zeichen eines Strings mittels einerf oreach-Schleife als Spalte untereinander ausgibt.

Referenzen

ÄHNLICHE DOKUMENTE

Zwar ist ASCII heutzutage so gut wie ¨ uberall unterst¨ utzt, viele Sprachen ben¨ otigen aber weitere Zeichen die in ASCII nicht enthalten sind. Typische ASCII-Erweiterungen im

Es wird also anscheinend kein speziellere Datentyp f¨ ur Closures angelegt, der einen Funktionszeiger und einen Zeiger auf die Umgebung

• Nehmen Sie an die Anzahl der Register ist auf 3 beschr¨ ankt, spielt die Auswertungsreihenfolge bei den Ausdr¨ ucken jetzt noch eine Rolle. Aufgabe

Konstruieren Sie unter der Voraussetzung, dass alle nicht konstanten Operanden im Arbeitsspeicher stehen, Syntaxb¨ aume f¨ ur die folgenden Anweisungen:. 1. x = x

Skizzieren Sie Anordnung der Objekte auf dem Heap f¨ ur die Stelle nach dem Aufruf von ’A.create()’ unter der Annahme, dass beim Start der main Methode der Heap v¨ ollig leer

Semantische Analyse: Namensanalyse, Typanalyse, Operatoridentifikation, Konsistenzpr¨ ufung, Sprach- abh¨ angige Sonderaufgaben, Struktur¨ aquivalenz, Definitionstabelle,

Erstelle daf¨ ur zun¨ achst eine Tabelle mit den Gen- und Kill-Mengen der einzelnen Bl¨ ocke und f¨ uhre danach eine

F¨uhren Sie eine GOTO-Elimination f¨ur die folgende Methode durch (continue ist auch eine spezielle Form