# 80 Theoriefragen Klausurvorbereitung



## XtremWi'ler (3. Jul 2012)

Zur Klausurvorbereitung habe wir ein paar fragen zu Java und Progen bekommen.

Mich würde jetzt mal interessieren ob ich alles richtig verstanden habe.

Achja, würde mich auch sehr freuen wenn mir wer fragen 63, 68 und 72 beantworten kann.

Danke 


Fragen
1. Weshalb werden Klassenattribute typischerweise mit private qualifiziert?
- um das Prinzip des data hinding zu erfüllen
- damit keine variablen durch direkten zugriff verändert werden können
2. Macht es Sinn Methoden als private zu deklarieren?
-ja wenn die Methoden nur in der klassen verwendet werden müssen
- damit Methoden nicht von außen aufgerufen werden können
3. Weshalb benutzt man getter und Setter Methoden?
- um das Prinzip des data hiding zu erfüllen
-um private variablen in einer klasse zu ändern oder auszugeben
4. Wozu dient das Schlüsselwort „this“?
-um auf die klasse, in der man gerade ist, selbst zu verweisen
- um bei Parameter Übergabe in Methoden Fehler zu vermeiden 
Bsp.:  
Int I = 5;
public void set (int i) { 
	This.i = I;
}
5. Ist die Verwendung von this in einer als static deklarierten Methode sinnvoll?
	-ja wenn das Objekt auf das this verweist auch static ist
Bsp.:
Private static int i = 5;
Public static void set ( int i ) {
	This.i = i
}
	- ansonsten würde es auch einen Compilerfehler geben
