Klausur 19.02.2009

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Klausur 19.02.2009
Kann mal jemand seine Lösungen zu Aufgabe 3a) mit meinen vergleichen?

Zeile 23: AB
Zeile 24: AB
Zeile 27: keine Ausgabe
Zeile 31: BB
Zeile 38: AB
Zeile 39: AA

bin mir bei dieser Art von Aufgaben noch unsicher


Also ich hab:

Zeile 23: BA
Zeile 24: AB
Zeile 27: AA
Zeile 31: BB
Zeile 38: BA
Zeile 39: AA

Aber ich kenn mich da auch nicht mit aus :confused:

Wie kommst du denn bei zeile 27 darauf, dass es keine ausgabe gibt?


mein Vorschlag wäre:

Zeile 23 BA (da in A x existiert und damit die aus B gewählt wird)
Zeile 24 AB (da in A x existiert, in C abr nicht, wird das x aus A gewählt)
Zeile 27 keine Ausgabe (da b.t true ist und damit nicht in den if-Zweig gegangen wird)
Zeile 31 BB (da in A y existiert und damit die aus C gewählt wird)
Zeile 38 BA (hier ganz normal für das neue b vorgehen wie oben auch)
Zeile 39 AA (hier ganz normal für das neue b vorgehen wie oben auch)


Bei Zeile 27 stimme ich mit N. K. überein.

Bei Zeile 23 und 38 hatte ich AB statt BA, da ich glaube dass man static String x nicht String x überschreibt. Somit würde dann die Methode String x aus A verwendet werden. Habe außerdem gelernt dass man static-Methoden nicht über die Instanzen aufrufen kann (das müsste dann B.x statt b.x heißen…)

Zumindest den Rest haben wir alle gleich…


ok, kann sein, da muss ich nochmal nachlesen, könnte aber stimmen


Stimmt das static hab ich überlesen.

Aber könnt ihr mir das erklären wieso in 27 es zu keiner ausgabe kommt`?



Hat jem. die Aufgabe 4: ADT gemacht?

append habe ich als “füge hinten hinzu” verstanden (wie bei liste)
und prepend würde ich jetzt dann als “vorne hinzufügen” verstehen, aber irgendwie ist mir das schleierhaft…


oh jetzt hab ichs gecheckt. danke.


Ziemlich schwer fand ich auch die Fehlersuche in der 3b)

Wieviel Fehler habt ihr da gefunden? Ich 5:

Zeile 7: Compiler: f implementiert nicht die Methode f des Interfaces (noch führt sie sie auf)
Zeile 19: Compiler: keine Automatische Konversion von double auf int
Zeile 34: Compiler: Instanzvariablen können nicht über den statischen Typ angesprochen werden (nicht A sondern a)
Zeile 40: Compiler: Laufzeit Man kann nicht von der Ober- auf die Unterklasse konvertieren, nur andersherum
Zeile 44: Compiler: g ist eine private-Methode. Darauf kann man nicht von i aus zugreifen

habt ihr die selben? fehlen welche? Hab gar keinen Laufzeitfehler gefunden


Ja, so hab ichs auch verstanden: prepend oben bzw. vorne, append unten bzw. hinten


doch kann man. Du kannst einen Typ Hund zu einem Pudel machen, nicht aber einen Pudel zu einem Hund allgemein :wink:


wie sieht dann bei dir die c) aus? O.o fand ich recht dämlich irgendwie


ich hab das gleiche gedacht nur hab ich bei Zeile 19 die Zeile 18 als Ursprung des Fehlers (aber auch mit begründung double zu int) angegeben und bei Zeile 44 zeile 43 angegeben aber mit einer ähnlichen begründung wie du.

mehr fehler hab ich auch ncih gefunden…

EDIT: wobei ich bei Zeile 7 mir nich so sicher bin.


bei mir sieht die c) so aus:

append(head(append(D, create)), append(A, create))
= append(head(append(D, create)), prepend(A,L)) //A1
= append(head(prepend(A,L)), prepend(A,L)) // A1
= append(x, prepend(A,L)),// A3
= prepend(A,append(x,L)) // A2

Aber kein plan ob das so geht


Das Beispiel mit dem Pudel ist herzallerliebst, das werde ich mir in der Prüfung vor Augen führen! In den Folien (Folie 7-98) steht folgendes:

p = (Pudel) h; → (in der Sprechblase) statisch O. K., Laufzeitfehler wenn das Objekt h ein Hund ist

Die 4. c) sieht bei mir folgendermaßen aus:
A1: append(head(append(D, create), prepend(A, create))
A1: append(head(prepend(D, create), prepend(A, create))
A3: append(D, prepend(A, create)
A2: prepend(A, append(D, create)
A1: prepend(A, prepend(D, create)

—> Da kommt dann eine Liste mit den Elementen A, D raus

Ob man das 2. A1 braucht bin ich mir nicht 100 pro sicher, da nur Zwischenschritt


@ kaut,

  • muss/darf man create also zu L umwandeln?
  • warum bist du dir bei Zeile 7 nicht sicher?

Gute frage, ich weiß es nicht. habs mir grad nochmal angeschaut und bin einfach wegen dem Axion A2 davon ausgegangen weil ja sonst das ganze nicht so recht weiter geht. Aber vielleicht darf man auch nicht, ich bin da überfragt.

In zeile 7 bin ich mir unsicher, weil ich mir nicht sicher bin ob man nicht ne methode in der Klasse machen darf und in dem Interface wieder eine. Da war doch irgendwie mal was die dürfen gleich heißen, solange sie andere typen haben oder so.


Ja, aber ist es nicht so dass alle Methoden aus dem Interface per Definition abstrakt sind und sie daher implementiert werden müssen? In diesem Fall wäre Überschreiben Pflicht!