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.

Ähnliche Beiträge

So nutzt du getter und setter Methoden bei der Java Programmierung

Java Keyword private

In diesem Artikel möchte ich dir zeigen, wie du Instanzvariablen innerhalb der Java Klasse schützt. Und den Zugriff nur noch indirekt über getter und setter Methoden anbietest. Stell dir vor. Du hast ein Programm zur Lagerverwaltung geschrieben. Dieses Programm dient Möbelhäusern dazu, ihre Bestände zu verwalten. Und das Programm erwartet vom Nutzer gewisse Eingaben zu […]

Java Übung 24 – So kannst du Kommazahlen runden

Java Übung runden

In dieser Java Übung möchte ich mit dir Zahlen runden. Ich bitte dich deshalb: Erstelle eine Klasse „RundenUebung“. Lege dann eine statische Methode rundeZahl() an. Diese erwartet zwei Parameter. Parameter 1 ist die Kommazahl, welche gerundet werden soll. Als zweiten Parameter wird eine ganze Zahl übergeben, welche die Nachkommastelle – bis auf welche letztlich gerundet […]

So kannst du Instanzen in Java Klassen zählen

Wie kannst du die Instanzen der Java Klassen zählen? Ganz einfach. Am besten ist es, wir bleiben beim Einführungsbeispiel zu den Java Klassen. Und ich wähle die Klasse „Monster“. Um es einfach zu halten, soll auch der Programmstart durch die Klasse erfolgen. Die Klasse bietet somit eine main-Methode an.

So legst du Utility Klassen in Java an

Java Utility Klassen

Utility Java Klassen – was ist das? Man nennt diese auch Hilfsklassen von Java. Diese Utility Klassen sind Java Klassen, welche lediglich Methoden und Konstanten anbieten. Am Beispiel: Die Klasse Math ist so eine klassische Utility Klasse. Wozu braucht man solche Klassen? Diese Klassen sind so etwas wie ein Werkzeugkoffer für jedes Java Programm. Hier […]

Über das kurze Leben einer lokalen Variablen

Java Variable lokal

Lass uns über die Lebensdauer einer lokalen Variablen sprechen. Warum ausgerechnet die Lebensdauer? Alle Java Variablen, unterscheiden sich in folgenden Punkten: wo diese deklariert werden können, wie du diese aufrufen kannst, welchen Bereich diese abdecken, und Ihre Lebensdauer Und eine lokale Java Variable hat eine relativ kurze Lebensdauer. Schauen wir uns zuerst Klassen- und Instanzvariablen […]

Von Java Klassen zum Java Programm – Der Programmstart

Java Klassen ausführen

In den letzten Beiträgen hast du gelernt, wie Java Klassen erstellt werden und aufgebaut sind. In diesem Beitrag geht es um den Programmstart. Ich will dir zeigen, was nötig ist, dass du ein Java Programm ausführen kannst. Und ich zeige dir außerdem, wie du eine Startklasse in einem x-beliebigen Javaprogramm anlegst. Wie auch schon zuvor, […]

Zwei smarte Möglichkeiten eine Java Zufallszahl zu erzeugen

Java Zufallszahl

Java Zufallszahl – Wieso? In der Java Programmierung benötigst du immer wieder einmal Zufallszahlen. Du möchtest deine Software mit Daten testen und dir keine Zahlen ausdenken. Du benötigst Stichproben, welche ein reales Verhalten simulieren. Du hast ein Spiel entworfen und die Akteure sollen mit zufälligen aber unterschiedlichen Größen, Rüstungsleveln usw. auftreten. Die Einsatzmöglichkeiten für Zufallszahlen […]

Du bekommst was du vereinbarst – Die Rückgabewerte von Java Methoden

Java Methoden Rückgabetypen

Was du vereinbarst, das bekommst du zurück. Ach wäre es schön, wenn alles im Leben so funktionieren würde. Aber zum Glück funktioniert dieses Prinzip bei deinen Java Methoden. Denn du kannst den Rückgabetypen im Methodenkopf vereinbaren. Doch bevor ich dir zeige, wie du den Rückgabetypen anlegen kannst…. Lass mich dir zeigen, wofür du den Kram […]