6. Was versteht man unter dem Überladen einer Methode?
- wenn der Name einer Methode mehrfach verwendet wird und nur durch seine parameter unterscheidbar ist
7. Was bewirkt die Qualifizierung eines Attributes mit final?
- ein Attribute welches mit final initialisiert wird kann nur einmal deklariert werden
- ein final Attribute ist somit als konstante anzusehen und somit komplett groß zu schreiben
- man kann es vergleichen mit einer privat variablen wozu es keine getter und Setter gibt , diese ist nämlich nach dem initialisieren nicht mehr veränderbar
8. Was sind die Unterschiede beim Aufruf zwischen statischen und nicht-statischen Methoden?
- eine statische Methoden ist wieder der Name schon sagt statisch dh. Sie ist schon da 
- mit anderen Worten sie muss nicht erst erzeugt werden sonder kann ohne instanziierung gleich verwendet werden
- viele der Methoden der klasse math sind static
9. Was sind Konstruktoren und wozu dienen diese?
-konstruktoren sind da um eine Instanz des Objektes zu erzeugen
-es sind eigentlich auch nur Methoden die groß geschrieben werden
-und die variablen mit ihren werten initialisieren
10. Was bewirkt die „finalize“ Methode in Java? Macht es Sinn, diese zu verwenden?
-finalize ist die Methode die ein Objekt zerstört dh. Sie löscht es und gibt den vom Objekt verwendeten speicher frei
-man kann sie verwenden wenn man möchte dass eine neue Instanz eines anderen Objektes erzeugt wird wenn das verwendete object gelöscht wird
-in vielen anderen sprachen wie zb. c++ wie die finalize Methode als destruktor bezeichnet
- In Java muss man die Methode aber nicht explicit aufrufen werden, da sie von dem Garbage collector aufgerufen wird wenn die Instanz des object nicht mehr gebrauch wird
11. Macht es Sinn einen Konstruktor ein private vorranzustellen?
- ja wenn man den Konstruktor durch einen anderen aufrufen will, und nicht möchte dass man ihn von außen aufrufen kann
-somit ist der Konstruktor nur in dem Objekt selbst verwendbar
12. Was ist der Unterschied zwischen einer Basis- und einer Superklasse?
- eine Basis bzw. superklasse ist das gleiche und meint das es eine „Haupt“ klasse ist von der eine „unter“klasse abgeleitet ist
13. Was ist der Unterschied zwischen einer Basis- und einer Subklasse?
- eine Basis klasse ist einer der subklasse übergeordnete dh die subklasse hat min alle Methoden der basisklasse nur nicht der ihre Konstruktoren
- das Prinzip wird auch als Vererbung bezeichnet , die subklasse erweitert die basisklasse
14. Was besagen die „ist ein“ und „hat ein“ Regeln?
- das eine Cabrio eine Auto ist = ist ein
-eine konkretes Objekt ist von einem abstrakten object abgeleitet
-cabrio hat eine Farbe und Auto hat eine Farbe
- das heißt es gibt eine konkretes Objekt das die gleichen Eigenschaften wie das abstrakte Objekt
15. Was ist Mehrfachvererbung?
-Mehrfachvererbung auch Polymorphismus genannt ist ein vorgehen um ein Objekt von Mehrern Objekten erben zulassen, und so ohne weiteres nicht in Java möglich( bei konkreten Objekten) um den Benutzer zu schützen zweimal die gleiche Methode mit unterschiedlichen Implementierungen aus verschiedenen Objekten zu haben
-bei abstrakte klassen bzw. Interfaces lässt Java eine Vererbung zu hier müssen die Methoden ja auch noch implementiert werden und somit ist eine unterschiedliche Implementierung der gleichen Methode
16. Was versteht man unter Polymorphismus?
-sollte das gleiche wie 15 sein
17. Was versteht man unter der Signatur einer Methode?
- die Signatur einer Methoden sind unteranderen die Parameter dieser Methoden 
18. Kann eine Subklasse eine Methode enthalten, welche sich von einer entsprechenden Methode in der Basisklasse nur durch den Rückgabewert unterscheidet?
-ja wenn die Methode in der subklasse die Methoden in der basisklasse überschreibt
19. Können private Methoden einer Basisklasse in einer Subklasse überschrieben werden?
- nein weil sie nicht vererbt werden also es kann eine Methode mit der gleichen Signatur und dem Namen geben dies überschreibt aber nicht die privat Methode der basisklasse weil diese ja nicht vererbt wird
20. Ist die Typkonvertierung (Sub)b für Base b = new Sub() zulässig?
-ja weil die sub b ja von Base abgeleitet ist und man immer übergeordnete klassen als typ nehmen kann
-Sub b = new Base() würde nicht gehen weile sub eine Spezialisierung von Base ist 
21. Wozu benutzt man instanceof?
- wenn man vergleichen will ob eine Objekt eine instance dies Objektes ist
-es unteranderem beim singelton Entwurfsmuster verwendet
-zb wenn man will dass nur ein Fenster erzeugt wird
22. Was versteht man unter dem Überschreiben von Methoden?
- wenn man eine Methoden der basisklasse in einer Methode der subklasse anders implementiert der Methodenname und die Signatur aber gleich sind
23. Was ist ein interface und wozu wird es benutzt?
- ein interface ist eine abstrakte klasse die so Abstract ist das alles in ihr abstakt ist
- man verwendet es wenn man sichergehen will das bestimmte Methoden implementiert werden
24. Können Interfaces auch Attribute enthalten?
-ja diese Attribute sind dann finale und werden nicht vererbt
Fragen
25. Wie kann man von inneren Klassen auf Attribute der äußeren Klasse zugreifen?
- man kann die direkt ansprechen ohne eine instance zu erzeugen 
- braucht keine getter oder Setter
26. Wie kann man von einer inneren Klasse, die Teil einer äußeren Subklasse ist, auf die Attribute der Basisklasse zugreifen?
-indem man eine instanze erzeugt oder sie sind static 
-und dann per getter und Setter
27. Was bewirkt das Schlüsselwort super?
-mit super kann man auf die Basis klasse verweisen
28. Was bewirkt der Methodenaufruf this();
29. Was bewirkt der Methodenaufruf super();?
-verweist auf die Basis um klasse Konstruktor bzw. Methode aufzurufen
30. Kann man in einem Konstruktor einer Klasse einen anderen Konstruktor derselben Klasse aufrufen?
- ja wenn man  sicher gehen will das das Objekt mit verscheiden Parameter belegt ist
Public class MeineClasse{
Public MeineClasse(){}
Public MeineClasse(int i){
Public MeineClasse{}
}
Public MeineClasse(int i, String s){
Public MeineClasse(int i){}

}
}
31. Was macht die equals Methode der Klasse Object?
- sie vergleich ob die Objekte die gleichen Attribute haben und an derselben stelle im speicher steht(dazu wird ein hash wert verwendet)
32. Was macht eine „gute“ equals Methode aus?
- kommt drauf an wie man gut interpretiert
-bei Strings zb ist die equal Methode gut implementiert weil Strings ja aus eine pool ausgewählt werden und damit das erzeugte Objekt immer am gleichen speicher steht
String string1 = new String („hallo Welt“);
String string2 = new String (“hallo Welt”);
String2.equals(string1); // Return true
- weil beide an der gleichen stelle im speicher verweisen
-bei primitiven Datentypen wie integer ist sie nicht gut weil bei der Initialisierung für die gleiche zahl eine andere Stelle im speicher reserviert wird
Int i = 5;
Int i2 = 5;
I2.equals(i); // return false
33. Was bewirkt das Schlüsselwort Abstract vor einer Klassendeklaration?
- es bewirkt das die klasse abstract somit kann sie nicht instanziiert werden und muss mit Implementes vererbt werden
- somit kann man Methoden festlegen die erst später implementiert werden
- aber zum unterschied zu Interfaces kann man auch Methoden direkt implementieren
34. Was bewirkt das Schlüsselwort Abstract vor einer Methodendeklaration?
- die Methode ist abstakt und kann somit auch später implementierte werden
35. Was bewirkt das Schlüsselwort static vor einer Methodendeklaration?
- das die Methode static ist und somit ohne eine Instanziierung der klasse aufgerufen werden kann
- weile Methoden der klasse math sind static
36. Was ist der Unterschied im Zugriff auf statische und nicht-statische Methoden?
- sie müssen nicht instanziiert werden
37. Ist es möglich in einer abstrakten Klasse eine finale Methode zu besitzen?
-ja ist möglich
38. Was versteht man unter anonymen Klassen?
- klassen die bei instanziiert werden aber nicht deklariert, somit kann man sie über keine variable ansprechen
Zb class Main {
New jframe;
}
39. Wann werden anonyme Klassen eingesetzt?
- wenn man die instanze nicht direkt ansprechen muss
Zb class Main {
New jframe;
}

