Klasse

Aus Wiki Herr Kimmig
Wechseln zu: Navigation, Suche


Einführung: Klassen und Objekte

Objekte kennen wir alle aus dem Alltag, beispielsweise ein Auto. Hier gibt es natürlich unterschiedliche Arten, aber dennoch sind alles Autos und diese haben alle bestimmte Eigenschaften. Für ein Auto könnten die Eigenschaften beispielsweise folgende sein:

  • Farbe
  • Anzahl der Sitze
  • Leistung (PS oder kW)
  • ...

Diese Eigenschaften, oder wie man in der Programmierung sagt Attribute, gibt es bei allen Autos, wir sprechen deshalb von einer Objektklasse Auto. Konkrete Objekte dieser Klasse sind z.B. ein Mercedes, ein Audi, ein Corsa,...

Außerdem können wir mit Autos auch interagieren, zuallererst müssen wir ein Auto natürlich aufschließen bzw. nach Gebrauch wieder abschließen können. Diese Interaktionen mit dem Auto werden durch Methoden des Objektes bereitgestellt, die wir benutzen können.

Auf die Programmierung übertragen gibt eine Klasse also an, welche Attribute und Methoden ein Objekt dieser Klasse bereitstellt. Diese Objektklasse können wir als neuen, eigenen Datentyp betrachten. Da sich dieser aus mehreren anderen Datentypen zusammensetzt sprechen wir hierbei auch von einem zusammengesetzten Datentyp.

Programmierung einer Klasse

Wir können eine solche Klasse in Java anlegen, mit Eclipse ist das - zumindest der Rahmen - in 3 Mausklicks erledigt. Lediglich die Attribute und Methoden müssen wir hier selbst noch anlegen.

Eine Klasse mit obigen Attributen eines Autos würde dann so aussehen:

public class Auto {
    public String farbe;
    public int sitzanzahl;
    public int leistung;

    public void aufschliessen() {
        [...]
    }

    public void abschliessen() {
        [...]
    }
}

Wie wir hier sehen, werden Attribute ähnlich wie Variablen angelegt, mit der Besonderheit, dass diese nicht innerhalb einer Methode stehen, sondern nur innerhalb der Klasse. Ein weiterer Unterschied der auffällt ist, dass vor allen Attributen und Methoden das Schlüsselwort public steht. Wozu dieses dient wird im Kapitel public und private behandelt.

Ein weiterer wichtiger Unterschied ist, dass hierbei das Schlüsselwort static bei den Methoden nicht mehr benutzt wird! Hierzu nähere Informationen im Kapitel static.

Anlegen eines Objektes einer Klasse

Wir haben mit der Klasse lediglich definiert, welche Attribute und Methoden ein Objekt davon haben soll. Wir müssen nun aber noch ein konkretes Objekt davon auch erzeugen. Dazu schreiben wir:

Auto mercedes = new Auto();

Wie bei einer Variablen geben wir auch hier zunächst den Datentyp, hier also unseren Klassennamen, gefolgt von einem Objektnamen. Wir müssen dann allerdings auch noch das eigentliche Objekt anlegen. Bei primitiven Datentypen passiert dies automatisch, bei einem eigenen Datentyp müssen wir das mit dem Befehl new selbst erledigen.

Zugriff auf den Wert eines Attributes

Wurde das Objekt wie oben angelegt, so können wir mit dem sogenannten Punktoperator auf Attribute und Methoden dieses Objektes zugreifen. Wir schreiben den Objektnamen (dessen Eigenschaften wir ändern/abfragen wollen) gefolgt von einem Punkt, gefolgt von dem Attributnamen und können dieses Attribut dann wie eine normale Variable verwenden:

mercedes.farbe = "blau";
mercedes.sitzanzahl = 5;

Genauso lassen sich auch die Methoden des Objektes aufrufen:

mercedes.aufschliessen();