Arrays und Datenstrukturen
Ein Programm soll die 25 Testergebnisse einer Klasse unter einem Namen speichern. Welche Deklaration nutzt dafĂŒr ein Array (Feld)?
ErklĂ€rung: Ein Array speichert eine feste Anzahl gleichartiger Elemente unter einem Namen, erreichbar ĂŒber den Index: punkte[0] bis punkte[24]. 25 einzelne Variablen sind unhandlich, und ein Text speichert keine einzeln zugreifbaren Zahlen.
Der ___ eines Array-Elements gibt seine Position im Array an. In den meisten Programmiersprachen beginnt er bei 0.
ErklĂ€rung: Index: arr[0] ist das erste Element, arr[1] das zweite usw. Ein Array der LĂ€nge n hat Indizes 0 bis n-1. Zugriff auf arr[n] wĂŒrde einen IndexOutOfBoundsError verursachen.
Ein Array kann Elemente unterschiedlicher Datentypen speichern (z. B. gleichzeitig Zahlen und Texte).
ErklĂ€rung: Falsch (in typisierten Sprachen wie Java). Ein Array speichert Elemente desselben Datentyps: int[], String[], double[]. FĂŒr verschiedene Typen benötigt man andere Datenstrukturen oder generische Klassen.
Was gibt die Eigenschaft 'LĂ€nge' eines Arrays an?
ErklÀrung: Die LÀnge (length) gibt an, wie viele Elemente das Array enthÀlt. Ein Array der LÀnge 5 hat die Indizes 0, 1, 2, 3, 4. Die LÀnge ist bei der Erstellung festgelegt.
Gegeben: Konto a = new Konto(); Konto b = a; b.einzahlen(50);. Welchen Kontostand liefert a.getStand() danach?
ErklĂ€rung: b = a kopiert nicht das Objekt, sondern nur die Referenz â beide Variablen verweisen auf dasselbe Konto im Speicher. Die Einzahlung ĂŒber b sieht man also auch ĂŒber a. â0" wĂ€re richtig, wenn b eine Kopie wĂ€re; â100" zĂ€hlt die Einzahlung doppelt.
Wenn man in einem Programm ein Objekt ĂŒber eine ___ anspricht, arbeitet man nicht mit einer Kopie, sondern mit dem Original.
ErklĂ€rung: Referenzsemantik: Die Variable enthĂ€lt nur einen Zeiger auf das Objekt. Ănderungen ĂŒber verschiedene Referenzen auf dasselbe Objekt wirken sich auf das gleiche Objekt aus â anders als bei primitiven Datentypen (Wertsemantik).
Um ein Element in der Mitte eines Arrays einzufĂŒgen, mĂŒssen alle nachfolgenden Elemente verschoben werden.
ErklĂ€rung: Richtig. Arrays haben eine feste Struktur: Um an Position i einzufĂŒgen, mĂŒssen alle Elemente ab Position i um eins nach rechts verschoben werden. EinfĂŒgen am Ende ist effizient, in der Mitte aufwendig.
In der Klasse Konto ist das Attribut kontostand private, die Methode einzahlen(int betrag) ist public. Welcher Zugriff von auĂen funktioniert?
ErklĂ€rung: Das ist Datenkapselung: private Attribute sind von auĂen nicht direkt erreichbar, der Zugriff lĂ€uft kontrolliert ĂŒber öffentliche Methoden. konto.kontostand = 50 scheitert am private, und einem Getter-Aufruf kann man nichts zuweisen.
Das Array noten hat die LĂ€nge 8. Welche for-Schleife besucht jedes Element genau einmal und stĂŒrzt nicht ab?
ErklĂ€rung: Die gĂŒltigen Indizes laufen von 0 bis LĂ€ngeâ1, hier 0 bis 7. Mit <= greift die Schleife am Ende auf noten[8] zu â Laufzeitfehler. Mit Start bei 1 wird noten[0] ĂŒbersprungen.
Eine Klasse kann als ___ fĂŒr ein Objekt verwendet werden â z. B. kann eine Variable des Typs 'Schueler' ein Schueler-Objekt referenzieren.
ErklÀrung: In der OOP sind Klassen Datentypen: 'Schueler s = new Schueler()'. Die Variable s hat den Typ Schueler und referenziert ein Schueler-Objekt. So können Klassen als Attributtypen anderer Klassen dienen.
Was passiert bei einem Zugriff auf arr[5] in einem Array der LĂ€nge 5?
ErklĂ€rung: Ein Array der LĂ€nge 5 hat die Indizes 0, 1, 2, 3, 4. Index 5 liegt auĂerhalb und verursacht einen Laufzeitfehler. Solche Fehler mĂŒssen durch sorgfĂ€ltige Programmierung vermieden werden.
Objekte können in Arrays gespeichert werden (z. B. ein Array von Schueler-Objekten).
ErklĂ€rung: Richtig. Schueler[] klasse = new Schueler[30] erstellt ein Array fĂŒr 30 Schueler-Objekte. Jedes Element ist eine Referenz auf ein Schueler-Objekt (initial null, bis zugewiesen).
Im UML-Klassendiagramm wird die Klasse Schueler als Rechteck mit drei Bereichen gezeichnet. Was steht im mittleren Bereich?
ErklĂ€rung: Das Klassen-Rechteck hat drei Bereiche: oben der Klassenname, in der Mitte die Attribute, unten die Methoden. Objekte tauchen im Klassendiagramm gar nicht auf â es zeigt den Bauplan, nicht die Exemplare.
Beim ___ von Elementen aus einem Array mĂŒssen ggf. nachfolgende Elemente nach vorne verschoben werden, um LĂŒcken zu fĂŒllen.
ErklÀrung: Entfernen aus der Mitte: Element löschen, alle Elemente dahinter um eine Position nach links schieben, LÀnge (logisch) um 1 verringern. Am Ende entfernen ist einfacher.
Eine Schule hat viele Lehrer (1:n). Welches Attribut passt dafĂŒr in die Klasse Schule?
ErklÀrung: Eine 1:n-Beziehung braucht viele Referenzen: ein Array oder eine Liste von Lehrer-Objekten. Eine einzelne Referenz (Lehrer lehrer) trÀgt nur eine 1:1-Beziehung, und ein String speichert höchstens Namen, keine ansprechbaren Objekte.
In welcher Codezeile kommuniziert das Objekt verleih mit dem Objekt rad1 (schickt ihm eine Nachricht)?
ErklĂ€rung: Objekte kommunizieren ĂŒber Methodenaufrufe mit Parametern â rad1.verleihen("Mia") schickt dem Fahrrad-Objekt die Nachricht âverleihe dich an Mia". new Fahrrad() erzeugt nur ein Objekt, und Fahrrad rad1; deklariert nur eine Variable.