40. Was sind die Einschränkungen von anonymen Klassen?
- das weiß ich nicht
41. Wie weißt man einer Klasse eine Schnittstelle zu?
-durch das Schlüsselwort Implements
42. Kann eine Klasse auch mehrere Schnittstellen erhalten?
- ja weil nicht die gleichen Methoden mit unterschiedlicher Implementierung auftreten könne
43. Kann man Referenzen auf Schnittstellen erzeugen?
- nein , man kann keine Instanz einer Schnittstelle erzeugen
44. Kann man Objekte aus Schnittstellen erzeugen?
- ist das nicht das gleiche wie 43?
45. Was sind generische Klassen?
- generische klasse können alle Daten typen annehmen die man über gibt
-sie werden in <> klammer geschrieben nach klassen nahmen, 
-man verwendet meist ein T
- man kann sie auch noch einschränken in dem man sagt<T extends>
46. Können anonyme Klassen Attribute enthalten?
- ja man kann aber nicht über getter oder Setter darauf zugreifen
47. Können anonyme Klassen Konstruktoren enthalten?
- ja müssen sie sogar ansonsten kann man sie ja nicht instanziieren
48. Können anonyme Klassen static Attribute/Methoden enthalten?
- ja wenn am sagt Systen.out.println(math.random+“ ist eine Zufallszahl“);
Fragen
49. Wozu dienen Exceptions?
-um auftretende Fehler abzufangen
50. Was versteht man unter Wrapping?
- wenn man primitive Datentypen in Objekt verwandlet, dies kann unteranderem nützlich für den Compiler sein, sowie Typsicherheit bei coden bringen
51. Was versteht man unter Boxing?
- wenn man primitive Daten typen in Objekte verwandlet
52. Wozu benutzt man sogenannte try-catch-Blöcke?
- um auftretende exceptions zu fangen
-zb wenn ein Programm etwas in einer Datei speicher soll und dabei mitbekommt das es schon eine Datei mit demselben Namen gibt dann gibt es eine exception welche durch try-catch abgefangen werden kann und dann mit einer Textausgabe mit“Datei Name schon vorhanden“ an den Benutzer schickt
53. Ist die throws-Anweisung teil der Signatur?
- nein sie sagt nur dass beim Aufruf eine exception aufgefangen werden muss
54. Wie können Ausnahmen ausgelöst werden?
- wenn variablen deklariert aber nicht initialisiert sind BSP Nullpointerexzeption
-wenn ich in einem Array mit 5 felder das  6 Feld anspreche bsp. arrayoutofbounds
- Datei schon vorhabe
- Datei nicht vorhanden filenotfound
55. Was bewirkt das „finally“ ?
- damit nach einer exception noch etwas aufgerufen werden kann
-  Zb.  
Catch {
FileStream input = New fileinputstrem (new bufferedreader) ;}
finally (exception e){ 
input.close
}
- somit ist der Reader auch bei einer exception geschlossen, was System Ressourcen schonen kann
56. Wie lauten die grundsätzlichen Regeln für Exceptions?
- da abfangen wo sie auftreten und nicht immer weiterreichen
57. Was sind Streams, und welche Arten gibt es?
- Streams sind Daten ströme meist binär
-InputStream and OutputStreams
58. Wozu benutzt man die Groß-O-Notation?
-um den Rechenaufwand eines Algorithmus zu beziffern
59. Was versteht man unter einer einfach verketteten Liste?
- eine liste ist ein Datentyp
- und einfach verkettet meine dass jeder Element nur seinen Nachfolger kennt
60. Was versteht man unter einer mehrfach verketteten Liste?
- wenn eine liste sowohl seine Nachfolger und Vorgänger kennt
61. Was versteht man unter einer Ringliste/zirkulären Liste?

