1.4 Attribute

Attribute stellen die Eigenschaften eines Objekts dar.

Attributwert

Alle Objekte einer bestimmten Klasse besitzen die gleichen Attribute. Diese Merkmale können jedoch bei jedem einzelnen Objekt der Klasse unterschiedlich ausgeprägt sein, das heißt einen anderen Wert besitzen.

Beispiel

Alle Objekte der Klasse Roboter besitzen das Attribut farbe. Jeder einzelne Roboter kann diesem Attribut jedoch einen individuellen Wert zuweisen, zum Beispiel "weiss" oder "gelb".

UML-Objektdiagramm – Beziehung zwischen robi, einem Objekt der Klasse Roboter, und s1, einem Objekt der Klasse Spielbrett
Abb. 1-5: UML-Objektdiagramm – Beziehung zwischen Objekten.

Objekte nutzen ihre Attribute, um sich bestimmte Daten – ihre Attributwerte – zu merken.

Attribute sind damit so etwas wie das „Gedächtnis“ eines Objekts. Da ein Programm aus Objekten besteht, bilden sie zusammen das „Gedächtnis“ des Programms.

Merke: Attribute

Attributtyp

Der Attributtyp gibt an, welche Art von Werten einem Attribut zugewiesen werden dürfen.

Beispiel

Klären wir für die Klasse Roboter, welche Art von Werten ihre Attribute jeweils annehmen dürfen.

UML-Klassendiagramm – Attributtypen
Abb. 1-6: UML-Klassendiagramm – Attributtypen
  • Das Attribut farbe besitzt den Typ String. Hierdurch wird festgelegt, dass es beliebige Zeichenketten (Buchstaben, Ziffern und Sonderzeichen) aufnehmen kann.

  • Das Attribut geschwindigkeit hat den Typ int, wodurch bestimmt wird, dass es nur ganzzahlige Werte aufnehmen kann.

  • Für das Attribut position ist als Typ die Klasse Position festgelegt. Dies bedeutet, dass dem Attribut position ein Verweis auf ein Objekt der Klasse Position zugewiesen werden kann.

Primitive Datentypen vs. Referenztypen

Java unterscheidet zwischen primitiven Datentypen und Referenztypen.

Attribute mit einem primitiven Datentyp sind Platzhalter für einen einfachen Wert, wie zum Beispiel eine Zahl.

Primitive Datentypen beginnen stets mit einem Kleinbuchstaben.

Typ Inhalt Speicherbedarf Wertebereich Beispiel
int ganze Zahl 4 Byte [-2.147.483.648; 2.147.483.647] int anzahl = 4;
long ganze Zahl 8 Byte [- 9.223.372.036.854.775.808; 9.223.372.036.854.775.807 long anzahl = 4l;
double Gleitkommazahl1 8 Byte [-1,7 *10308; 1,7 *10308] double pi = 3.1415927;
boolean Wahrheitswert JVM-spezifisch [false; true] boolean belegt = true;
Merke: Primitive Datentypen

Attribute, deren Datentyp eine Klasse ist, enthalten lediglich einen Verweis (Referenz) auf ein Objekt dieser Klasse, nicht jedoch das Objekt selbst. Daher werden diese Datentypen Referenztypen genannt.

Da es sich bei Referenztypen um Klassen handelt, beginnen sie mit einem Großbuchstaben.

Merke: Referenztypen
Aufgabe

Aufgabe 1-2: Fahrradvermietung

Die „Fahrrad Müller GmbH“ vermietet Fahrräder. In ihrem Angebot finden sich verschiedene Typen wie zum Beispiel Mountainbikes, Trekkingräder‎, Rennräder und E-Bikes. Jede Vermietung erfasst das Unternehmen in einer objektorientiert entwickelten Software.

Beispielhaft ist folgender Geschäftsvorfall:

Am 11.08.2016 unterschreibt Max Maier den Mietvertrag für ein Fahrrad. Es wurde vereinbart, dass der Mietzeitraum am nächsten Tag beginnt und drei Tage dauert. In dieser Zeit steht für den Kunden, wie gewünscht, ein Mountainbike bereit. Der Angestellte reserviert im Vertrag das Fahrrad mit der Identifikationsnummer 429.

  1. Welche Objekte spielen in dem beschriebenen Geschäftsvorfall eine Rolle? Welche relevanten Eigenschaften haben diese Objekte und welche konkreten Werte besitzen diese Eigenschaften im vorliegenden Beispiel?Lösung
    Lösung
    img/1_8_UML_Objektdiagramm_Fahrrad.svg
    Abb. 1-8: UML-Objektdiagramm – Fahrradvermietung
  2. Entwerfen Sie ein UML-Klassenmodell. Die Methoden der Klassen betrachten wir in dieser Aufgabe nicht.Lösung
    Lösung
    img/1_9_UML_Fahrrad.svg
    Abb. 1-9: UML-Klassendiagramm – Fahrradvermietung.