Klassen und Objekte

Java zählt zu den objektorientierten Programmiersprachen, d.h. die Programmstruktur besteht nicht direkt aus Abläufen, sondern aus Objekten der realen Welt mit Eigenschaften/Attributen und Methoden. Ein Objekt ist eine Instanz einer Klasse. Die Struktur ist für jedes Objekt einer Klasse gleich, die Werte können jedoch für jedes Objekt unterschiedlich sein.

Eine Klasse besteht aus Attributen/Eigenschaften und Methoden. Die Attribute beschreiben die Eigenschaften des Objekts, die Methoden bestimmen das Verhalten des Objekts.

Grundlegender Aufbau einer Klasse

public class Person {
    /* Attribute, Konstruktoren und 
    Methoden der Klasse*/
}

Es müssen nicht alle drei Teile vorhanden sein, dem Entwickler ist es selbst überlassen welche Teile er für seine Klassen benötigt.

Beispiel - Person

Zunächst wird eine Klasse person erstellt, die 3 Attribute besitzt (vorname, nachname und alter) und eine Methode, welche die die Attribute auf der Konsole ausgeben soll.
Hierbei ist anzumerken, dass Attribute normalerweise private sein sollten und somit dieses Beispiel nur als Einstiegshilfe dienen soll. In den folgenden Beiträgen lernst du die Anwendung von Konstruktoren, getter/setter besser kennen und wie ein Programm mit deren Hilfe besser geschrieben wird.

public class person {
    public String vorname;
    public String nachname;
    public int alter;
    public void print() {
        System.out.println("Vorname: " + vorname);
        System.out.println("Nachname: " + nachname);
        System.out.println("Alter: " + alter);
    }
}

Nun fehlt noch eine Hauptklasse, die Objekte aus der Klasse erstellt.

public static void main(String[] args) {
    person p1 = new person();		// erstellt ein neues Objekt p1
    p1.vorname = "Tobias";
    p1.nachname = "Musterman";
    p1.alter = 18;
    p1.print();
}

Konstruktoren

Konstruktoren sind ein wesentlicher Bestandteil von Klassen. Ein Konstruktor ist eine spezielle Methode einer Klasse und dient der Initialisierung von Eigenschaften. Bei der Erzeugung eines Objektes wird der Konstruktor automatisch also implizit aufgerufen, er kann also nicht wie andere Methoden explizit aufgerufen werden.

Ein Konstruktor weißt einige Besonderheiten auf. Zum einen ist der Name des Konstruktors identisch mit dem Namen der Klasse. Außerdem hat er keinen Rückgabewert. Da ein Konstruktor eine Methode ist kann er überladen werden und Defaultwerte für Parameter enthalten.

get-/set-Methoden (getter, setter)

Warum benötigt man diese beiden Funktionen überhaupt? Es geht ja offensichtlich auch ohne, wie im Beispielprogramm Person. In diesem Beispiel müssen die Attribute allerdings public sein, damit sie im main Programmteil direkt manipuliert werden können. Genau dies ist aber nicht Sinn und Zweck der objektorientierten Programmierung. Deshalb werden die Attribute zwecks Datenkapselung in den private-Bereich gepackt. Dadurch wird man allerdings gezwungen den "Umweg" über Methoden zu machen. Außerdem wird durch diesen Umweg gewährleistet, dass dem Attribut nur die vorgegebenen Werte zugeordnet werden können.

package klassen_objekte;

public class rechteck {
    private int breite;
    private int laenge;
    
    public rechteck(int b, int l) {
        this.breite = b;
        this.laenge = l;
    }
    public void setbreite(int b) {
        this.breite = b;
    }
    public void setlaenge(int l) {
        this.laenge = l;
    }
    public int getbreite() {
        return this.breite;
    }
    public int getlaenge() {
        return this.laenge;
    }
    public int getFlaeche() {
        return this.breite * this.laenge;
    }
    public void print() {
        System.out.println("Breite: " + breite + " Laenge: " + laenge);
        System.out.println("Die Flaeche betraegt: " + getFlaeche());
    }
}
rechteck.java
package klassen_objekte;

public class Klassen_objekte {

    public static void main(String[] args) {
        rechteck r1 = new rechteck(10, 20);
        rechteck r2 = new rechteck(5, 7);
        r1.print();
        r2.print();
    }
}
klassen_objekte.java

Beispiel - Person

Im folgenden Beispiel wird zunächst eine Klasse person erzeugt. Die Klasse hat 2 Variablen, einen Konstruktor und get-/set-Methoden. In der Datei "Objekt_erzeugen" wird der Benutzer dazu aufgefordert Name und Alter einzugeben.
Anschließend wird mit person p = new person(name, alter) ein neues Objekt vom Typ person erzeugt. Hier kommt der Konstruktor zum Einsatz.
Zum Schluss wird mit Hilfe der get-Methoden das eben erstelle Objekt p in der Konsole ausgegeben.

package objekt_erzeugen;

public class person {
    private String name;
    private int alter;
    
    // Konstruktor
    public person(String name, int alter) {
        this.name = name;
        this.alter = alter;
    }
    // set-Methoden
    public void set_name(String name) {
        this.name = name;
    }
    public void set_alter(int alter) {
        this.alter = alter;
    }
    // get-Methoden
    public String get_name() {
        return this.name;
    }
    public int get_alter() {
        return this.alter;
    }
}
person.java
import java.util.Scanner;
            
public class Objekt_erzeugen {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String name;
        int alter;
        
        Scanner scannerVar = new Scanner(System.in);
        
        System.out.println("Bitte geben Sie Ihren Namen ein: ");
        name = scannerVar.next();
        System.out.println("Bitte geben Sie Ihr Alter ein: ");
        alter = scannerVar.nextInt();
        
        person p = new person(name, alter);
        System.out.println("Name:  " + p.get_name());
        System.out.println("Alter: " + p.get_alter());
    }
}
Objekt_erzeugen.java

Nächster Artikel

Vererbung

Grundlagen, Verkettung Konstruktor - super(), Beispiele

keyboard_arrow_right