62. Wie macht man aus einer verketteten Liste eine Warteschlange?
- in dem man sie in der Reihenfolge in der sie hinzugefügt wurde abarbeitet
63. Wir macht man aus einer verketteten Liste eine prioritisierte Warteschlange?
64. Wie erkennt ein Iterator, wann alle Elemente abgearbeitet sind?
- wenn die Methode hasNext false zurück gibt
65. Was ist eine Deque?
- ist eine warteschlagen wo der letzte als erstes abgearbeitet wird
66. Was ist Hashing?
- wenn man Objekt in einer Tabelle speichert die über einen Index ansprechbar ist
67. Was macht eine gute Hashfunktion aus?
- es treten wenig kollisonen auf
68. Wie sollte die Größe einer Hashtable idealerweise angelegt sein?
69. Wie geht man mit Kollisionen beim Hashing um?
- man sondiert sein entweder linear oder quadratisch 
- man kann auch noch eine andere Hashfunktion benutzen um eine neues buket zu finden
- man kann auch eine verkettete liste nehmen was aber rechen aufwendiger wird
70. Warum ist das quadratische Sondieren dem linearen vorzuziehen?
- weil es die werte gleichmäßiger über die Tabelle verteilt
71. Darf es in einer Hashtabelle Elemente geben, welche gleich sind?
- ja gleiche Elemente schon nur müssen die einen anderen Index haben
72. Was versteht man unter Rehashing? Kann dies auch bei einer Verkettung auftreten?
-wenn man aus Hashwerte den inhalt ausrechnet?

73. Was sind Bäume?
- Datentypen die eine ausgangspunkt (wurzel,Root) haben und dann im Idealfall zwei knoten dran 
Fragen
74. Nennen Sie den Unterschied zwischen AVL-Binärbäumen und „normalen“ Binärbäumen?
- Avl-Binärbäume sind sortierte Binärbäume das heißt das ein knoten Max eine stufe unterschied zu einem anderen knoten hat
75. Wozu werden Binärbäume benutzt?
- um möglichst efficient zu suchen
76. Wo liegt der Vorteil bei einem AVL-Binärbaum?
- sie sind sortiert und arten nicht in listen aus
77. Nennen und beschreiben Sie die vier Traversionsarten!
-preorder, postorder, inorder, Levelorder
- preorder (wlr) zuerst wird die wurzel dann der linke und anschließend der rechte Teilbaum durchlaufen
-postorder (lrw)zuerst wird der l dann der rechte und zum Schluss die wurzel durchsucht
-inorder(lwr)zuerst der linke dann die wurzel und zum Schluss der rechts wird durchsucht
-levelorder hier wir bei der wurzel begonnen und dann ebene für ebene von links nach rechts durchlaufen

78. Welche Anforderung besteht an die Objekte, die man in einem Baum einfügen möchte?
- es muss sortierbar sein 
79. Was ist eine Collection?
- Collection ist der die superklasse von alles listen, Sets oder maps. 
-sie ist von iterabel abgeleitet
-man kann in hier verscheiden Datentypen speichern
80. Was ist der Unterschied von Sets und Maps?
List ist geordnet und kann dublicate habe
Sets sind ungeordnet und kann kein dublicate habe
Maps sind die Werte immer mit einem Index versehen


----------



## AquaBall (3. Jul 2012)

Die ersten hab ich hab noch durchgelesen.

Bei (5) kam mein erstes "ja, aber"
Bei (7) wollt ich dann korrigieren, dann hab ich erst den Umfang gesehen.

Sorry, aber das ist mir zu viel!

PS: Versuch dich auf die Punkte zu reduzieren, wo du nicht sicher bist,
und stell konkrete Fragen was du wissen willst.


PPS: Glaub kaum, dass du bei der Klausur durchfällst.


----------



## nillehammer (3. Jul 2012)

> 4. Wozu dient das Schlüsselwort „this“?
> -um auf die klasse, in der man gerade ist, selbst zu verweisen
> - um bei Parameter Übergabe in Methoden Fehler zu vermeiden


Etwas ungenau. Mit this hat mein eine Referenz auf *die Instanz* der Klasse, in der man gerade ist.
Man vermeidet Fehler genau dann, wenn ein Methodenparameter zufällig (oder absichtlich) genau den gleichen Namen hat, wie eine Instanzvariable.


> 5. Ist die Verwendung von this in einer als static deklarierten Methode sinnvoll?
> -ja wenn das Objekt auf das this verweist auch static ist


Falsch, in einer statischen Methode kann _*this*_ überhaupt nicht verwendet werden, weil im statischen Kontext die Instanz fehlt, auf die man zugreifen will/können muss


> 7. Was bewirkt die Qualifizierung eines Attributes mit final?
> - ein final Attribute ist somit als konstante anzusehen und somit komplett groß zu schreiben
> - man kann es vergleichen mit einer privat variablen wozu es keine getter und Setter gibt , diese ist nämlich nach dem initialisieren nicht mehr veränderbar


