Getting Started with Java – Bauplanklassen

Um uns mit dem Thema Klassen und deren Objekten (oder besser „Instanzen von Klassen“) beschäftigen müssen wir zunächst einmal verstehen, was eine Klasse ist. Eine Klasse stellt einen Bauplan für ein Objekt dar. Gehen wir also von der Klasse „Haus“ aus, so beschreibt diese, wie ein konkretes Objekt – hier also eine Instanz der Klasse Haus – aussehen muss. Dazu gibt es auch einen sogenannten Bauplan. Dieser hat feste Bestandteile, auf die wir zurückgreifen können (und müssen).

[youtube height=“300″ width=“600″]https://www.youtube.com/watch?v=PHqlGKFo9O8[/youtube]

Alles beginnt mit der Beschreibung der Klasse – wie ist sie zu erreichen, dass sie eine Klasse ist und natürlich, der gewünschte Name (z.B Haus). Fangen wir also an, indem wir die Datei Haus.java mit folgendem Inhalt erstellen:

public class Haus {

}

Das Haus ist von außen erreichbar (public) und soll natürlich Attribute bzw. Eigenschaften enthalten. Hier zum Beispiel die Größe in Quadratmetern oder die Anzahl der Räume. Um diese anzulegen, müssen wir auf Variablen zurückgreifen. Diese Variablen sollten gekapselt (nur) für die jeweilige Klasse gültig sein. Warum das? Angenommen, wir greifen nicht das Beispiel des Hauses, sondern des Bankkontos auf. Dann wird dieses Bankkonto auch private Eigenschaften wie z.B. den „Pin“ enhalten (sehr abstraktes Beispiel). Damit dieser Wert von außen nicht „abgreifbar“ ist, müssen wir die Gültigkeit und den Zugriff für diese Variable beschränken. Und zwar auf „private“.

Wollen wir an diese Eigenschaften von außen – will die Klasse „Bank“ also z.B. an das Attribut „Eigentümer“ der Klasse „Konto“ – dann müssen wir eine sogenannte „Methode“ schreiben – dazu aber später mehr.

Wir legen nun also Eigenschaften an:

//Klasse:Haus
public class Haus {
	//Instanzvariablen
	private String hausName;
	private int qm;
	private int anzahlRaeume;
	
}

Damit können wir noch nicht so viel anfangen. Um von außen eine Instanz oder ein Objekt erzeugen zu können, müssen wir „instanziieren“. D.h., wir erstellen ein „reales“ Objekt. Objekte werden immer zur Laufzeit der Applikation angelegt. Diese Instanziierung belegt Speicher. Von der Bauplanklasse können beliebig viele Objekte angelegt werden. Übertragen auf unser Beispiel heißt dies z.B.: die Klasse „Haus“ stellt den Bauplan für ein Fertighaus. Dieser Bauplan kann genutzt werden, um beliebig viele Häuser zu erstellen. Wie geschieht dies? Ähnlich, wie im Baugewerbe, müssen die Häuser mithilfe eines Konstrukteurs gebaut werden. Java greift hier auf einen Konstruktor zurück. Man kann null oder mehrere unterschiedlich geartete Konstruktoren verwenden. Wir können einen Konstruktor mit nur zwei Attributen (anzahlRaeume, qm) und zum Beispiel einen mit drei (s.o.) verwenden. Wir beschränken uns nun aber auf einen Konstruktor, der die Attribute verwendet, die wir oben angegeben haben.

//Klasse:Haus
public class Haus {
    //Instanzvariablen
    private String hausName;
    private int qm;
    private int anzahlRaeume;
    
    //Konstruktor
    public Haus(String pHausName, int pQm, int pAnzahlRaeume){
        hausNr = pHausName;
        qm = pQm;
        anzahlRaeume = pAnzahlRaeume;
    }
}

Ich verwende die sogenannte „camel notation“. Andere Worte hierfür sind z.B. Binnenmajuskel , oder auch der Binnenversal oder die Binnenversalie. Dazu werden die einzelnen semantischen Teile mit Großbuchstaben versehen. Bei Variablen beginne ich mit einem Kleinbuchstaben, bei Klassen mit einem Großbuchstaben.

Für die Parameter innerhalb der runden Klammer ist der Datentyp anzugeben. Ich benenne die Parameter meist anders. Es ist aber auch möglich, diese genau so zu nennen, wie die Instanzvariablen. Dabei gilt es dann aber zu beachten, dass – obwohl sie gleich heißen – sie unterschiedliche Variablen sind. Deshalb kann mithilfe von „this“ die Instanzvariable von der Parameter-Variable unterschieden werden.

//Klasse:Haus
public class Haus {
    //Instanzvariablen
    private String hausName;
    private int qm;
    private int anzahlRaeume;
    
    //Konstruktor
    public Haus(String hausName, int qm, int anzahlRaeume){
        this.hausName = hausName;
        this.qm = qm;
        this.anzahlRaeume = anzahlRaeume;
    }
}

Wenn wir nun – zum Beispiel aus einer anderen Klasse, oder unserer Testanwendung – ein neue Instanz der Klasse Haus erzeugen, dann geschieht dies über den folgenden Befehl.

Haus hausVilla = new Haus("Villa",142,5);

Ihr seht, der Instanz wird zugleich ein Name zugeordnet, hier „hausVilla“. Möchte ich nun auf die Attribute zugreifen oder diese verändern, dann muss ich mithilfe von get- und set-Methoden diese Informationen abgreifen, bzw. verändern. Das ganze habe ich euch noch einmal in das Video verpackt.

 

 

Von Alexander

Das Projekt derFernstudent.de ist für mich gleichermaßen Dokumentation und Erfahrungsbericht. Als Erfahrungsbericht für mein Fernstudium gestartet, dient es nun als Plattform, um mein Hobby und Wissen zu teilen. Ergänzt wird die Seite durch den YouTube Kanal

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.