Q1 OOP in Java

Die Klasse Auto

Lösung geprüft

Die Aufgabe der heutigen Stunde ist unsere erste eigene Klasse! Bis jetzt haben wir alles in eine einzige Datei geschrieben und von oben nach unten abgearbeitet. Damit ist jetzt Schluss. Ab hier bauen wir Baupläne und machen daraus Objekte.

Bevor wir irgendwas tippen: was wollen wir überhaupt modellieren? Modellieren heißt, von den ganzen Details eines echten Autos wegzugehen und nur das aufzuschreiben, was für unseren Zweck wichtig ist. Unsere Autos sollen betankt werden und fahren können, mehr nicht. Also brauchen wir auch nur das, was dafür nötig ist: Kennzeichen, Kilometerstand, Tankvolumen, Kraftstoffverbrauch und Kraftstoffmenge. Die Farbe interessiert uns nicht, die Anzahl der Türen auch nicht.

Die Aufgabenstellung lautet

Schreibe den Code mit dem Java-Editor und speichere die Datei hier ab.

Lösungsprozess der Aufgabe

Auto.java
/* meininfokurs.cmrg.site */
/**
 *
 * Die Klasse Auto
 *
 * @version 1.0 vom 13.09.2025
 * @meininfokurs.cmrg.site
 */

public class Auto {

// Anfang Attribute
private String Kennzeichen;
private double Kilometerstand;
private double Tankvolumen;
private double Kraftstoffverbrauch;
private double Kraftstoffmenge;
// Ende Attribute

//Konstruktor
public Auto(String Kennzeichen, double Tankvolumen, double Kraftstoffverbrauch) {
  this.Kennzeichen = Kennzeichen;
  this.Tankvolumen = Tankvolumen;
  this.Kraftstoffverbrauch = Kraftstoffverbrauch;
  Kilometerstand = 0;
  Kraftstoffmenge = 0;
}

// Anfang Methoden
public String getKennzeichen() {
  return Kennzeichen;
}

public double getKilometerstand() {
  return Kilometerstand;
}

public double getKraftstoffmenge() {
  return Kraftstoffmenge;
}

public void tanken(double Menge) {
  // TODO
}

public void fahren(double Strecke) {
  // TODO
}
// Ende Methoden
}

In der Aufgabenstellung wird gefordert, dass wir folgende Sachen umsetzen:

  1. Eine Klasse Auto anlegen
  2. Die fünf Attribute deklarieren und auf private setzen
  3. Einen Konstruktor schreiben, der Kennzeichen, Tankvolumen und Kraftstoffverbrauch entgegennimmt
  4. Getter für die Werte schreiben, die man von außen lesen können soll
  5. Die beiden Methoden tanken und fahren anlegen – erstmal leer

Die Attribute

Die fünf Attribute stehen ganz oben und beschreiben, was ein Auto bei uns überhaupt ausmacht. Jedes Objekt, das wir später aus dieser Klasse bauen, bekommt seinen eigenen Satz dieser Werte. Zwei Autos teilen sich also keinen Kilometerstand, jedes hat seinen eigenen.

private String Kennzeichen;
private double Kilometerstand;
private double Tankvolumen;
private double Kraftstoffverbrauch;
private double Kraftstoffmenge;

Warum überall private? Weil von außen niemand einfach so an diesen Werten rumschrauben soll. Wenn der Kilometerstand public wäre, könnte jeder von außen meinAuto.Kilometerstand = 1000000; schreiben, ohne je gefahren zu sein. Genau das wollen wir nicht. Wer den Kilometerstand ändern will, muss gefälligst fahren benutzen. Das nennt sich Kapselung und ist einer der Gründe, warum man überhaupt objektorientiert programmiert.

Kennzeichen ist ein String, weil da Buchstaben drin vorkommen. Alles andere ist double, weil ein Kilometerstand oder eine Tankfüllung durchaus Nachkommastellen haben kann.

Der Konstruktor

Der Konstruktor ist die Methode, die läuft, wenn wir mit new ein neues Auto bauen. Er heißt genau so wie die Klasse und hat keinen Rückgabetyp – kein void, gar nichts. Das ist das Erkennungszeichen eines Konstruktors.

public Auto(String Kennzeichen, double Tankvolumen, double Kraftstoffverbrauch) {
  this.Kennzeichen = Kennzeichen;
  this.Tankvolumen = Tankvolumen;
  this.Kraftstoffverbrauch = Kraftstoffverbrauch;
  Kilometerstand = 0;
  Kraftstoffmenge = 0;
}

Hier stolpern erfahrungsgemäß die meisten: der Parameter heißt Kennzeichen und das Attribut heißt auch Kennzeichen. Woher weiß Java, welches gemeint ist?

Gar nicht – deshalb gibt es this. Innerhalb der Methode gewinnt immer der Parameter, der ist näher dran. this.Kennzeichen heißt ausdrücklich „das Attribut von diesem Objekt hier". this.Kennzeichen = Kennzeichen; liest sich also als: schreib den übergebenen Wert in mein eigenes Attribut. Ohne this würdest du den Parameter sich selbst zuweisen und das Attribut bliebe leer. Der Compiler meckert dabei nicht mal, das Programm tut nur nichts.

Kilometerstand und Kraftstoffmenge werden nicht mitgegeben, die setzt der Konstruktor selbst auf 0. Ein frisch gebautes Auto ist eben leer und ungefahren.

Die Getter

Weil die Attribute private sind, kommt von außen niemand ran. Wir wollen den Kilometerstand aber später ausgeben können. Dafür gibt es Getter – kleine Methoden, die nichts weiter tun als den Wert zurückzugeben:

public double getKilometerstand() {
  return Kilometerstand;
}

Das sieht nach unnötiger Tipparbeit aus, ist es aber nicht. Der Punkt ist, dass wir entscheiden, was nach außen geht. Für Tankvolumen und Kraftstoffverbrauch gibt es hier absichtlich keinen Getter – die braucht von außen gerade niemand.

Die beiden leeren Methoden

Ganz unten stehen tanken und fahren, und in beiden steht nur // TODO. Das ist Absicht. Die Gerüste sind schon da, damit die Klasse durchkompiliert und wir sie benutzen können – gefüllt werden sie erst in einer späteren Aufgabe.

Beide sind void, geben also nichts zurück. Sie ändern nur den Zustand des Objekts. So etwas nennt man Prozedur, im Gegensatz zu einer Funktion wie getKilometerstand(), die einen Wert liefert. In Java heißt beides Methode.

Aufgabe suchen

Tippe los. Strg+K öffnet die Suche von überall.

Zuletzt angesehen

Werbung