- ein Attribute welches mit final initialisiert wird kann nur einmal deklariert werden
Falsch, ein final deklariertes Attribut kann nur einmal *initialisiert* werden. Dies muss entweder direkt bei der Deklaration des Attributs oder den Konstruktoren geschehen.
- ein final Attribute ist somit als konstante anzusehen und somit komplett groß zu schreiben
Falsch, das Attribut ist zwar nach seiner Initialisierung nicht mehr änderbar und darum im Kontext der zugehörigen Instanz konstant, es wird aber im Gegensatz zu "static final" Variablen nicht groß geschrieben.
- man kann es vergleichen mit einer privat variablen wozu es keine getter und Setter gibt , diese ist nämlich nach dem initialisieren nicht mehr veränderbar
Nicht ganz, die Auswirkungen sind ähnlich. Zunächst wäre nur das Fehlen des setters ein Anzeichen für unveränderlichkeit von außen. Das Attribut wäre aber von iinnerhalb der Klasse/Instanz änderbar. Insofern hinkt der Vergleich etwas. Finale Attribute sind "etwas mehr unveränderbar" als Attribute ohne setter.


> 10. Was bewirkt die „finalize“ Methode in Java? Macht es Sinn, diese zu verwenden?
> -finalize ist die Methode die ein Objekt zerstört dh. Sie löscht es und gibt den vom Objekt verwendeten speicher frei
> -man kann sie verwenden wenn man möchte dass eine neue Instanz eines anderen Objektes erzeugt wird wenn das verwendete object gelöscht wird
> -in vielen anderen sprachen wie zb. c++ wie die finalize Methode als destruktor bezeichnet


Falsch, finalize wird vom GC aufgerufen, wenn ein Objekt vom Speicher geräumt wird. Sie bietet die letzte Gelegenheit zu Aufräumarbeiten, sie löscht aber selbst nicht das Objekt. Man sollte sie nie selbst aufrufen und man sollte sie auch nicht für Aufräumarbeiten verwenden, die sicher ausgeführt werden sollen. Es kann nämlich sein, dass ein Objekt nie vom Speicher gelöscht wird und finalize darum nie aufgerufen wird.


> 16. Was versteht man unter Polymorphismus?
> -sollte das gleiche wie 15 sein


Nein, unter Polymorphismus versteht man, dass sich (Unter-)Klassen, die die selben Methoden haben sich dabei unterschiedlich verhalten.


> 18. Kann eine Subklasse eine Methode enthalten, welche sich von einer entsprechenden Methode in der Basisklasse nur durch den Rückgabewert unterscheidet?
> -ja wenn die Methode in der subklasse die Methoden in der basisklasse überschreibt


Nein, zur Signatur einer Methode gehört ihr name und ihre Parameterliste, *nicht* der Rückgabewert. Man kann also Methoden nicht mit veränderten Rückgabewerten überschreiben. Entweder die Methode in der Basisklasse ist private, dann ist sie in der Subklasse sowieso nicht sichtbar und es handelt sich garnicht um Uberschreiben, sondern um die Deklaration einer neuen Methode oder man muss den Namen oder die Parameterliste ändern.

Weiter hab ich keine Lust, das ist ja endlos!


----------



## HelgeW (3. Jul 2012)

zu 40. Was sind die Einschränkungen von anonymen Klassen?
==>> Sie können zwar zusätzliche Methode haben, diese sind von aussen jedoch nicht ansprechbar
  Beispiel:
  ActionListener al = new ActionListener() {
	...
	public void abc() {};
  };
  al.abc(); <<== das geht nicht!!!

zu 43. Kann man Referenzen auf Schnittstellen erzeugen?
==>> Eine Referenz kannst Du erzeugen! Wenn eine Klasse ein Interface implementiert kannst Du eine variable des Typs vom Interface 
     mit einer Instanz dieser Klasse belegen...

zu 47. Können anonyme Klassen Konstruktoren enthalten?
==>> sie brauchen keine Konstruktoren...und ich glaube das geht auch nicht...bitt noch einmal nachlesen! :rtfm:

48. Können anonyme Klassen static Attribute/Methoden enthalten?
==>> nein, da es keine Klasse gibt. Was Du schriebst waren statische Aufrufe 
Fragen
49. Wozu dienen Exceptions?
==>> Um Fehler unterschiedlicher Art an den Aufrufen weiter zu leiten und zu verarbeiten

mal schauen, was der Rest noch so hergibt...


----------



## HelgeW (3. Jul 2012)

zu 54. Wie können Ausnahmen ausgelöst werden?
Durch einen Fehler
Durch den Aufruf von z.B.: *throw* new Exception()

zu 55. Was bewirkt das „finally“ ?
korrekt beschrieben...einfacher, dass dieser Codeteil in jedem Fall vor Verlassen des Blockes ausgeführt wird

zu 61. Was versteht man unter einer Ringliste/zirkulären Liste?
Eine mehrfach verkettete Liste, deren Ende mit dem Anfang verbunden ist und somit weder Anfang noch Ende im eigentlichen Sinnen hat

zu 63) Wir macht man aus einer verketteten Liste eine prioritisierte Warteschlange?
In dem die Position in der Liste die Prio angibt...je weiter vorn, desto höher...und beim Einfügen entsprechend der Prio einfügen und nicht pauschal hinten anhängen

