Skip to main content

So kannst du in den Java Klassen Attribute anlegen

Die bisherigen Java Klassen in unserem Einführungsbeispiel besitzen noch keine Attribute.
Das ändern wir und legen diese jetzt an.

In diesem Beitrag erfährst du:

  • Warum Variablen in deinen Klassen eine entscheidende Rolle spielen.
  • Was es bedeutet eine Variable zu deklarieren.
  • Wo du Attribute in den Java Klassen anlegen darfst und wo nicht.
  • Wie du durch die angelegten Eigenschaften, Schablonen für x-beliebig viele Objekte erstellst.


Warum ist dieser Beitrag so wichtig?
Bedenke…..

Heute sind es Attribute in den einzelnen Java Klassen-
Morgen sind es Eigenschaften der daraus erstellten Objekte.

So eine Java Klasse ist immer eine Gebrauchsanweisung für ein Objekt, welches kreiert werden soll.
Wirf einmal einen Blick auf das Java Adventure.

Java Klassen Adventure

Und dann wirf einen Blick auf die Klassen, welches dieses Adventure bereits hat.
Java Klassen des Java Adventures

Welche Variablen könnten die einzelnen Klassen besitzen?
Oder genauer gefragt:
Wenn aus der Heldenklasse irgendwann Objekte erstellt werden- welche Eigenschaften sollten diese Helden haben?

Und mit Eigenschaften meine ich nicht Charaktereigenschaften.
Denke dabei mehr in die Richtung: „Unterscheidungskriterien.“

Die Helden könnten vielleicht so aussehen:

Java-Adventure-Friedhof

Also wodurch unterscheiden sich Helden?
Na klar – es sind Eigenschaften wie:

  • Name
  • Geschlecht
  • Größe
  • Kraft
  • Augenfarbe
  • ….usw.

Und diese Eigenschaften bzw. Unterscheidungskriterien legt man in der entsprechen Klasse fest.

Nochmal:
Denke daran, dass Java Klassen – Baupläne für Objekte sind.

Also könnte doch ein Bauplan für die Heldenklasse in etwa so aussehen:

Java Klassen Bauplan der Heldenklasse

Später werden dann die einzelnen Objekte aus diesem Bauplan erzeugt.
Und dann bekommt jedes Objekt seinen individuellen Wert für jedes einzelne Attribut zugewiesen.
Java Klassen Attribute Bauplan

Mit den Attributen legst du die Ausrichtung für die Java Klassen fest.

Diese Attribute haben viele Namen:

  • Attribute
  • Instanzvariablen
  • Felder
  • Instanzfelder
  • Objektvariablen

Diese Variablen legst du einmal im Bauplan an.
Du weist diesen Attributen aber noch keinen Wert zu.
Schließlich handelt es sich lediglich um einen Bauplan und noch nicht um ein fertiges Objekt.

Erst wenn das Objekt erstellt wird, bekommt jedes einen individuellen Wert.

Stell dir den ganzen Ablauf wie in einem Spiel vor.
Da findest du auch so einen Bauplan oder Schablone.
Am Anfang des Spieles wirst du gefragt:
Männlich oder Weiblich?

Java Klassen Geschlecht wählen

Danach folgt der Name, die Auswahl einer Waffe usw.
Java Klassen Eigenschaften Namen festlegen

Am Ende des Vorganges hast du einen ganz individuellen Helden.
Falls du eine zweite Figur erschaffst, kann diese andere Attribute haben.

Die Grundeigenschaften, wie Geschlecht, Name und Waffe – wurden einmal im Bauplan angelegt.
Und dies ermöglicht dir dann ganz viele individuelle Helden zu bauen.

Und immer wenn du neue Eigenschaften für ein Objekt brauchst.
Zum Beispiel das Gewicht.
Dann legst du diese in der entsprechenden Java Klasse an.
Und alle Objekte können diese neue Eigenschaft nutzen.

