fb18.de
/ Diplom Informatik
/ Unterbereich Grundstudium
/ Praktische Informatik
P2/P3 - Fragebox
1. Frage zu Folie I-15 P3 Teil 1 :
Was macht die Grundoperation rest ?
Da steht nur:
rest: list =>list
Kann mich nicht mehr erinnern und nichts dazuvorstellen/finden..
ohne die Folie je gesehen zu haben: Kann des sein, daß die die Liste abzüglich des ersten (der ersten n) Elements zurückgibt?
mmhh, wäre möglich - also wie ein first, nur das die Liste im Mittelpunkt steht..
Andere Frage, wann lohnt es sich abstrakte Klassen oder Interfaces zu referenzieren - kann mich an kein Beispiel erinnern.. - und warum ist das möglich, weil beide einen Typ definieren?
und warum ist das möglich
Polymorphie, dynamisches Binden.
und warum ist das möglich
Polymorphie, dynamisches Binden.
Kenn ich noch - dank Polymorphie kann ich Objekte einer Unterklasse an einem Bezeichner vom Typ einer Oberklasse binden - doch was bringt mir das im Endeffekt ?
Oder wie schon gefragt das referenzieren von Interfaces - um noch mehr zu verbergen?
In einer der Gedächtnisprotokolle habe ich die Frage gefunden:
Erklären sie den Begriff Prozess und Datenabstraktion. Wie werden diese in Java realisiert?
Was Datenabstraktion ist weiss ich, und auch wie die Java umgesetzt wird. Aber was genau ist Prozessabstraktion?
Kenn ich noch - dank Polymorphie kann ich Objekte einer Unterklasse an einem Bezeichner vom Typ einer Oberklasse binden - doch was bringt mir das im Endeffekt ?
Eine Schnittstelle kann somit verschieden implementiert werden, ohne dass ein Klient das zu wissen braucht. Er benutzt nur den Typ der Oberklasse und braucht sich drum zu kümmern, ob oder wie die Operation in Subklassen implementiert ist.
In einer der Gedächtnisprotokolle habe ich die Frage gefunden:
Erklären sie den Begriff Prozess und Datenabstraktion. Wie werden diese in Java realisiert?
Was Datenabstraktion ist weiss ich, und auch wie die Java umgesetzt wird. Aber was genau ist Prozessabstraktion?
Umsetzung der Datenabstraktion in Java = Objekte an sich + Verwendung von abstrakten Klassen + Interfaces ?
oder soll ich da Referenzsemantik vs. Wertesemantik einbringen ?
Prozessabstraktion - Threads und Monitore..?
Oder Datenabstraktion KApselung der Implementation, Klient sieht nur Schnittstelle -> information hidding
Ist in I-55 P3 Teil 1 ein Fehler im dritten Beispiel zu der
Einordnungsreihenfolge von binären Suchbäumen oder hab ich was falsch verstanden:
715:
7
/
1
/ \
4 5
^
|_ ?
Ja, das ist ein Fehler. Die 4 gehört links an die 5.
Warum hat der Garbage-Collector Probleme mit zyklischen Verweisketten?
Je nach Implementation erkennt er dann nicht mehr, dass bestimmte Objekte nicht mehr gebraucht werden.
Der Garbage Collector von Java macht bei jedem Aufruf einen Tree Walk. Jedes dabei besuchte Objekt wird noch gebraucht, der Rest nicht.
Anders dagegen der von Python: Da wird bei jedem Objekt gezaehlt, wie viele Objekt noch darauf referenzieren. Wenn jetzt zwei Elemente zyklisch aufeinander referenzieren, wird der Referenzzaehler von keinem der beiden 0, auch wenn sonst niemand mehr darauf referenziert.
Je nach Implementation erkennt er dann nicht mehr, dass bestimmte Objekte nicht mehr gebraucht werden.
Der Garbage Collector von Java macht bei jedem Aufruf einen Tree Walk. Jedes dabei besuchte Objekt wird noch gebraucht, der Rest nicht.
Anders dagegen der von Python: Da wird bei jedem Objekt gezaehlt, wie viele Objekt noch darauf referenzieren. Wenn jetzt zwei Elemente zyklisch aufeinander referenzieren, wird der Referenzzaehler von keinem der beiden 0, auch wenn sonst niemand mehr darauf referenziert.
Versteh ich nicht ganz, wenn zwei Objekte zyklisch aufeinander verweisen aber keine anderen Objekte auf sie, müssten doch diese beiden Objekte beim Tree Walk gar nicht auftauchen, d.h also vom GC gelöscht werden - warum soll er dann Probleme damit haben?
Aber was genau ist Prozessabstraktion?
Würd ich auch gerne wissen [img]
http://www.fb18.de/gfx/9.gif[/img]
+ Was muss man über dynamische Speicherverwaltung wissen? - im Skript hab ich nichts gefunden
+ Warum ist der ADT Stack eine Typfunktion - warum sind solche in Java nicht möglich?
Wie kann man eine "is-a"-Beziehung, also eine Generalisierung mit Vererbung, aus dem ERM im RM abbilden?
Laut Folie 64 P3-Skript ist dies ja zumindest eingeschränkt möglich…
Tabelle Uni-Angesteller: Nummer, Name, Gehalt
Tabelle Professor: Nummer, Fach
sowas?
falls du genaue Begriffe suchst, dann schaue ins Skript,
z.B. im DIS-Skript Kapitel 4 Folie 21 ff
http://vsis-www.informatik.uni-hamburg.de/teaching/ss-05/dis/
Wie kann man eine "is-a"-Beziehung, also eine Generalisierung mit Vererbung, aus dem ERM im RM abbilden?
Laut Folie 64 P3-Skript ist dies ja zumindest eingeschränkt möglich…
So wie Slater das beschreibt + Sichten, eingeschränkt weil du es "mühsam" nachbildest und beim Löschen etc. immer mehreres berücksichtigen musst.
Danke, das DIS-Skript ist echt nützlich.
kleines verständnisproblem:
Aktivitäten heißen ja nebenläufig, wenn sie kausal unabhängig sind bzw. laut Skript, wenn sie u. A. in beliebiger Reihenfolge auf einem Prozessor ausgeführt werden können.
Später, wenn es um Synchronisation geht, wird jedoch davon gesprochen, dass nur nebenläufige Prozesse für uns interessant sind, die voneinander abhängen, wie wenn z. B. der eine ein Ergebnis des anderen benötigt.
Wenn ich die Definition von Nebenläufigkeit für Aktivitäten auf Prozesse übertrage, ergibt sich da für mich jedoch ein widerspruch. Denn 2 nebenläufige Prozesse lassen sich doch per Definition in beliebiger Reihenfolge ausführen.
Kann mir das mal jemand erläutern?
kleines verständnisproblem:
Aktivitäten heißen ja nebenläufig, wenn sie kausal unabhängig sind bzw. laut Skript, wenn sie u. A. in beliebiger Reihenfolge auf einem Prozessor ausgeführt werden können.
Später, wenn es um Synchronisation geht, wird jedoch davon gesprochen, dass nur nebenläufige Prozesse für uns interessant sind, die voneinander abhängen, wie wenn z. B. der eine ein Ergebnis des anderen benötigt.
Wenn ich die Definition von Nebenläufigkeit für Aktivitäten auf Prozesse übertrage, ergibt sich da für mich jedoch ein widerspruch. Denn 2 nebenläufige Prozesse lassen sich doch per Definition in beliebiger Reihenfolge ausführen.
Kann mir das mal jemand erläutern?
Ich wuerde sagen, dass die Prozesse als sequenzielle Ausfuerung von Aktivitaeten aufgefasst werden. Nebenlaeufigkeit fuer Prozesse bedeutet dann einfach, dass die Prozesse gleichzeitig ausgefuehrt werden (wobei die Aktivitaeten atomar bleiben).
Die Prozesse können schon in einer beliebiegen Reihenfolge ausgeführt werden, als ganzes betrachtet.
Es geht bei der Synchronisation aber darum die Prozesse gleichzeitig auszuführen. Dann kann es in den Atomaren Aktionen zu beeinträchtigungen untereinander kommen:
Wie zum Beispiel die Prozesse a & b die beide:
READ A
CHANGE A
WRITE A
machen.
Also wenn die Verzahnt ausgeführt werden kann sowas passieren:
a_READ A
b_READ A
a_CHANGE A
a_WRITE A
b_CHANGE A
b_WRITE A
bei diesem Beispiel wird dann nur die änderung von b übernommen, aber wenn man die Prozesse als ganzes betrachtet können sie in einer beliebigen Reihenfolge ausgeführt werden
[edit]Da beide änderungen an A vorgenommen werden und nicht nur die von b[/edit]
im skript steht dass die relationenalgebra mengen- und SQL tupelorientiert ist, aber was bedeutet das eigentlich?
weiß dazu keiner was? google sagt dazu leider auch nicht viel.
im skript steht dass die relationenalgebra mengen- und SQL tupelorientiert ist, aber was bedeutet das eigentlich?
Mengenorientiert heißt das die Reihenfolge der Befehle egal ist, das dann trotzdem immer das gleiche Ergebnis rauskommt.
Also Projektion(Selektion) = Selektion(Porjektion)
Das aber bei SQL nicht gilt also es wichtig für das Ergebnis ist in welcher Reihenfolge sind.