Wissensfragen 24.02.2011

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.

Wissensfragen 24.02.2011
Meine Lösungen:
a) falsch
b) richtig
c) richtig
d) f: O(log(n)), g: O(n) O(n*log(n)) <<ja das ist klar, da hab ich nicht genau genug hingeschaut…
e) falsch richtig
f) richtig falsch
g) richtig
h) falsch
i) richtig

Was sagt ihr dazu? Bin mir bei der d bei der Funktion f nicht sicher. Das ist ja in der Klausur denk ich auch ein Druckfehler, die Schleife terminiert so ja nicht. Denke
for ( int k = 0 ; k < n ; k *= 2)
soll for ( int k = 1 ; k < n ; k *= 2) heißen oder? Auch da kann ich nicht begründen warum ich O(log(n) genommen hab, erschien mir nur am wahrscheinlichsten.

MfG xlemmingx


[quote=xlemmingx]
Meine Lösungen:
a) falsch
b) richtig
c) richtig
d) f: O(log(n)), g: O(n)
e) falsch
f) richtig
g) richtig
h) falsch
i) richtig

Was sagt ihr dazu? Bin mir bei der d bei der Funktion f nicht sicher. Das ist ja in der Klausur denk ich auch ein Druckfehler, die Schleife terminiert so ja nicht. Denke
for ( int k = 0 ; k < n ; k *= 2)
soll for ( int k = 1 ; k < n ; k *= 2) heißen oder? Auch da kann ich nicht begründen warum ich O(log(n) genommen hab, erschien mir nur am wahrscheinlichsten.

MfG xlemmingx
[/quote]Ich meine mich erinnern zu koennen, dass g f aufruft, also g in O(n log n) ist.


ich hab

d) f: O(log(n)), g: O(n*log(n)) (wobei du hier recht hast, das ist irgendwie Quatsch)
e) richtig (1 2 3 4 5 6 7 8 9 Ich wüsste nicht wie man auf 5 zugreifen sollte, wenn man nicht n/2 Schritte macht)
f) falsch (da bin ich mir auch nicht ganz sicher, aber ich denke mit etwas Pech kann das durchaus mehr werden)


Bei der d hab ich nicht genau hingeschaut, bei der e hatte ich keine Ahnung, aber so wie du das erklärst erscheint mir das sinnvoll.
Zur f, meinte mal gelesen zu haben das das der Vorteil des quadratischen Sondierens ist, wieso sollte man das sonst machen? Mir fällt auch grade kein Gegenbeispiel ein.

edit:
wiki sagt dazu folgendes:
Quadratisches Sondieren ergibt keine Verbesserung für die Wahrscheinlichkeit eine Sondierung durchführen zu müssen (h0(x) = h0(y)), kann aber die Wahrscheinlichkeit von Kollisionen während der Sondierung (h0(x) = hk(y)) herabsetzen, d. h. Clusterbildung wird vermieden.

Also hast du Recht.


e) ist richtig.


Eine Frage zur i)
Mir ist klar das, dass Programm richtig ist und getTitel() aufgerufen werden kann weil Book Oberklasse ist.
Was ich aber nicht verstehe ist das Beispiel dazu im Skript Folie 10-29: Wieso funktioniert “f.doThat()”, angenommen Klasse E enthält diese Methode nicht???
Vielen Dank schonmal :wink:


funktioniert garnicht, deshalb steht auch im skript der satz „Aufruf spezieller Methoden der generischen Klasse nicht erlaubt, da Laufzeittyp unbekannt“, sprich „des geht so ned, weil ma ja ned weiß was f is“


Ja aber ich verstehe nicht wieso dass nicht funtioniert und in der Klasse Rack der Klausuraufgabe mit entity getTitel() aufgerufen werden kann. Liegt dass einfach daran dass B entity der Parameter ist der der Methode übergeben wird und man ihn somit nicht ändern kann, also auch der dynamische Typ fix ist…???


Wir kennen die Klasse Book und deren Methoden. Diese Klasse besitzt eine Methode getTitle().
Für den generischen Typ legen wir am Anfang von Rack fest
Das heißt B ist eine beliebige UNTERklasse von Book. Es darf also nichtmehr alles sein, sondern nurnoch Unterklasse von Book.

Da Methoden der Unterklasse die Methoden der Oberklasse verwenden können (sofern nicht private) können wir für B die Methode getTitle() aufrufen, weil sie mit Sicherheit existiert.

In den Vorlesungfolien wissen wir nicht mit Sicherheit ob der generische Typ diese Methode überhaupt ausführen kann. Deswegen funktioniert das da nicht.


Hab die UML Aufgabe mal reingestellt - vllt könnte da nochmal jmd drüberschauen.


class Firma{
	
	String name;
	Person geschaeftsfuehrer;
	Person[] mitarbeiter;
	
	int gibAnzahlMitarbeiter() {
	}
	
}
 
class Person {
	
	String name;
	int gebJahr;
	
	Person vorgesetzter;
	Person[] unterstellteMitarbeiter;
	
	Person[] gibAlleUnterstelltenMitarbeiter() {
	}
	
}

ich hab noch ein paar fragen zu den wissensfragen:

“Ein AssertionError tritt in einer seiteneffektfreien assert-Anweisung auf, wenn die
Zusicherung während der Programmausführung nicht erf¨ullt ist, jedoch nur, falls das
Pr¨ufen von Zusicherungen durch die Java-VM beim Programmstart aktiviert wurde.”

Ich hab die Thematik mit dem seiteneffekt nicht wirklich durblickt. Kann mir das jemand kurz erläutern? :slight_smile:

Genauso versteh ich nicht ganz was hinter den Generics steckt.

"Welche der folgenden Ausnahmeklassen müssen in der Methodensiognatur deklariert werden, falls die Mthode eine solche Ausnahme werfen könnte?

MyOwnError extends java.lang.Error java.io.IOException extends java.lang.Exception java.lang.ClassNotFoundException extends java.lang.Exception java.lang.RuntimeException extends java.lang.Exception "

Gibt es dafür irgendwo eine Übersicht oder woran erkenne ich welche Ausnahme in die Methodensignatur muss und welche nicht?


Folie 9-30 hilft da etwas :slight_smile:

Ich würde sagen 2-4 stimmen (laut Folie)


mal ne kurze frage.

Waren dieses Jahr keine ADTs in den Übungen dran?


Im Blatt 10, als Gruppenaufgaben.


Nein.

EDIT: Zu langsam und Forum hat keine Post-Loeschfunktion(?).


Doch! Blatt 10!


aber irgendwie in ganz anderer Art und weise als sonst, oder irre ich mich? Was sollte ich denn davon können? Den alten ADT Kram wie es früher immer dran kam kann ich…

Würd mir mal jm die Lösung zu der letzten Aufgabe in Blatt 10 zuschicken?


Ja, also kamen nicht keine ADTs dran, oder?


ADT kam in den Übungsaufgaben dran !

Müsste bei der 5c nicht setSeen(createPost(s, d, b), v) = createPost(s, d, v) stehen ? :slight_smile: