• 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 6¨ Ausgabe: 9.6.2008 Besprechung: 11.6.2008

1. Refactoring

Sie haben das Refactoring-Pattern “Replace Conditional with Polymorphism” kennenge- lernt.

(a) Wenden Sie es auf das folgende Beispiel an:

1 c l a s s E m p l o y e e ...

2 ...

3 int payAmount() {

4 s w i t c h (t y p e) { 5 c a s e E N G I N E E R :

6 r e t u r n s a l a r y;

7 c a s e S A L E S M A N :

8 r e t u r n s a l a r y+c o m m i s s i o n;

9 c a s e M A N A G E R :

10 r e t u r n s a l a r y+b o n u s;

11 }

12 }

13 ...

(b) Wo liegen die Probleme nach der Anwendung des Patterns?

(c) Welche M¨oglichkeiten sehen Sie, dieses Problem elegant zu l¨osen?

2. Iteratoren und komplexe Datenstrukturen Gegeben sei folgende Klasse:

1 c l a s s Tree<E> {

2 Tree<E> l e f t , r i g h t;

3 E d a t a;

4 T r e e I t e r a t o r <E> i t e r a t o r() ;

5 }

(a) Skizzieren Sie den Code f¨ur eine Implementation eines entsprechenden Iterators.

(b) Wie m¨usste die Implementierung f¨ur andere Reihenfolgen, in der die Elemente durch- laufen werden (Pre-, Post- oder In-Order), ge¨andert werden?

(2)

FOO SS 2008 Ubungsblatt 6¨ S. 2

3. Multimethoden

Gegeben sei das folgende Programmfragment 1 c l a s s A { }

2 c l a s s B e x t e n d s A { 3 v o i d f(A x) { } 4 v o i d f(B x) { } 5 }

6 c l a s s C e x t e n d s B { 7 v o i d f(A x) { } 8 }

9 c l a s s D e x t e n d s B { 10 v o i d f(B x) { } 11 }

12 ...

13 A a= new A() ; 14 A a b= new B() ; 15 B b= new B() ; 16 B b c= new C() ; 17 B b d= new D() ; 18 C c= new C() ; 19 D d= new D() ; 20

21 b c.f(a) ; 22 b c.f(a b) ; 23 b c.f(b) ; 24 b d.f(a) ; 25 b d.f(a b) ; 26 b d.f(b) ; 27 c.f(a) ; 28 c.f(a b) ; 29 c.f(b) ; 30 d.f(a) ; 31 d.f(a b) ; 32 d.f(b) ;

(a) Nennen Sie Beispiele, in denen Multimethoden von Vorteil w¨aren.

(b) Welche Methoden werden in normalem Java und welche bei Verwendung von Multi- Methoden aufgerufen?

(c) Gibt es Aufrufe, die jeweils in einer Variante eindeutig, aber in der anderen mehr- deutig sind?

(d) Machen Sie Vorschl¨age, wie man zur Laufzeit mit Mehrdeutigkeiten umgehen k¨onnte.

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