Logo
Selbstlern-Modul: Objektorientierung (Q1.1 Grundkurs)
Header
Infobox

Arbeitsauftrag: Dieses Modul deckt die Q1.1-Vorgaben für den Grundkurs des KCGO (Vers. 2025) ab: Klassen/Objekte/Attribute/Methoden/Konstruktoren, Felder (Arrays), Listen mit Bibliotheksklassen, Geheimnisprinzip & Sichtbarkeit (get/set), UML-Klassendiagramm inkl. Assoziation/Aggregation.
Ablauf Bearbeite die verlinkten LearnJ-Abschnitte (eingebettet) und löse danach die Übungen, Quizze, KI-Aufgaben und „Selbst programmieren“-Aufgaben. Arbeite dich von oben nach unten sukzessive durch. Dieses Selbstlernmodul beinhaltet Stoff für circa 7 Unterrichtswochen. Mache zum Abschluss jeder Unterrichtswoche das Feedbackmodul (ganz unten).

Inhalte

  1. Grundbegriffe der Objektorientierten Programmierung OOP (Klassen, Objekte, Methoden, Attribute)
  2. Eigene Klassen & Konstruktoren
  3. Arrays (Feld von Objekten) & ArrayList
  4. Geheimnisprinzip, Sichtbarkeit, get-/set-Methoden
  5. UML-Klassendiagramm, Assoziation & Aggregation

Hinweis Datenschutz: Dieses Modul bindet externe Inhalte (LearnJ & YouTube) per iframe ein. Wenn ein Inhalt nicht lädt, nutze die Direktlinks unter dem jeweiligen Frame.

Disclaimer: Achtung! In den Aufgaben wirst du dazu aufgefordert, KI-Sprachmodelle zu nutzen. Wenn du das nicht möchtest oder darfst, kannst du diese Aufgaben überspringen. Bitte kläre dies vorher mit deinen Erziehungsberechtigten und lies die Datenschutzerklärungen sowie AGB.

Warm-up: Was ist Objektorientierung?

Starte mit diesen Videos (max. 45 min). Notiere dir Merksätze zu den Themen: OOP, Klassen, Konstruktor, Objekte, Attribute.

1) Grundbegriffe: Klassen, Objekte, Attribute, Methoden

Bearbeite zuerst:

Direktlink: learnj.de/doku.php?id=klassen1:grundbegriffe:start

Dann: Wende die Grundbegriffe im nächsten LearnJ-Teil an.

Direktlink: learnj.de/doku.php?id=klassen1:anwenden:start

Übung 1 – Begriffe zuordnen
Ordne zu (schreibe in die Felder):

Lösung & Erläuterung

  • Bauplan → Klasse
  • konkretes Exemplar → Objekt (Instanz)
  • Eigenschaft → Attribut
  • Fähigkeit/Aktion → Methode

Eine Klasse beschreibt Struktur & Verhalten, ein Objekt ist eine erzeugte Instanz dieser Klasse.

KI-Aufgabe (Merksätze):
Formuliere vier prägnante Merksätze zu Klasse, Objekt, Attribut und Methode – jeweils mit einem Mini-Beispiel in Java. Prüfe mich danach mit zwei Rückfragen.
Selbst programmieren Run in Browser ↗
Zusatzvideo:

Weiter Hilfen:

Programmierenlernen HQ

2) Eigene Klassen & Konstruktoren

Bearbeite:

Direktlink: learnj.de/doku.php?id=klassen1:eigene:start

Zusatz: Konstruktoren initialisieren Objekte. Name = Klassenname, kein Rückgabetyp.

/* Beispiel: einfache Klasse mit Konstruktor */ public class Person { private String name; private int alter; public Person(String name, int alter) { // Konstruktor this.name = name; this.alter = alter; } public void hallo() { System.out.println("Hi, ich bin " + name + " (" + alter + ")"); } }
Lücken-Code (Konstruktor) – fülle ___:
public class Buch { private String titel; private int seiten; public ___(___ t, ___ s) { this.titel = t; this.seiten = s; } }

Musterlösung & Erklärung

public class Buch { private String titel; private int seiten; public Buch(String t, int s) { this.titel = t; this.seiten = s; } }

Der Konstruktor heißt wie die Klasse und hat keinen Rückgabetyp. Parameter initialisieren die Attribute.

KI-Aufgabe (Lückentext):
Erzeuge einen kurzen Lückentext zu Java-Konstruktoren (5–7 Lücken) mit Lösungsvorschlägen. Frage mich danach die Lösungen nacheinander ab.
Selbst programmieren Run in Browser ↗
Vertiefungsvideo:

Weiter Hilfen:

w3schools Konstruktoren

3) Attribute deklarieren & verwenden

Bearbeite:

Direktlink: learnj.de/doku.php?id=klassen2:attribute:start

Mini-Quiz Attribute
KI-Aufgabe (Quizmaster):
Stelle mir nacheinander 5 Quizfragen (Multiple Choice) zu Java-Attributen wie ein Showmaster. Prüfe meine Antworten und erkläre kurz.
Selbst programmieren Run in Browser ↗

4) Objektreferenzen verstehen

Bearbeite:

Direktlink: learnj.de/doku.php?id=klassen1:anwenden:objektreferenzen:start

Übung – Alias-Effekt
Überlege, was ausgegeben wird:
public class Punkt { int x; Punkt(int x){ this.x = x; } void inc(){ x++; } } Punkt a = new Punkt(5); Punkt b = a; b.inc(); System.out.println(a.x);
Lösung