so, Pause zu Ende


----------



## HimBromBeere (3. Jul 2012)

> 40. Was sind die Einschränkungen von anonymen Klassen?


naja, dadurch, dass sie keinen Namen und kein nix haben, kann man sie natürlich nur ein enziges Mal innerhalb eines bestimmten Kontextes verwenden. Attribute und (selbst definierte) Methoden sind hierbei nicht (von außen) verwendbar (obwohl definierbar). 



> 43. Kann man Referenzen auf Schnittstellen erzeugen?
> - nein , man kann keine Instanz einer Schnittstelle erzeugen





			
				HelgeW hat gesagt.:
			
		

> Eine Referenz kannst Du erzeugen! Wenn eine Klasse ein Interface implementiert kannst Du eine variable des Typs vom Interface
> mit einer Instanz dieser Klasse belegen...


Eine Schnittstelle ist nicht instanziierbar, das stimmt schon... dafür ein Zitat aus der Doku von Oracle:


			
				JavaTutorial hat gesagt.:
			
		

> Abstract classes cannot be instantiated, but they can be subclassed.





> 44. Kann man Objekte aus Schnittstellen erzeugen?
> - ist das nicht das gleiche wie 43?


Nö, is es nicht. Die Antwort ist aber die gleiche: nein 



> 54. Wie können Ausnahmen ausgelöst werden?
> - wenn variablen deklariert aber nicht initialisiert sind BSP Nullpointerexzeption
> -wenn ich in einem Array mit 5 felder das 6 Feld anspreche bsp. arrayoutofbounds
> - Datei schon vorhabe
> - Datei nicht vorhanden filenotfound


Ein einfaches 
	
	
	
	





```
throw new ...Exception
```
 wäre hier wohl die sinnvollere Antwort gewesen.



> 73. Was sind Bäume?
> - Datentypen die eine ausgangspunkt (wurzel,Root) haben und dann im Idealfall zwei knoten dran


Idealerweise zwei Knoten? Nö, das ist abhängig vom Anwendungsfall. Mir fallen da sponatn Quadtrees ein, die nicht nur so heißen, Quads coole Vehikel sind...



> 80. Was ist der Unterschied von Sets und Maps?
> List ist geordnet und kann dublicate habe


OK


> Sets sind ungeordnet und kann kein dublicate habe


OK


> Maps sind die Werte immer mit einem Index versehen


Index? Das Teil heißt Schlüssel (key) und darf nur einmal vorkommen. Maps bestehen demnach aus key-value-Paaren.


----------



## timbeau (3. Jul 2012)

78. Wirklich? Denke ich nicht. Bäume können einfache Vater-Kind Knoten sein die eine Struktur abbilden. Gegenteiliges bitte mit Quelle, ich bin mir zu 99% sicher, dass dies so ist. 

Z.B. XML-Bäume

Zu 54. sollte man denke ich die Runtime Exceptions erwähnen und die Non-Runtime Exceptions

58: Asymptotisches Verhalten eines Algorithmus(Das Fachvokabular solltest du dir überhaupt bei allen Fragen angewöhnen. Die Antworten sind sehr schwammig formuliert zum großen Teil)

Siehe 17: Signatur blablabla ist falsch. In Java enthält/besteht die Signatur den Namen der Methode, den Rückgabewert und die Parameter und optional die Zugriffsbeschränkung. 

32 New erzeugt 2 Objekte, die jedoch durch equals auf den Inhalt geprüft werden. Der Sinn dahinter ist ein ganz anderer. 

36. unpräzise
40. nachlesen?
42. Begründung falsch bzw unklar. Es sit durchaus möglich, dass man 2 Interfaces implementieren möchte die exakt die gleiche Methode haben. Klappen wird das natürlich nicht so einfach.


----------



## Marcinek (3. Jul 2012)

timbeau hat gesagt.:


> Siehe 17: Signatur blablabla ist falsch. In Java enthält/besteht die Signatur den Namen der Methode, den Rückgabewert und die Parameter und optional die Zugriffsbeschränkung.



Falsch 

Signatur in Java ist Name + Parameter.



HimBromBeere hat gesagt.:


> 80. Was ist der Unterschied von Sets und Maps?
> List ist geordnet und kann dublicate habe
> 
> OK



Nicht ganz OK.

Weder in Listen noch Sets spielt die Ordnung eine Rolle.

In einem Set existiert jedes Element nur einmal.



timbeau hat gesagt.:


> 36. unpräzise



Nicht nur unpräzise, sondern auch falsch. Methoden müssen nie instanziiert werden.


----------



## timbeau (3. Jul 2012)

.... wieder was gelernt.


----------



## njans (3. Jul 2012)

Marcinek hat gesagt.:


> Weder in Listen noch Sets spielt die Ordnung eine Rolle.



