Erläutere den Unterschied zwischen einer Klasse und einem Objekt.
Ist Java Call by Value oder Call by Reference? Nenne die Antwort und erkläre das Fachkonzept. Gehe dabei auf den Begriff der Variable ein.
Beschreibe folgende Java-Codes fachsprachlich:
while (true) { System.out.println("Sind wir schon da?");}
public static void main(String[] args) { // ...}
class Farbe extends MethodeVonGame { // ...}
HashMap<String, Short> peopleHeights = new HashMap<>();peopleHeights.put("Ilias", 154);peopleHeights.put("Frodo", 124);
Der neue Praktikant Kevin schreibt eine Stack-Implementation (siehe Quelltext Stack). Leider hat der Praktikant Kunst-LK und Bio-LK gehabt und lässt sich seinen Code von DeppGPT schreiben, aber er ist halt der Neffe vom Chef.
Erkläre die „clean Code”-Kriterien und gib an, welche hier verletzt werden.
Weiterhin ist in der Methode Stack::pop ein Fehler unterlaufen. Finde und korrigiere ihn.
Implementiere einen zweiten Konstruktur, welcher einen ĂĽbergebenen String direkt auf dem Stack speichert.
Stelle die Klassen Stack und Stack.Element in einem Klassendiagramm dar.
Erkläre den Begriff Manager-Klasse anhand des gegebenen Stacks.
Eine andere Datenstruktur ähnlich des Stacks ist die Queue. Eine Queue arbeitet stattdessen nach dem FIFO-Prinzip (First in, First Out). Implementiere eine Klasse Queue mit der neuen Methode Queue::push und mindestens einem Konstruktor als Unterklasse von Stack. Erläutere dazu das Prinzip des dynamischen Bindens.
Kevin importiert aus Verstehen statt der Queue und dem Stack aus der Java-Standardbibliothek deine Versionen und macht dann noch einen Tippfehler. Die Ausgabe seines Codes ist aber nicht, was Kevin erwartet. Erläutere, welche Ausgabe Kevin erwarten könnte, welche Ausgabe er erhält und wieso sein Tippfehler keinen Compiler-Fehler hervorruft. Er schreibt folgenden Code:
Stack<Integer> stack = new Queue(0); stack.push(1); System.out.println(stack.pop());
Stelle Kevins Quellcode in einem Sequenzdiagramm dar. Z. 3 kann ausgelassen werden.
Kevin bemerkt seinen Fehler und überlegt jetzt, statt dem Stack lieber ein Array oder eine Liste zu verwenden. Erläutere den Unterschied dieser beiden Datentypen. Weiterhin hat Kevin sich überlegt, eine Hashmap zu verwenden, die Idee aber verworfen. Wieso?
Kevin entscheidet sich, ein Array zu verwenden. Dann muss er auch seine Methode move (Mysteriöser Algorithmus) nicht umschreiben. Leider hat er vergessen, wozu der Algorithmus gut war.
Nenne den Namen des Algorithmus und beschreibe seine Funktionsweise. Schlage im Quellcode eine Optimierung vor.
Leider hat Kevin einen sehr langsamen Algorithmus gewählt. Nenne einen anderen Algorithmus, welchen Kevin stattdessen verwenden könnte.