6. a und b referenzieren dasselbe Objekt; die Änderung über b wirkt sich auf a aus.

KI-Aufgabe (Wahr/Falsch):
Stelle mir 8 Wahr/Falsch-Aussagen zu Objektreferenzen (Alias-Effekt, null, Vergleich von Referenzen). Prüfe jede Antwort sofort und erkläre kurz.
Selbst programmieren Run in Browser ↗

5) Feld von Objekten (Array) & Liste von Objekten (ArrayList)

Arrays (Felder): feste Länge, schneller Zugriff per Index.

Person[] team = new Person[3]; team[0] = new Person("Ava", 17); team[1] = new Person("Bo", 18); team[2] = new Person("Cem", 16); for (int i = 0; i < team.length; i++) { team[i].hallo(); }

ArrayList (Bibliotheksklasse): dynamische Größe, Methoden wie add, remove, size.

import java.util.ArrayList; ArrayList<Person> liste = new ArrayList<>(); liste.add(new Person("Ava", 17)); liste.add(new Person("Bo", 18)); for (Person p : liste) { p.hallo(); }
Baustellen-Aufgabe (Array) – fülle ___:
int[] zahlen = new int[___]; for (int i = 0; i < ___; i++) { zahlen[i] = i*i; } System.out.println(zahlen[___]);

Lösung & Erklärung

int[] zahlen = new int[5]; for (int i = 0; i < zahlen.length; i++) { zahlen[i] = i * i; } System.out.println(zahlen[2]); // 4

zahlen.length liefert die Feldlänge (Index beginnt bei 0). ArrayList wäre dynamisch.

KI-Aufgabe (Lückentext):
Erstelle einen Lückentext zu Arrays vs. ArrayList (8–10 Lücken) mit Lösungsvorschlägen. Frage mich die Lücken einzeln ab.
Selbst programmieren Run in Browser ↗
Videos:

6) Geheimnisprinzip (Kapselung), Sichtbarkeit, Getter/Setter

Idee: Daten einer Klasse werden vor direktem Zugriff geschützt (private), Zugriff nur über Methoden (public).

public class Konto { private double saldo; // Geheimnisprinzip: nicht direkt von außen änderbar public double getSaldo() { // Getter return saldo; } public void einzahlen(double betrag) { // kontrollierter Setter/Mutator if (betrag > 0) saldo += betrag; } }
Check – Sichtbarkeiten
Attribut saldo in Konto:
Methode getSaldo():

Lösung & Erläuterung

saldo sollte private sein (Datenkapselung). Zugriff über public Methoden – getSaldo(), einzahlen() (mit Validierung).

KI-Aufgabe (Merksätze):
Formuliere vier Merksätze zum Geheimnisprinzip und zu Getter/Setter. Füge je ein Gegenbeispiel (schlechter Stil) und die bereinigte Variante an.
Selbst programmieren Run in Browser ↗
Videos:

7) UML-Klassendiagramm, Assoziation & Aggregation

Quick-Guide UML:

  • Klassendiagramm: Klassen (Name, Attribute, Methoden) & Beziehungen.
  • Assoziation: „kennt“-Beziehung.
  • Aggregation: Ganzes–Teil, Teil existiert auch unabhängig.
  • Komposition: starkes Ganzes–Teil, Teil existiert i. d. R. nur mit dem Ganzen.
Mapping Code → UML (Beispiel)
class Klasse { private java.util.List<Schueler> liste; // Aggregation: Klasse "hat" viele Schueler }

Notation: Klasse ◇── 0..* Schueler (hohler Rhombus auf Seite des „Ganzen“).

Lösungshinweise

  • Assoziation = „kennt“-Beziehung
  • Aggregation = Ganzes–Teil (Teil existiert eigenständig)
  • Komposition = Ganzes–Teil (Teil existiert i. d. R. nur mit dem Ganzen)
KI-Aufgabe (Quizmaster):
Stelle mir 6 Multiple-Choice-Fragen zu UML (Klassendiagramm, Assoziation, Aggregation, Komposition). Agiere als Showmaster, erkläre nach jeder Antwort kurz.

Feedbackmodul

Beantworte die Fragen und sende deine Antworten im Schulportal mit dem Betreff:
„Q1 GK HNR Feedback E-Learning-Modul OOP“.

  1. Freitext: Welche Abschnitte hast du vollständig bearbeitet? ___________________
  2. Freitext: Formuliere 2 Merksätze zu „Konstruktoren“ und 2 zu „Kapselung“.
  3. Multiple-Choice: Welche Strukturen hast du verwendet?
    ☐ Klassen/Objekte ☐ Konstruktoren ☐ Arrays ☐ ArrayList ☐ Getter/Setter ☐ UML
  4. Single-Choice: Wie schwierig waren die Array/ArrayList-Aufgaben?
    ○ sehr einfach ○ einfach ○ mittel ○ schwierig ○ sehr schwierig
  5. Skala (1–5): Wie zufrieden bist du mit dem Modul?
    1 … 5
  6. Ja/Nein: Hast du alle Übungen und interaktiven Checks bearbeitet?
    ○ Ja ○ Nein
  7. Zeitangabe: Geschätzte Arbeitszeit: ___ Minuten
  8. Selbsteinschätzung (1–5): Wie sicher fühlst du dich jetzt?
    1 … 5
  9. Freitext: Was war am meisten hilfreich?
  10. Offen: Verbesserungsvorschläge?