Vielleicht verstehe ich nicht, was du eigentlich damit meinst, aber die Ordnung ist Listen ist essenziell Teil der Datenstruktur. Bei Sets ist die Ordnung nicht gegeben. Listen hingegen definieren die Ordnung die sich auch aktiv und gewollt bestimmen lässt.


----------



## timbeau (3. Jul 2012)

Ordnung eher im Sinne von Sortierung denke ich. Die Antwort ist aber mE auch unglücklich. Eher Duplikate vs keine Duplikate und Index vs kein Index


----------



## Gonzo17 (3. Jul 2012)

Marcinek hat gesagt.:


> Nicht nur unpräzise, sondern auch falsch. Methoden müssen nie instanziiert werden.



Um das mal auch richtig zu beantworten. Der Unterschied zwischen dem Zugriff auf eine statischen und dem einer nicht-statischen Methode liegt darin, dass man bei statischen Methoden direkt auf die Methode der Klasse zugreifen kann unabhängig von einer Objektinstanz. Der Aufruf einer nicht-statischen Methode erfolgt dementsprechend immer auf einer Objektinstanz dieser Klasse und wird natürlich auch nur auf genau diese eine Objektinstanz ausgeführt.

Statische Variablen sind übrigens für alle Objekte dieser Klasse gleich, wenn man also den Wert dieser statischen Variable ändert, dann ist er auch für alle anderen Objekte geändert.


----------



## XtremWi'ler (3. Jul 2012)

helgeW 
danke jetzt habe ich verstanden was annonyme klassen sind, dachte die ganze 
zeit das sind innere klassen die nur instanzierwerden aber nicht deklariert (also wenn ihnen keine variable zugeordnet wurde)
daher auch das beispiel aus 48

und zu 61 was meinst du mit mehrfach verkettete list wenn jedes Elemet in der liste 
seine vor und nachfolger kenn ansonsten das mit ring ist jetzt auch klar 

zu Himbrombeere 
Wir hatten bis jetzt leider erst binärbäume aber danke 
kann ich da dann einfach sagen : datentypen die eine ausgangspunkt haben und mitdestens
2 kinder 

Marcinek 
sorry wegen 36 ja richtig hätte ich schreiben müssen man muss keine instanz des objektes 
erzeugen um eine static Methode aufzurufen

das darf in der klausur nicht passieren


Und nochmal ein großes Danke Schön an alle die so fleißig gepostet haben.


----------



## HimBromBeere (3. Jul 2012)

> und zu 61 was meinst du mit mehrfach verkettete list wenn jedes Elemet in der liste
> seine vor und nachfolger kenn ansonsten das mit ring ist jetzt auch klar


Na in einer einfach verketteten Liste kennt jedes Element nur seinen Nachfolger (next). In einer doppelt verketteten Liste kennt jedes Element zusätzlich auch seinen Vorgänger, wodurch du sowohl vom Anfang als auch vom Ende der Liste durchiterieren kannst.



> zu Himbrombeere
> Wir hatten bis jetzt leider erst binärbäume aber danke
> kann ich da dann einfach sagen : datentypen die eine ausgangspunkt haben und mitdestens
> 2 kinder


Es soll auch Bäume geben, da hat ein Ausgangspunkt nur ein Kind. Bei einem Baum handelt es sich nur um eine hierarchische Datenstruktur, die Anzahl von Kindelementen ist erstmal nicht vorgeschrieben. Ausschlaggebend ist nur, dass jedes Kind genau einen Vaterknoten hat.


----------



## timbeau (3. Jul 2012)

Bäume haben vor allem keine Zyklen im Gegensatz zu gerichteten Graphen.


----------



## hüteüberhüte (3. Jul 2012)

- man kann es vergleichen mit einer privat variablen wozu es keine getter und Setter gibt , diese ist nämlich nach dem initialisieren nicht mehr veränderbar

doch! also falsch!

8. Was sind die Unterschiede beim Aufruf zwischen statischen und nicht-statischen Methoden?

Objektmethoden beziehen sich immer auf ein vorhanden Objekt, statische Methoden nicht

9. Was sind Konstruktoren und wozu dienen diese?
-konstruktoren sind da um eine Instanz des Objektes zu erzeugen

Instanz der Klasse oder Objekt der Klasse wird erstellt bzw. instantiiert, Attribute werden ggf. mit Werten initialisiert

10. Was bewirkt die „finalize“ Methode in Java? Macht es Sinn, diese zu verwenden?

Wurde schon etwas zu gesagt

11. Macht es Sinn einen Konstruktor ein private vorranzustellen?
- ja wenn man den Konstruktor durch einen anderen aufrufen will, und nicht möchte dass man ihn von außen aufrufen kann
-somit ist der Konstruktor nur in dem Objekt selbst verwendbar

Stichwort factory pattern ( Fabrikmethode ? Wikipedia )

