Klausurvorbereitung

Checkliste Wissensteil
Ich kann… Lektionen
Klassen & Objekte
… den Unterschied zwischen Klasse und Objekt erläutern. 1
… die verschiedenen Klassenelemente (Attribut, Konstruktor, Methode) aufzählen und erklären. 1
… das Fachkonzept der Datenkapselung mit Hilfe von Zugriffsmodifikatoren (public und private) erklären und erläutern, wozu man get- und set-Methoden benötigt. 2
UML-Diagramme
… den Unterschied zwischen einem Klassen- und Objektdiagramm erläutern. 3
… aus einer schriftlich gegebenen Situation ein Klassen- bzw. Objektdiagramm erstellen. 3, Aufgabe 2 unten
… aus gegebenem Quellcode ein Klassen- bzw. Objektdiagramm erstellen. 3, Aufgabe 2 unten
… Beziehungen zwischen Klassen in einem Klassendiagramm darstellen und den Unterschied zwischen Aggregation und Assoziation erläutern. 3, Aufgabe 2 unten
Objekt-Arrays, for- & for-each-Schleifen
… das Fachkonzept "Array" sowie den Begriff "Index" erklären. 4
Allgemein
… Fehler in gegebenem Quellcode finden und verbessern. -
… Lücken in gegebenem Quellcode sinnvoll füllen. -
Checkliste Praxisteil
Ich kann… Lektionen
Klassen & Objekte
… aus einer schriftlich gegebenen Situation den Quellcode einer Klasse samt Klassenelementen erstellen. Aufgabe 1 unten
… eine gegebene Klasse verwenden, um ein Programm zu erstellen. Aufgabe 2 unten
… aus Klassen- und Objektdiagrammen Programme erstellen. Aufgaben 1, 2 unten
Objekt-Arrays, for- & for-each-Schleifen
… einen Objekt-Array erstellen und mit Einträgen füllen. Aufgabe 2 unten
… for- oder for-each-Schleifen verwenden, um auf ein Array zuzugreifen. Aufgabe 2 unten
Beispiel-Aufgabe für Praxisteil 1

Das Programm soll einen Zug modellieren, der aus verschiedenen Waggons aufgebaut ist. Der Quellcode vom Sketch ist unten angegeben und darf nicht verändert werden. Von der Klasse Wagon ist nur ein Klassendiagramm vorhanden.

  1. Erstelle eine passende Klasse Wagon. Jeder Wagon soll zunächst nur durch ein Rechteck dargestellt werden. Die Wagons können "aus dem Bildschirm herausfahren".
  2. Modifiziere die zeichnen()-Methode so, dass ein Wagon auch Räder hat (zwei vorne, zwei hinten).
  3. Modifiziere die bewegen()-Methode so, dass die Wagons wieder auf der linken Bildschirmseite auftauchen, wenn sie den Bildschirm rechts verlassen haben.
  4. Erstelle ein Objektdiagramm, das die Situation wiederspiegelt.
WagonintxPosintyPosintbreiteinthöhecolorfarbeWagon(intxPos,intyPos,intbreite,inthöhe,colorfarbe)voidzeichnen()voidbewegen(intgeschwindigkeit)
Wagon w1 = new Wagon(100, 100, 50, 25, color(255, 0, 0));
Wagon w2 = new Wagon(175, 100, 50, 25, color(0, 255, 0));
Wagon w3 = new Wagon(250, 113, 50, 12, color(0, 0, 255));
 
void setup() {
  size(640, 480);
}
 
void draw() {
  background(0);
 
  w1.zeichnen();
  w2.zeichnen();
  w3.zeichnen();
 
  w1.bewegen(2);
  w2.bewegen(2);
  w3.bewegen(2);
}
Beispiel-Aufgabe für Praxis-Teil 2

Unten findest du mehrere Klassen, mit deren Hilfe Ameisen, ein Ameisenhaufen und ein Zuckerstück gezeichnet werden können. Die Klassen dürfen nicht verändert werden.

  1. Erstelle ein Programm, das die Ameisen vom Ameisenhaufen zum Zuckerstück laufen lässt. Verwende dazu das Objektdiagramm unten.
  2. Modifiziere das Programm so, dass für die Ameisen ein Array verwendet wird.
  3. Erläutere anhand des Ameisenhaufens, warum die Ameise nicht direkt auf das Attribut xPos zugreifen sollte, sondern wie im Beispiel über die get-Methode getXPos().
  4. Erstelle ein Klassendiagramm, das die Beziehungen zwischen Ameisen, Ameisenhaufen und Zuckerstück korrekt wiederspiegelt.
a1:AmeisexPos = 100yPos = 100geschwindigkeit = 1a2:AmeisexPos = 120yPos = 100geschwindigkeit = 2a3:AmeisexPos = 140yPos = 100geschwindigkeit = 3h:AmeisenhaufenxPos = 50yPos = 100z:ZuckerstückxPos = 300yPos = 100

Ameise

class Ameise {
  private int xPos;
  private int yPos;
  private int geschwindigkeit;
  private Ameisenhaufen haufen;
  private Zuckerstück zucker;
  private int richtung = 1;
 
  public Ameise(int xPos, int yPos, int geschwindigkeit, Ameisenhaufen haufen, Zuckerstück zucker) {
    this.xPos = xPos;
    this.yPos = yPos;
    this.geschwindigkeit = geschwindigkeit;
    this.haufen = haufen;
    this.zucker = zucker;
  }
 
  public void zeichne() {
    ellipseMode(CENTER);
    fill(64, 64, 0);
    noStroke();
    ellipse(xPos, yPos, 25, 12);
  }
 
  public void bewege() {
    xPos += richtung * geschwindigkeit;
 
    if (xPos >= zucker.getXPos()) {
      richtung = -1;
    } else if (xPos <= haufen.getXPos()) {
      richtung = 1;
    }
  }
}

Ameisenhaufen

class Ameisenhaufen {
  private int xPos;
  private int yPos;
 
  public Ameisenhaufen(int xPos, int yPos) {
    this.xPos = xPos;
    this.yPos = yPos;
  }
 
  public int getXPos() {
    return xPos;
  }
 
  public void zeichne() {
    fill(128, 128, 0);
    noStroke();
    triangle(xPos - 50, yPos, xPos + 50, yPos, xPos, yPos - 75);
  }
}

Zuckerstück

class Zuckerstück {
  private int xPos;
  private int yPos;
 
  public Zuckerstück(int xPos, int yPos) {
    this.xPos = xPos;
    this.yPos = yPos;
  }
 
  public int getXPos() {
    return xPos;
  }
 
  public void zeichne() {
    rectMode(CENTER);
    fill(255);
    noStroke();
    rect(xPos, yPos, 50, 50);
  }
}
Aufgabe 3 - Arrays #1

In der E-Phase haben wir zum Einstieg in Arrays die beiden folgenden Diagramme behandelt.

  1. Erstellt in zwei unterschiedlichen Sketches (Klassensprecherwahl und Marktwert) passende Arrays (für das Kreisdiagramm je ein Array für Name, Stimmenzahl und Farbe, für das Liniendiagramm je ein Array für Monat und Marktwert).
  2. Zeichnet für die Klassensprecherwahl ein Kreisdiagramm und für den Marktwert ein Liniendiagramm.
Klassensprecherwahl
Marktwert

Die von euch gezeichneten Diagramme könnten z.B. so aussehen:

Klassensprecherwahl
Marktwert