studyklar
GdI 1 · Beispielklausur · Aufgabe 7

Klassen Tier und Zoo: Klasse und Objekt

Ein Zoo verwaltet seine Tiere mit einer eigenen Java-Klasse. Teil (a) schreibt die Klasse Tier, Teil (b) die Klasse Zoo, die zwei Tiere anlegt und altern lässt, Teil (c) erklärt Klasse und Objekt. Rechts steht der Bauplan Tier, ab Teil (b) mit den Objekten darunter, und der Code; hervorgehoben ist, was zum aktuellen Schritt gehört.

Die Aufgabe

Aufgabe 7

Ein Zoo möchte seine Tiere in einem System verwalten. Dazu soll eine Klasse Tier erstellt werden. Jedes Tier hat einen Namen, eine Tierart und ein Alter (Anzahl Jahre). Folgende Aktionen sollen möglich sein:

  • Informationen über ein Tier ausgeben
  • Alter eines Tieres erhöhen.

a) Erstellen Sie die Java-Klasse Tier mit folgenden Anforderungen:

  • drei Attribute: name (String), art (String), alter (int)
  • ein Konstruktor, der alle drei Attribute initialisiert
  • eine Methode gibInfoAus(), welche die Daten eines Tieres übersichtlich auf der Konsole ausgibt, z. B. Name: …, Art: …, Alter: …
  • eine Methode altern(), die das Alter um 1 erhöht

b) Erstellen Sie eine zweite Klasse Zoo, in welcher Sie in der main-Methode

  • zwei Tier-Objekte anlegen (Leo ist ein 5-jähriger Löwe, Gabi eine 7-jährige Giraffe),
  • die Informationen dieser Tiere ausgeben,
  • beide Tiere um ein Jahr altern lassen und die Informationen aktualisiert erneut ausgeben.

c) Erklären Sie den Unterschied zwischen den Begriffen Klasse und Objekt mit eigenen Worten!

Gesucht sind zwei Java-Klassen und eine Erklärung. Tier beschreibt, was jedes Tier hat (Name, Art, Alter) und was man mit ihm tun kann (Daten ausgeben, ein Jahr älter machen). Zoo ist das Hauptprogramm: Es legt Leo und Gabi an und benutzt die Methoden von Tier. In (c) ist kein Code gefragt, sondern zwei, drei Sätze.

Punkte nennt die Beispielklausur für diese Aufgabe nicht. In der Klausur schreibt man den Code von Hand, ohne Compiler. Es kommt darauf an, dass Java ihn so übersetzen würde: Konstruktor ohne Rückgabetyp, Typen vor den Attributen, Methodenaufrufe über das Objekt, Semikolons und Klammern.

Merke: Eine Klasse bündelt Daten (Attribute) und die Methoden, die mit ihnen arbeiten. Erst new baut daraus ein Objekt, mit dem das Programm arbeitet.
  1. (a) Klasse und drei Attribute.
  2. (a) Der Konstruktor.
  3. (a) Die Methode gibInfoAus.
  4. (a) Die Methode altern.
  5. (b) Klasse Zoo: zwei Objekte anlegen.
  6. (b) Die Informationen ausgeben.
  7. (b) Beide Tiere altern lassen.
  8. (b) Erneut ausgeben.
  9. (b) Übersetzen und starten.
  10. (c) Was eine Klasse ist.
  11. (c) Was ein Objekt ist.
  12. (c) Die Antwort in eigenen Worten.

Klasse und drei Attribute

public class Tier {     private String name;    private String art;    private int alter;
}

Eine Klasse beginnt mit public class Tier; ihr Inhalt steht zwischen den geschweiften Klammern. Die Datei muss Tier.java heißen, wie die Klasse.

Ein Attribut ist eine Variable, die in der Klasse steht, aber außerhalb jeder Methode (das Skript sagt auch Feld). Jedes Tier bekommt später seine eigenen Werte dafür. Vor dem Namen steht der Typ, so wie die Aufgabe ihn vorgibt: String für Text, int für eine ganze Zahl.

private heißt: Nur Code in der Klasse Tier darf die Attribute lesen oder ändern. Die Aufgabe verlangt das nicht, es ist aber guter Stil. Von außen ändert man das Alter dann nur über altern().

Aus Blatt 11, Aufgabe 1 („Wörterbuch als Klasse Dictionary mit Testprogramm“): Dort waren die Felder keys, values und size private; das Testprogramm kam nur über die Methoden an die Daten.

Der Konstruktor

    public Tier(String name, String art, int alter) {        this.name = name;        this.art = art;        this.alter = alter;    }

Ein Konstruktor läuft genau einmal, wenn ein Objekt mit new angelegt wird, und gibt den Attributen ihre Anfangswerte. Er heißt wie die Klasse und hat keinen Rückgabetyp, auch nicht void. Seine drei Parameter bringen die Werte mit, etwa „Leo“, „Löwe“ und 5.

Parameter und Attribute heißen hier gleich. Innerhalb des Konstruktors meint name deshalb den Parameter. this.name meint das Attribut des Objekts, das gerade gebaut wird. this.name = name; kopiert also den Wert des Parameters in das Attribut.

Aus Skript 6, Folie 6-35 („Konstruktoren“): Konstruktoren sind spezielle Methoden, aufgerufen bei der Objekt-Erzeugung. Beispiel der Vorlesung: Konto (int kontonummer) mit this.kontonummer = kontonummer;
Aus Blatt 11, Aufgabe 1 („Wörterbuch als Klasse Dictionary mit Testprogramm“): Dort hatte Dictionary zwei Konstruktoren: Dictionary() legte 10 Plätze an, Dictionary(int capacity) so viele wie übergeben. Welcher läuft, entscheiden die Werte in den Klammern bei new.
Noch 11 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1(a) Die Klasse Tier

Attribute, Konstruktor, zwei Methoden

Klasse Tier (Bauplan)
name: String
art: String
alter: intAttribute: was jedes Tier hat
Tier(name, art, alter)Konstruktor: füllt die Attribute beim Anlegen
gibInfoAus()Methode: gibt die Daten aus
altern()Methode: Alter + 1
Legendegerade gemeintOben der Bauplan Tier mit allem, was die Aufgabe verlangt; darunter der Code der Klasse Tier. Hervorgehoben ist nur der Rahmen, der Rest kommt in den nächsten Schritten und steht bis dahin blass.

Abbildung 1(a) Die Klasse Tier

Attribute, Konstruktor, zwei Methoden

public class Tier {     private String name;    private String art;    private int alter;     public Tier(String name, String art, int alter) {        this.name = name;        this.art = art;        this.alter = alter;    }     public void gibInfoAus() {        System.out.println("Name: " + name + ", Art: " + art + ", Alter: " + alter);    }     public void altern() {        alter++;    }}