1.3.2 Klassen und Objekte

Bevor man ein System in einer Programmiersprache implementiert, verwendet man objektorientierte Techniken um mit dem Kunden den Problembereich (Anwendungsbereich) im Rahmen einer Systemanalyse zu modellieren.

Anschließend werden die modellierten Objekte und ihre Datentypen in eine Programmiersprache abgebildet.

Im Rahmen des Kurses werden Diagramme in UML (Unified Modeling Language) zur Beschreibung von Javaklassen verwendet. In Java sowohl als UML werden die folgenden Begriffe verwendet:

  • Klasse: Ein Typ eines Gegenstandes in der realen Welt. Mit Klassen werden nicht nur Typen der realen Welt beschrieben sondern auch abstrakte Konzepte wie zum Beispiel ein Vertrag
    • Attribute: Datenfelder einer Klasse. Sie haben einen Namen zur Unterscheidung und einen Typ
    • Methoden: Programme die auf alle Instanzen einer Klasse angewendet werden können.
      • Methoden können keinen, einen oder mehrere Eingabewerte haben
      • Methoden können keinen oder einen Rückgabewert haben
      • Methoden können die Datenfelder der Objekte verändern
  • Objekte:
    • Ausprägungen von Klassen
    • Entitäten mit gemeinsamen Eigenschaften
    • Instanzen von Klassen

Objekte haben einen Lebenszyklus. Sie können erzeugt, modifiziert und dereferenziert werden. Dereferenzierte Objekte in Java sind nicht mehr erreichbar und daher nutzlos. Sie sind defacto gelöscht.

Modellierung in UML

Im Folgenden ist eine Klasse Flugzeug in UML und zwei Objekte der Klasse a380 und jumbo modelliert.

UML Klassen, Objekte

Implementierung in Java

Die Modellierung der Klasse Flugzeug in Java ist nachfolgend dargestellt.

Die Erzeugung der beiden Objekte a380 und jumbo erfolgt in der Methode main(). Hierzu muss ein Javaprogramm ausgeführt werden.

Die Methode main() wird als Javaprogramm durch das Kommando java Flugzeug aufgerufen.

public class Flugzeug {
    String kennzeichen; // Ein Attribut vom Typ einer Zeichenkette
    int leerGewicht; // Ein Attribut vom Type einer Ganzzahl

    /**
     * Eine Methode zum Drucken der Attributbelegung des Objekts
     * Die Methode erfordert keine Eingaben. Sie erzeugt keine
     * Aufgaben
     */
    public void drucken() {
        System.out.println("Kennzeichen " + kennzeichen + " "
                + leerGewicht + "kg");
    }

    /**
     * Die Methode main() wird zum Starten des Programms benutzt
     * @param args Übergabe von Konsolenparameter. Hier nicht genutzt
     */
    public static void main(String[] args) {
        // Erzeugen zweier Objekte
        Flugzeug jumbo = new Flugzeug();
        Flugzeug a380 = new Flugzeug();
        // Belegen der Attribute des ersten Objekts mit Werten

        jumbo.kennzeichen = "D-ABYT";
        jumbo.leerGewicht = 191000;

        // Belegen der Attribute des zweiten Objekts mit Werten
        a380.kennzeichen = "D-AIMD";
        a380.leerGewicht = 286000;

        // Drucken der beiden Objekte auf der Konsole
        jumbo.drucken();
        a380.drucken();
    }
}

Das obige, ausführbare Programm hat die folgende Grundstruktur die in allen Javaklassen zufinden ist.

Einfache Klasse mit Erklärung der wichtigsten Syntax 

Javaklassen können noch mehr Bestandteile haben. Für die Einführung sind die folgenden Bestandteile die wichtigsten:

  • Eine Javaklasse sollte in einer Datei mit dem gleichen Namen und der Extension .java gespeichert werden
  • Das Schlüsselwort class steht unmittelbar vor dem gewählten Namen der Klasse
    • Vor dem Schlüsselwort class können noch weitere Schlüsselworte stehen, die z.Bsp. die Sichbarkeit der Klasse bestimmen
    • Nach dem Klassennamen können noch Oberklassen oder Implementierungen angegeben werden
  • Die Implementierung der Klasse steht zwischen dem folgenden geschweiften Klammerpaar
    • Attribute einer Klasse haben einen Typ und einen Namen. Sie werden immer mit einem Semikolon beendet.
    • Methoden einer Klasse besitzen
      • optionale Schlüsselworte um die Methodeneigenschaften zu spezifizieren
      • Rückgabetypen: Der Typ des Ergebnis der Berechnung
      • einen Namen
      • eine Parameterliste die mit runden Klammern beschrieben wird. Sie kann leer sein.
      • Einen Rumpf mit der Implementierung der Methode. Der Rumpf wird mit geschweiften Klammern implementiert. Die Implementierung des Rumpfs steht zwischen den geschweiften Klammern