Fachkonzept - Objekt
Was ist ein Objekt?
Objekte unserer Welt sind fassbare Gegenstände (wie z.B. Schuhe oder Ampeln) oder auch Konstrukte unseres Denkens (wie z.B. Konten).
Quelle: Wikimedia Commons
Betrachten wir Schuhe als Beispiel. Wenn man seine neuen Schuhe charakterisieren will, dann fallen einem sofort eine Reihe von Eigenschaften ein: Modell: Sneaker; Größe: 40; Farbe: rot; Verschluss: Schnürsenkel usw.. Schuhe haben nicht nur bestimmte Eigenschaften, mit ihnen kann man auch bestimmte "Operationen" ausführen: Zum An- und Ausziehen kann man sie in einem gewissen Sinn öffnen und schließen (z.B. durch Öffnen und Binden der Schnürsenkeln). Vielleicht kann man sie auch benutzen, um einen Nagel einzuschlagen, obwohl sie dafür eigentlich nicht gedacht sind.
Objekte prägen sehr stark unser Denken. Wir können die Welt, in der wir leben, mit Hilfe von Objekten beschreiben, die Eigenschaften haben und die mit bestimmten Operationen bearbeitet werden können.
Was ist ein Software-Objekt?
Man hat - sehr erfolgreich - Möglichkeiten gefunden, Software so zu organisieren, dass sie große Ähnlichkeiten zu Objekten unserer Welt aufweist. Das lässt sich am besten anm Beispiel klarmachen.
Analog zu einer Roboter (als Objekt der realen Welt) soll ein Software-Objekt rob
konzipiert werden.
Das folgende Ablaufprotokoll verdeutlicht die Arbeitsweise eines Software-Objekts rob
:
Das Software-Objekt verwaltet Daten zu bestimmten Eigenschaften einer Ampel
Im vorliegenden Fall sind das die Koordinaten des Feldes, auf dem sich der
Roboter befindet, und die Richtung, in die er gerade schaut. Das Software-Objekts rob
nutzt hierzu
die Variablen x
, y
und r
.
Das Software-Objekt kann zudem bestimmte Operationen ausführen. Im vorliegenden Fall sind das die Operationen
einen Schritt vorwärts gehen
, eine Drehung nach rechts durchführen
und
eine Drehung nach links durchführen
, die durch
die Prozeduren schritt()
, rechts()
und links()
dargestellt werden.
Das Software-Objekt ist also eine Einheit, die Daten verwaltet und Operationen zur Verarbeitung der verwalteten Daten zur Verfügung stellt. Statt von Software-Objekten wird im Folgenden kurz von Objekten gesprochen.
Es folgen jetzt Präzisierungen der zentralen Konzepte.
Fachkonzept Objekt
Ein Objekt ist eine Einheit, die Daten mit Hilfe von Attributen verwalten und Operationen zur Verarbeitung der verwalteten Daten mit Hilfe von Methoden ausführen kann.
Attribute sind - an Objekte gebundene - Variablen zur Verwaltung von Daten. Diese entsprechen in der Regel den Eigenschaften der betreffenden Objekte.
Methoden sind - an Objekte gebundene - Prozeduren oder Funktionen zur Verarbeitung von Daten. Diese Methoden werden ausgeführt, wenn das betreffende Objekt veranlasst wird, eine bestimmte Operation auszuführen.
Der Objektzustand
Ein Objekt befindet sich stets in einem bestimmten Zustand. Der aktuelle Objektzustand wird durch die aktuellen Werte der Attribute festgelegt.
Im Ablaufprotokoll oben befindet sich das Objekt rob
zunächst im Zustand
{rob: x -> 2, y -> 3, r ->'O'}.
Nach Abarbeitung der beiden Methodenaufrufe ist das Objekt
rob
schließlich im Zustand
{rob: x -> 2, y -> 4, r ->'S'}.
Den Zustand eines Objekts verdeutlicht man oft mit einem Objektdiagramm:
Zugriff auf Attribute
Den Wert eines Attributs erhält man (solange keine besonderen Maßnahmen getroffen sind) durch einen Ausdruck der folgenden Gestalt:
objekt.attribut
Befindet sich beispielsweise das Objekt rob
im Zustand
{rob: x -> 2, y -> 3, r ->'O'},
so liefert der Aufruf rob.x
den Wert 2
.
Das folgende Ablaufprotokoll verdeutlicht die Abarbeitung einer Zuweisung, bei der ein lesender und ein schreibender Zugriff auf ein Attribut erfolgt.
{rob: x -> 2, y -> 3, r ->'O'} rob.x = rob.x + 1 {rob: x -> 3, y -> 3, r ->'O'}
Aktivierung von Methoden
Eine Methode wird durch eine Anweisung der folgenden Gestalt aktiviert:
objekt.methode()
Das Objekt objekt
wird hierdurch aufgefordert, die Methode methode
auszuführen.
Das folgende Ablaufprotokoll verdeutlicht eine solche Aktivierung von Methoden im Kontext Roboter
.
{rob: x -> 0, y -> 0, r ->'S'} rob.schritt() {rob: x -> 1, y -> 0, r ->'S'} rob.schritt() {rob: x -> 2, y -> 0, r ->'S'} rob.links() {rob: x -> 2, y -> 0, r ->'O'}
Quellen
- Foto: Chuck Taylors - Urheber: Kris - Lizenz: CreativeCommons BY 2.0