• 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 10¨ Ausgabe: 7.7.2008 Besprechung: 9.7.2008

1. Typkonvertierungen bei Methodenredefiniton und Exceptions

Was erlaubt Java in Bezug auf Exceptions bei Methodenredefinitionen? Ist dies ko- oder kontravariant?

2. Parametrischer Polymorphismus ohne Typschranken

(a) Die Substitution von Klassenparametern bei parametrisierten Klassen kann auch durch textuelle Ersetzung geschehen (wie z.B. bei Templates in C++). Nennen Sie Vor- und Nachteile des Bounded Polymorphism gegen¨uber diesem Ansatz.

(b) Bei reiner textueller Ersetzung kann es zu Typfehlern kommen. Geben Sie ein ent- sprechendes Beispiel an.

3. Rekursive Typen

Betrachten Sie die TypenT1 =µτ.{next:τ, data :object}und T2 =µσ.{next:σ, next2 : σ, data:object}. StehenT1 undT2in einer Vererbungsbeziehung, und wenn ja, in welcher?

Benutzen Sie die Konversionsregeln aus dem Skript zum Beweis.

4. Palsberg-Schwartzbach Typinferenz

(a) F¨uhren Sie f¨ur das folgende Programm einen Typcheck mit dem System von Palsberg- Schwartzbach durch.

1 c l a s s A {

2 int n( int i) { r e t u r n i+1; }

3 }

4 c l a s s B e x t e n d s A {

5 int nn( int j) { r e t u r n j+2; }

6 }

7 A a= new A() ;

8 B b= new B() ;

9 int k=a.n(5) ;

10 k=b.n(8) ;

11 k=a.nn( 4 2 ) ; 12 k=b.nn(k) ;

(2)

FOO SS 2008 Ubungsblatt 10¨ S. 2

(b) Inferieren Sie f¨ur das folgende Programm alle Typmengen mit dem System von Palsberg-Schwartzbach.

1 c l a s s A {

2 ? f() { r e t u r n new C() ; }

3 }

4 c l a s s B e x t e n d s A {

5 ? f() { r e t u r n new D() ; }

6 }

7 c l a s s C {

8 ? g() { r e t u r n new B() ; }

9 }

10 c l a s s D e x t e n d s C {

11 ? g() { r e t u r n new A() ; }

12 }

13 p= new B() ;

14 w h i l e ( t r u e ) {

15 q=p.f() ;

16 p=q.g() ;

17 }

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,

Profil ausw¨ ahlen und verbinden (Klick auf Connect) vpn-split-v1: Nur Zugriff auf Uni-Server ¨ uber VPN. vpn-v1: Jeglicher Datenverkehr ¨

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