12. Was ist der Unterschied zwischen einer Basis- und einer Superklasse?
- eine Basis bzw. superklasse ist das gleiche und meint das es eine „Haupt“ klasse ist von der eine „unter“klasse abgeleitet ist
13. Was ist der Unterschied zwischen einer Basis- und einer Subklasse?
- eine Basis klasse ist einer der subklasse übergeordnete dh die subklasse hat min alle Methoden der basisklasse nur nicht der ihre Konstruktoren
- das Prinzip wird auch als Vererbung bezeichnet , die subklasse erweitert die basisklasse

Methoden und Variablen (sofern net private) werden von vererbenden Klassen an erbende Klasse vererbt. Instanzen erbender Klassen können auch dort eingesetzt werden, wo der Typ einer allgemeineren Klasse verlangt ist

14. Was besagen die „ist ein“ und „hat ein“ Regeln?
- das eine Cabrio eine Auto ist = ist ein
-eine konkretes Objekt ist von einem abstrakten object abgeleitet
-cabrio hat eine Farbe und Auto hat eine Farbe
- das heißt es gibt eine konkretes Objekt das die gleichen Eigenschaften wie das abstrakte Objekt

IST ist eine erbende Klasse. HAT bedeutet, die Klasse erstellt eine Instanz einer anderen Klasse und besitzt/hält/hat ein Referenz darauf

16. Was versteht man unter Polymorphismus?
-sollte das gleiche wie 15 sein

Das gleiche wie bei 12 und 13...

21. Wozu benutzt man instanceof?
- wenn man vergleichen will ob eine Objekt eine instance dies Objektes ist

Instanz einer bestimmten KLASSE!

24. Können Interfaces auch Attribute enthalten?
-ja diese Attribute sind dann finale und werden nicht vererbt

Nein! Attribute sind an ein Objekt gebunden, Interfaces können nicht instantiiert werden

27. Was bewirkt das Schlüsselwort super?
-mit super kann man auf die Basis klasse verweisen

Using the Keyword super (The Java™ Tutorials > Learning the Java Language > Interfaces and Inheritance)

30. Kann man in einem Konstruktor einer Klasse einen anderen Konstruktor derselben Klasse aufrufen?

Ja, wenn der Aufruf des anderen Konstruktors die erste Anweisung im Konstruktor is

31. Was macht die equals Methode der Klasse Object?
- sie vergleich ob die Objekte die gleichen Attribute haben und an derselben stelle im speicher steht(dazu wird ein hash wert verwendet)

Falsch! Es wird die referenzielle Gleichheit zweier Objekte geprüft (Identität)

32. Was macht eine „gute“ equals Methode aus?
- kommt drauf an wie man gut interpretiert
-bei Strings zb ist die equal Methode gut implementiert weil Strings ja aus eine pool ausgewählt werden und damit das erzeugte Objekt immer am gleichen speicher steht

Sie überprüft die inhaltliche Gleichheit ("Gleichheit der Attribute"). Bei String ist es die Überprüfung der einzelnen Zeichen

---

Rest vielleicht später


----------



## njans (3. Jul 2012)

*Zu Interfaces:*


```
public interface UselessInterface
{
	public final int myIntValue = 42;
}
```

Du kannst Variablen in Interfaces definieren


----------



## HimBromBeere (3. Jul 2012)

> Du kannst Variablen in Interfaces definieren


Naja, wirklich variabel ist die aber nicht. Du musst sie schließlich auch sofort initialisieren und kannst sie dann nicht mehr verändern. De facto handelt es sich demach um eine Konstante.
[EDIT]Man redet demnach auch nicht von Attribut.[/EDIT]


----------



## hüteüberhüte (3. Jul 2012)

njans hat gesagt.:


> Du kannst Variablen in Interfaces definieren



Nagut 

Aber btw: das ist doch ziemlich viel. Was nützt es, wenn wir jetzt die Antworten auf alle Fragen vor sagen?


----------



## njans (3. Jul 2012)

Da hast du Recht. Zur Illustration:


```
public interface ApplicationButtonPainter
{
	public int myIntValue = 1337; // nicht mehr final, aber die Wertzuweisung muss trotzdem erfolgen!
	
	public void paintComponent(Graphics g);
}
```
Wenn du nun das Interface implementierst, dann kannst du die Konstante myIntValue verwenden, aber nicht ändern.

*Edit*


> Aber btw: das ist doch ziemlich lang. Was nützt es, wenn wir jetzt die Antworten auf alle Fragen vor sagen?



Nun der TO hat ja schon seine Antworten geschrieben, wir sind ja nur dabei diese zu bestätigen und ggf. zu korrigieren/ergänzen.


----------



## hüteüberhüte (3. Jul 2012)

njans hat gesagt.:


> Wenn du nun das Interface implementierst, dann kannst du die Konstante myIntValue verwenden, aber nicht ändern.



Beim Übersetzen wird final hinzugefügt, das wäre nur eine Abkürzung


----------

