klausur WS2014

Wissensfragen /fragen zu mögliche lösungen

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 WS2014
Aufgabe 1.f

Welche Antworten immer noch korrekt? und kann jemand erklären wo ist meine Missverständnis(im Vergleich mit https://fsi.informatik.uni-erlangen.de/dw/pruefungen/bachelor/aud/loesungws14) wegen der folgendes?

(Antwort 1)
The finally block always executes when the try block exits. This ensures that the finally block is executed even if an unexpected exception occurs.
https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html

(Antwort 2)
You associate exception handlers with a try block by providing one or more catch blocks directly after the try block.
https://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html

auch unten gibt es solche Code der zeigt dass, in Cathc-Block kann mann neu Exception throw (Antwort 4)

catch (IOException|SQLException ex) {
    logger.log(ex);
    throw ex;
}

(antwort 3)

kann man in finally-Block neu try-catch-finally schreiben und da weitere Exception werfen ?

 ....
} finally {
            try {
                ...
            } catch (Exception e) {
                ...
            } finally {
                ...
            }

Frage 1.g

(antwort2)

https://www2.cs.fau.de/teaching/WS2014/AuD/slides/secure/aud-14.pdf
seite 15

Falls ein Pfad von vi nach vj führt, so heißt

vi Vorgänger(bei gerichteten Graphen auch: Vorfahr) von vj,
vj Nachfolger (bei gerichteten Graphen auch: Nachkomme) von vi.


Korrektheit in den Lösungen der FSI wird überbewertet hust.
Im Ernst, das sind keine Musterlösungen, das macht die FSI wenn ihnen langweilig ist.
Ich hab nur kurz drüber geschaut, aber du dürftest recht haben, die Lösung ist falsch…


Hmm also nach ausprovbieren würde ich sagen das Antwort 2 und 4 KORREKT sind.

Finally wird immer ausgeführt, auch wenn eine ausnahme geworfen wurde.

und in sowohl in finally wie auch catch blöcken dürfen exceptions geworfen werden.

Daher 1 und 3 FALSCH.

Aber 100% sicher bin ich mir nicht.

Aufgabe 1, e


https://fsi.cs.fau.de/dw/pruefungen/bachelor/aud/loesungws14

Nach der vorhandenen Lösung soll bei 1e) die 1. option „super()“ und die 3. korrekt sein.

Ich habs mal getestet und „super()“ kann wohl nur innerhalb eines Konstrukturs als erste Anweisung stehen.
Beta hat aber gar keinen expliziten Konstruktor und kann daher auch nicht vorkommen.


„Keep in mind that UML is a communication tool, and you can omit details that are not necessary for expressing your message.“ (1)
„What is legal UML? - It’s okay to omit things from UML diagrams if they aren’t needed by team …“ (2)

tl;dr: Da in Java ein Konstruktor ohne Parameter den default-Konstruktor „überschreibt“ und damit nicht die Schnittstelle der Klasse verändert, ist es durchaus legitim, diesen im UML-Klassendiagramm wegzulassen…


Hmm… im Kontext einer Klausur hätte ich die Aufgabenstellung sehr streng gewertet “Welche Code-Zeilen … in … Beta vorkommen, die folgendem UML-Diagramm gehorcht” und so aufgesasst, dass die Klasse vollständig im UML-Diagramm abgebildet wurde. Insobesondere deshalb, weil “+Alpha(a:String, b:long)” offensichtlich den Anschein eines Konstrukturs erwecken soll und in Beta nichts abgebildet wurde. Hier stellst sich dann wohl die Frage, worauf der Autor und Korrektor wert gelegt hat. Aber vielen Dank für deine Ansicht.