Java Klassen Felder anlegen

Somit bietet dir die Objektorientierung einen entscheidenden Vorteil.
Du musst den Code nicht für alle Helden ändern.
Stattdessen änderst du nur den Bauplan (die Klasse).
Und dadurch verändern sich alle Helden.

Und dieses Prinzip kannst du für sämtliche Software nutzen.

Vielleicht in einer Kfz-Zulassung.
Die Attribute könnten sein:

  • Farbe
  • Marke
  • Herstellungsdatum

Java Klassen Bauplan Autos

Aus diesem Bauplan heraus, lassen sich dann individuelle Autos anlegen.

Oder in einer Krankenhausverwaltung:

  • Patientennummer
  • Patientenname
  • Krankheit

Java Klassen Bauplan Krankenhaus

Auch hier gibt es einen Bauplan mit drei Attributen.
Aus diesem Plan heraus lassen sich sämtliche Patienten erstellen.

Diese ganze Objektorientierung lehnt sich somit sehr stark an unser reales Leben an.

So kannst du Attribute in Java Klassen deklarieren.

Das Anlegen der Felder nennt man in der Java Programmierung – deklarieren.
Das spätere Zuweisen der einzelnen Eigenschaftswerte nennt man – initialisieren.

Beim Deklarieren von Variablen stellen sich folgende drei Fragen:

  • Welche Variablen sollen deklariert werden?
  • Wo werden diese deklariert?
  • Wie werden diese deklariert?

Beginnen wir bei Frage eins.
In der Heldenklasse, kannst du nun unzählige Instanzvariablen anbieten.
Für den Anfang reichen drei. 🙂
Und das sind die Instanzvariablen der Heldenklasse:

  • der Name
  • das Alter
  • die Größe

Du kannst nachher noch selbst eigene Instanzvariablen in dieser Klasse deklarieren.
Und zwar nach genau dem gleichen Prinzip, welches ich dir jetzt zeige.

Kümmern wir uns um die Frage:
Wo werden diese deklariert?

Die Variablen bzw. Attribute legst du auf Klassenebene an.

Das bedeutet:
Falls du eine main-Methode oder eine andere Methode in der Klasse anbietest.
Dann darf die Instanzvariable nicht im Rumpf dieser Methode angelegt werden.
Denn so würde die Variable zur Methode gehören.

Die Variable gehört zum Bauplan und somit zur Klasse.
Deshalb musst du Instanzvariablen immer:

  1. außerhalb von Methoden
  2. Innerhalb des Klassenrumpfes anlegen bzw. deklarieren

Java Klassen Attribute anlegen

Das Wo und das Was ist geklärt.

Bleibt die letzte Frage:
Wie werden Attribute deklariert?
Für den Namen des Helden machst du das so:


public class Held {
	String heldName;

}
  • Der Name ist ein Textwert.
  • Du wirst als Namen niemals eine Zahl vergeben.
  • Deshalb musst du den Namen in einem Datentypen speichern, welcher mit Textwerten umgehen kann.
  • Und dieser Datentyp, ist der Datentyp String.
  • Für den Namen der Variablen habe ich „heldName“ gewählt.

Worauf solltest du beim Namen der Instanzfelder achten?

  • Du kannst jeden x-beliebigen Namen wählen.
  • Der Name muss aber zusammengeschrieben sein.
    Du kannst also nicht zwei Wörter als Namen zuweisen.
    „Der Name“ oder „Held Name“ funktioniert nicht
  • Falls du dennoch zwei Wörter wählst, schreibst du diese zusammen.
    Den Namen der Variablen solltest du immer klein beginnen und den zweiten Namen dann groß schreiben.

