Klasse 11 · 1. Halbjahr
Q1
Objektorientierte Programmierung in Java und die klassischen Such- und Sortierverfahren.
OOP in Java
OOP 1
Die Klasse Auto
Unsere erste eigene Klasse: fünf Attribute, ein Konstruktor und zwei Methoden, die erstmal noch leer bleiben.
OOP 2
Einstiegstext-Analyse
Klasse, Objekt, Attribut, Methode, Konstruktor – die fünf Begriffe, die in der Klausur als Erstes drankommen.
OOP 3
Das Autohaus
Die Klasse Auto endlich benutzen: ein Objekt erzeugen, betanken, fahren lassen - und verstehen, warum der Kilometerstand trotzdem auf 0 bleibt.
OOP 4
Die Ausgabemethode
Das Auto soll sich selbst beschreiben können – und dabei das EVA-Prinzip einhalten: erst alles einsammeln, dann einmal ausgeben.
OOP 5
Methoden: tanken und fahren
Vier Teilaufgaben: beide Methoden implementieren, den Konstruktor gegen unsinnige Werte absichern und im Autohaus richtig durchtesten.
OOP 6
Geometrische Figuren
Quadrat, Rechteck, Kreis und ein rechtwinkliges Dreieck objektorientiert modellieren – plus die Fachsprache, mit der man den Code beschreibt.
OOP 7
Konstruktoren überladen
Mehrere Konstruktoren in einer Klasse: wann sich das lohnt, warum der Rückgabetyp nicht zählt und wieso der Default-Konstruktor plötzlich weg ist.
OOP 8
Arrays
Vier Teilaufgaben: Würfelsimulation, Schleifen im Kopf durchgehen, Schiffe versenken mit zweidimensionalem Array und das Sieb des Eratosthenes.
OOP 9
ArrayList: Lieblingsfächer
Die erste Liste statt eines Arrays – und warum es plötzlich egal ist, dass es doch drei Fächer sein sollten statt zwei.
OOP 10
ArrayList: Lottozahlen
contains, size und die Fangfrage: remove(1) löscht nicht die Zahl 1, sondern das Element an Position 1.
OOP 11
ArrayList: Listen ausgeben
Eine Liste von 10 bis 1000 füllen und auf zwei Arten durchlaufen – mit foreach und mit dem ListIterator.
OOP 12
Die main-Parameter
Was public static void main(String[] args) wirklich bedeutet – und wie man dem Programm beim Start Werte mitgibt.
OOP 13
Methoden überladen, Strings parsen
Drei Methoden namens summe, unterschieden nur an der Parameterliste – und warum der Rückgabetyp dabei keine Rolle spielt.
OOP 14
Assoziationen und Multiplizitäten
Die kleinen Zahlen am Ende der UML-Striche: 1, 0..1, * und 1..* – und auf welcher Seite sie stehen müssen.
OOP 15
Das Telefonbuch: Abstraktion
Aus einem App-Screenshot herauslesen, welche Klassen man braucht – und was man bewusst weglässt.
OOP 16
Die Klasse Termin
Attribute und Methoden für einen Termin festlegen – und warum die Terminart ein enum wird und kein String.
OOP 17
UML-Diagramm erzeugen
Die Klasse Termin im UML-Klasseneditor bauen statt sie zu tippen – inklusive der beiden imports, die der Editor nicht erraten kann.
OOP 18
Das Telefonbuch: Klassen erstellen
Kontakt, Adresse, Telefon, Email und Gruppe – und der Fehler, den bei dieser Aufgabe jeder einmal macht: die Listen im Konstruktor vergessen.
OOP 19
UML-Diagramm im Java-Editor
Assoziation oder Aggregation? Die Antwort steht im Code: einzelnes Attribut oder Liste. Plus der Unterschied zwischen Editor- und ABI-Notation.
OOP 20
Telefonbuch-Spielwiese
Alle sechs Klassen zusammensetzen und ausgeben – mit einem einzigen println, weil toString() sich durch die ganze Kette durchreicht.
Suchen und Sortieren
Algorithmus 1
Suchen mit System: Struktogramm und Zahlenraten
Ein Struktogramm für das Zählen von Sechsern – und beim Zahlenraten zu zweit die Formel herleiten, wie viele Versuche man höchstens braucht.
Algorithmus 2
Binäre Suche: Die Startaufstellung
Die binäre Suche von Hand durchführen und danach als Methode istAufgestellt implementieren – inklusive der drei Stellen, an denen sie kippt.
Algorithmus 3
Hashing, Kollisionen und Effizienz
Das Geburtstagsparadoxon, zwei Hashfunktionen von Hand durchgerechnet und der Vergleich aller drei Suchverfahren.
Algorithmus 4
Arbeitsblatt Suchalgorithmen I
Unsortiertes Array: warum hier nur die lineare Suche geht und warum der Nicht-gefunden-Fall immer der schlimmste ist.
Algorithmus 5
Arbeitsblatt Suchalgorithmen II
Dasselbe Array, nur sortiert – und plötzlich reichen 2 statt 8 Vergleiche. Beide Arbeitsblätter zusammen sind eine einzige Argumentation.
Algorithmus 6
Die unsortierte Top-10
Zehn Albumcover sortieren, aber nur zwei pro Schritt vergleichen – und dabei merken, warum eine Handlungsvorschrift eindeutig sein muss.
Algorithmus 7
Einfaches Sortieren
Selection, Insertion und Bubble Sort von Hand durchgespielt, als Struktogramm entworfen und in Java implementiert.
Algorithmus 8
Rekursive Algorithmen
Fibonacci, Fakultät, ein Würfelspiel und zwei Methoden, die sich gegenseitig aufrufen – überall geht es um Rekursionsanker und Rekursionsschritt.
Algorithmus 9
Suchen: iterativ und rekursiv
Suche in linearen Listen mit toFirst/hasAccess/next, eine Methodendokumentation umsetzen und die binäre Suche aus durcheinandergeratenen Zeilen zusammenbauen.
Algorithmus 10
Sortieren: iterativ und rekursiv
Sortieren durch Auswählen auf Listen und Quicksort – inklusive der Pointe, dass eine bereits sortierte Liste für Quicksort der schlechteste Fall ist.
Algorithmus 11
Arbeitsblatt Sortieralgorithmen
Andersherum: aus den Zwischenschritten erkennen, welcher Sortieralgorithmus gelaufen ist – und dann selbst eine Folge damit sortieren.