Helmichs Informatik-Lexikon

Attribute

Attribute sind die Eigenschaften eines Objektes. Alle Objekte, die der gleichen Klasse angehören, haben die gleichen Attribute. Allerdings können sich die Attributwerte der einzelnen Objekte unterscheiden.

Attribute sind besondere Variablen, die im Kopf der Klassendeklaration festgelegt werden.

public class Schiff 
{ 
   private String name;
   private int gewicht;

   public Schiff() 
   { 
   } 
}

Quelltext 1: Zwei Beispiel-Attribute

In Quelltext 1 sind name und gewicht die beiden einzigen Attribute der Klasse Schiff. Diese Attribute können innerhalb der Klasse von allen Methoden der Klasse benutzt werden. Außerhalb der Klasse sind die beiden Attribute nicht zugänglich, weil sie mit dem Zugriffsmodifizierer private deklariert wurden.

Solche als private deklarierten Attribute sind nur innerhalb der Klasse gültig; selbst Tochterklassen können nicht auf private -Attribute zugreifen. Will man möglich machen, dass ein Attribut von außen sichtbar ist, so muss man es als public deklarieren. Um private-Attribute zu lesen oder zu verändern, bedarf es sondierender bzw. verändernder Methoden.

Die verschiedenen Objekte einer Klasse besitzen dann die in der Klassendefinition festgelegten Attribute, und logischerweise haben dann alle Objekte die gleichen Attribute. Jedes Schiff-Objekt hat also einen Namen vom Typ String und ein Gewicht vom Typ int. Allerdings können sich die Attributwerte der einzelnen Objekte voneinander unterscheiden. So kann der Name von Schiff-Objekt Nr. 1 "Helene" sein, der von Schiff-Objekt Nr. 2 "Klaus" - nur als Beispiel.

Die Gesamtheit aller Attributwerte bestimmt den Status eines Objektes.

Die Attribute eines Objektes im Objektinspektor

Mit dem BlueJ-Objektinspektor kann man sich die Attribute und auch die Attributwerte von den erzeugten Objekten übersichtlich anschauen:

Vier Attribute und ihre Attributwerte im Objektinspektor von BlueJ
Autor: Ulrich Helmich 2022, Lizenz: siehe Seitenende

Die Klasse Angestellter in diesem Beispiel definiert vier Attribute, die dann beim Erzeugen der entsprechenden Objekte mit Werten versehen werden müssen.

Wertzuweisung an Attribute

Meistens erfolgt diese erste Wertzuweisung beim Aufruf des Konstruktors über Parameter oder über vorher festgelegte Default-Werte.

    public Angestellter(String pName, double pStundenlohn)
    {
        stundenlohn  = pStundenlohn;
        stunden = 0;
        setName(pName);
    }

Quelltext 1: Wertzuweisungen an Attribute

Die beiden Attribute stundenlohn und name erhalten ihre Anfangswerte über die Parameter pName und pStundenlohn des Konstruktors. Der Stundenlohn wird dem Attribut direkt zugewiesen, also im Konstruktor selbst, während der Name über eine manipulierende Methode setName(pName) zugewiesen wird, die im Konstruktor aufgerufen wird. Das Attribut stunden erhält seinen Anfangswerte über einen vorher festgelegten Default-Wert. Hier ist also keine Parameterübergabe notwendig.

Konstanten

Wird ein Attribut als final bezeichnet, so wird aus dem Attribut eine Konstante, der nur ein einziges Mal ein Wert zugewiesen werden darf. Einmal zugewiesen, kann dieser Wert nicht mehr verändert werden. Einzelheiten siehe "final (Attribute)" im Lexikon.

Klassen-Attribute

Wird ein Attribut einer Klasse als static bezeichnet:

private static int anzahl;

so hat dieses Attribut bei jedem Objekt der Klasse den gleichen Wert. Solche Attribute werden auch als Klassen-Attribute bezeichnet, da sie keine Eigenschaft eines einzelnen Objektes sind, sondern eine Eigenschaft aller Objekte, also eine Eigenschaft der ganzen Klasse.

Ein Klassen-Attribut kann man beispielsweise einsetzen, wenn jedes neu erzeugte Objekt einer Klasse eine eigene laufende Nummer haben soll.

Weitere Einzelheiten dazu siehe "static (Attribut)".