Welche Rolle spielt der Name der Instanzvariablen?
Zum Zeitpunkt als die Variable „heldName“ deklariert wurde, geschieht folgendes:

  • Es wird ein Speicherplatz in Größe bzw. Volumen eines String-Datentypen reserviert.
  • Wenn der Wert dann später zugewiesen wird, kann auf diese Reservierung zurückgegriffen werden.
  • Diese Reservierung wird unter dem Namen der Variablen speicherintern geführt und verwaltet.

Zu diesem Zeitpunkt könntest du x-beliebig viele Helden anlegen.
Und jedem Helden könntest du einen individuellen Namen zuweisen.

Java Klassen Helden

Aber wir wollten noch mehr.
Und zwar sollte jeder Held noch ein Alter zugewiesen bekommen.

Also legen wir auch das Alter an.


public class Held {
	String heldName;
	int heldAlter;

}
  • Das Alter wird ein ganzzahliger Wert sein.
  • Und für ganze Zahlen nutzt du den Datentyp Integer oder int.
  • Auch hier kannst du jeden willkürlichen Namen für die Instanzvariable wählen.
  • In meinem Fall heißt diese „heldAlter“.

Falls du die Variable „das Alter des Helden“ nennen möchtest, geht das auch.

  • Schreibe den Variablennamen zusammen.
  • Schreibe diesen zu Beginn klein.
  • Und achte auf die Groß-und Kleinschreibung zwischen den Wörtern.
  • Die Variable hieße demnach: „dasAlterDesHelden“.

Die letzte Variable ist die Größe:


public class Held {
	String heldName;
	int heldAlter;
	double heldGroesse;

}
  • In diesem Fall habe ich eine Variable vom Datentyp double gewählt.
  • Diesen Datentyp nutzt du um Kommazahlen zu speichern.
  • Denn ich möchte gern die Größe in Metern angeben.
  • Und dafür sind Kommazahlen nunmal notwendig.

Somit wäre der Bauplan fertig.

Es fällt dir sicherlich auf, dass zwar die Variablen angelegt sind.
Aber nicht eine Variable einen konkreten Wert hat.

Die Zuweisung des Wertes kann jetzt erfolgen.
Aber eigentlich trennt man das Deklarieren von der Wertzuweisung.

Warum trennt man die Felderinitialisierung von der- deklarierung?

Ich sagte:
Deklarieren heißt Variable anlegen.
Initialisieren heißt Wert zuweisen.

Beides in einem Vorgang ist möglich.


public class Held {
	String heldName="Herbert";
	int heldAlter;
	double heldGroesse;

}

Aber man verändert den Bauplan.

Wenn du in der Heldenklasse beispielsweise dem „heldNamen“ den Wert Herbert zuweist.
Und dann Objekte aus der Heldenklasse anlegt.

Java Klassen Attribute deklarieren und initialisieren

Dann haben alle Objekte beim Erstellen den Namen Herbert.
Und das wäre blöd.
Denn du willst das Programm und somit die Klasse so flexibel wie möglich halten.

Und deshalb:

  1. Lege zuerst Instanzvariablen an.
  2. Erschaffe dann das Objekt
  3. Und zum Schluss weist du den Instanzvariablen den Wert zu.

Die Objekterstellung werden wir im nächsten Beitrag des Einführungsprojektes betrachten.

Zusammenfassung:

  • Die ganze Objektorientierungsgeschichte richtet sich am realen Leben aus.
  • Dabei spielen die Eigenschaften bzw. Unterscheidungskriterien eines Objektes eine entscheidende Rolle.
  • Durch das Anlegen von Feldern werden deine Java Klassen zu einer Art Schablone oder Bauplan für Objekte.
  • Du kannst durch diese Attribute x-beliebig viele Objekte vom selben Typ erschaffen und diese mit individuellen Werten ausstatten – wie im wirklichen Leben.
  • Das Anlegen eines Attributes erfolgt immer auf der Hierarchieebene der jeweiligen Klasse.
  • Der ganze Ablauf erfolgt immer nach dem gleichen Muster: Zuerst der Datentyp, dann der Name.