Home > Informatik > Stufe EF > Lernbausteine

Attribute

Was sind eigentlich Attribute? Diese Frage taucht im Informatikunterricht immer wieder auf, und als Schüler sollte man diese Frage natürlich im Schlaf beantworten können. In diesem Lernbaustein wird der Begriff "Attribut" am Beispiel der Klasse Circle aus dem shapes-Projekt der Folge 1 und der Folge 2 erklärt. Diese Seite richtet sich eindeutig an Programmier-Anfänger(innen), nicht an Fortgeschrittene.

Betrachten Sie die folgende Skizze:

Datenkapselung und manipulierende Methoden mit/ohne Parameter. Weitere Erläuterungen siehe Text...

Diese Abbildung soll ein Objekt der Klasse Circle darstellen, zum Beispiel das Objekt sonne aus dem Workshop 2 der Folge 1. Wenn wir mit der rechten Maustaste auf den roten Kasten klicken, der für das Objekt sonne steht, dann sehen wir im Objektinspektor fünf Attribute mit ihren fünf Attributwerten:

Siehe Erläuterungen im folgenden Text...

Diese fünf Attribute beschreiben den Zustand oder Status eines Circle-Objektes vollständig. In unserem Beispiel handelt es sich um einen sichtbaren blauen Kreis mit 30 Pixeln Durchmesser an den Koordinaten (20,60).

Attribute

private boolean isVisible;

Dieses Attribut entscheidet darüber, ob man den Kreis sehen kann oder nicht. Wenn isVisible den Wert true hat, so ist der Kreis sichtbar. Hat isVisible den Wert false, kann man den Kreis nicht sehen. Andere Werte kann isVisible nicht annehmen, da der Datentyp boolean nur diese beiden Werte zulässt.

Wenn Sie mehr über Datentypen und ihre Verwendung lernen möchten, gehen Sie bitte auf den Lernbaustein "Datentypen".

private int diameter;

Dieses Attribut definiert den Durchmesser des Kreises. Es handelt sich um eine ganze Zahl, die anfangs den Wert 30 hat. Wenn Sie also einen neuen Kreis erzeugen, hat dieser einen Durchmesser von 30 Pixeln.

private int xPosition;

Das Attribut xPosition bestimmt, an welcher Stelle der Zeichenfläche sich der Kreis horizontal aufhält. Ist der Wert von xPosition klein, wird der Kreis weit links gezeichnet, bei großen Werten für xPosition erscheint der Kreis weit rechts. Der Anfangswert von xPosition ist 20.

private int yPosition;

Das Attribut yPosition bestimmt, an welcher Stelle der Zeichenfläche sich der Kreis vertikal aufhält. Ist der Wert von yPosition klein, wird der Kreis weit oben gezeichnet, bei großen Werten für yPosition erscheint der Kreis weit unten. Der Anfangswert von yPosition ist 60.

private String color;

Das letzte Attribut - eine Zeichenkette - bestimmt die Farbe des Kreises. Anfangs wird der Wert von color auf "blue" gesetzt.

Das Schlüsselwort private

Dieses Schlüsselwort sorgt dafür, dass man die Attribute bzw. die Attributwerte eines Kreis-Objektes nicht "von außen" einsehen kann. Sie sind nach außen hin verborgen. In der obigen Abbildung wird das durch den geschlossenen Kreis verdeutlicht, der um die Attribute gelegt ist.

Wenn Sie in BlueJ mit der rechten Maustaste auf den roten Objekt-Kasten klicken, der ein Circle-Object darstellt, dann werden Sie kein einziges dieser Attribute sehen. Die Methoden der Klasse Kreis sind dagegen nach außen hin sichtbar. Vor den Methoden steht ja auch nicht das Wort private, sondern das Wort public, welches das genaue Gegenteil bewirkt.

Manipulierende Methoden und Attribute

Wie Sie in dem Lernbaustein "manipulierende Methoden" vielleicht schon gelesen haben, dienen manipulierende Methoden (bzw. Aufträge) dazu, Attribute der Objekte zu verändern.

Wenn Sie mit new Circle() ein neues Circle-Objekt erzeugt haben, dann ist dieses zunächst nicht auf der Zeichenfläche sichtbar. Der Grund: Das Attribut isVisible hat den Wert false.

Nach außen hin ist dieses Attribut nicht sichtbar. Schuld daran ist das Schlüsselwort private, das vor dem Attribut steht. Trotzdem können Sie als Benutzer den Wert dieses Attributes ändern, nämlich mit Hilfe der manipulierenden Methode makeVisible.

Diese Methode ist eine öffentlich zugängliche Methode, kann also von außen her benutzt werden. Weitere öffentlich zugängliche Methoden sind in der Abbildung oben auf dieser Seite eingezeichnet. Mit changeSize kann zum Beispiel der Wert des Attributes diameter geändert werden. Allerdings möchte diese Methode wissen, wie groß der neue Durchmesser des Kreises sein soll, daher reicht es nicht, die Methode changeSize einfach aufzurufen, sondern Sie müssen der Methode auch mitteilen, welchen Wert der neue Durchmesser haben soll.

Ähnlich ist es mit der Methode changeColor, auch diese manipulierende Methode benötigt eine Information von außen (einen Eingabeparameter), damit sie die neue Farbe des Objektes festlegen kann, die im Attribut color gespeichert ist.

Status eines Objektes

In diesem Zusammenhang ist ein neuer Fachbegriff interessant, der immer wieder im Zusammenhang mit Objekten und deren Attributen auftaucht, nämlich der Status eines Objektes.

Status eines Objektes

Unter dem Status eines Objektes versteht man die Gesamtheit aller Attributwerte eines Objektes

Den Status des Objektes sonne der Klasse Circle könnte man umgangssprachlich vielleicht so beschreiben:

isVisible: true
diameter: 85
xPosition: 140
yPosition: 260
color: "yellow"

Damit hätte man den Status (Zustand) eines Circle-Objektes festgelegt. Ein zweites Circle-Objekt, wie zum Beispiel mond, hat die gleichen Attribute wie sonne, kann aber andere Attributwerte haben. Somit hat mond dann auch einen anderen Status, zum Beispiel:

isVisible: true
diameter: 47
xPosition: 40
yPosition: 60
color: "blue"

Haben zwei Objekte, bei denen alle Attributwerte identisch sind, nicht den gleichen Status?

Nein! Selbst dann, wenn alle fünf Attributwerte gleich wären, hätte mond einen anderen Status als sonne, denn neben den sichtbaren Attributen mit ihren sichtbaren Werten gibt es unsichtbare Attribute wie zum Beispiel die Identität eines Objektes. Und zwei Objekte der gleichen Klasse besitzen immer unterschiedliche Identitäten, selbst dann, wenn alle sichtbaren Attribute die gleichen Werte haben.

Was ist eigentlich der Plural von Status?

Diese Frage taucht in meinem Informatikunterricht immer wieder auf. Der Plural des Wortes Status ist ebenfalls Status, allerdings wird hier das "u" dann lang gesprochen (siehe Duden.de).

Wenn Sie etwas mehr über Attribute wissen möchten, gehen Sie doch bitte auf meine Lexikonseite "Attribute", die ich für fortgeschrittenere Schüler(innen) geschrieben habe.