Fachkonzept - Objekt
Was ist eigentlich ein (Software-)Objekt?
Ganz einfach - eine Software-Einheit, die wie ein Objekt der realen Welt beschrieben werden kann. Alles klar? Sicher noch nicht. Also betrachten wir erst einmal ein konkretes Beispiel.
Objekte unserer Welt sind fassbare Gegenstände (wie z.B. Schuhe und Hasen im Zoo) oder auch Konstrukte unseres Denkens (wie z.B. Hasen im Computer).
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).
Entsprechend können wir einen (Software-)Hasen charakterisieren. Auch ein Hase hat Eigenschaften wie z.B. die aktuelle Position auf einem Spielfeld oder die Zahl der gegessenen Karotten. Auch Hasen stellen Operationen bereit wie z.B. das Laufen oder das Essen einer Karotte.
Die Welt in der wir leben und die virtuelle Welt im Computer besteht also (oder kann zumindest so beschrieben werden) aus Objekten, die Eigenschaften haben und die bestimmte Operationen ausführen können.
Man hat - übrigens sehr erfolgreich - Möglichkeiten gefunden, Software so zu organisieren, dass sie große Ähnlichkeiten zu Objekten unserer Welt aufweist. Auch das machen wir am besten an einem Beispiel klar. Wir betrachten die Simulation von Hasen mit Hilfe einer Software-Einheit.
Angelehnt an einen Hasen als Objekt der realen Welt soll ein Software-Objekt hase
konzipiert werden.
Das folgende Ablaufprotokoll verdeutlicht die Arbeitsweise eines Software-Objekts hase
:
Wenn man dem Hasen-Objekt dann sagt, er soll laufen, besitzt dieser danach einen anderen Zustand, der sich folgendermaßen darstellen lässt:
Das Software-Objekt verwaltet Daten zu bestimmten Eigenschaften.
Im vorliegenden Fall sind das u.a. die Zahl der gelaufenen Schritte,
die aktuelle x-Position und die aktuelle y-Position.
Das Software-Objekt hase
nutzt hierzu
die Variablen schritte
, x
und y
.
Das Software-Objekt stellt Operationen zur Verarbeitung der verwalteten Daten bereit.
Im vorliegenden Fall sind das u.a. die Operationen
einen Schritt laufen
und eine Karotte essen
, die durch
die Methoden laufe()
und esseKarotte()
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.
Die wichtigsten Konzepte zu Objekten lassen sich folgendermaßen zusammenfassen:
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 - Fähigkeiten 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 hase
zunächst im Zustand
{hase: schritte -> 0, x -> 5, y -> 2}.
Nach Abarbeitung des Methodenaufrufs ist das Objekt
hase
schließlich im Zustand
{hase: schritte -> 1, x -> 6, y -> 2}.
Den Zustand eines Objekts verdeutlicht man oft mit einem Objektdiagramm:
Aufrufen von Methoden
Eine Methode kann man in Greenfoot (und BlueJ) durch Rechtsklick auf ein Objekt ausführen.
Das Objekt hase
wird hierdurch aufgefordert, die Methode laufe
auszuführen.
Einige Methoden benötigen zusätzliche Informationen, um ausgeführt werden
zu können.
Die Methode setRichtung
bspw. benötigt eine Zahl zwischen 0 und 3,
welche die neue Richtung definiert.
Werte, die man beim Aufruf einer Methode angibt, nennt man
aktuelle Parameter.
Außerdem können Methoden Werte als Ergebnis zurück liefern.
Die Methode gelaufeneSchritte
bspw. gibt die Zahl der gelaufenen Schritte zurück.
Diesen Wert nennt man Rückgabewert.
Vererbung
Ein Schlittschuh ist ein Schuh. Er hat Eigenschaften wie eine Größe, Farbe und einen Verschluss. Auch kann man die Operationen "öffnen" und "schließen" ausführen. Er besitzt aber ein weiteres, wichtiges Merkmal: Die Kufe. Diese kann im Stil eines Eishockey- oder eines Eiskunstlaufschlittschuhs sein. Dadurch besitzt er auch eine weitere Operation, die man an ihm ausführen kann. Man kann ihn schleifen. Er besitzt also alle Eigenschaften (Attribute) und mögliche Operationen (Methoden), die auch ein normaler Schuh besitzt. Diese werden aber durch weitere Eigenschaften und Methoden erweitert. Man sagt: Schlittschuh erbt alle Eigenschaften und Fähigkeiten von Schuh.
Alle Objekte, die in Greenfoot auf der Welt positioniert sind, sind Akteure oder auf englisch Actor-Objekte. Ein Actor besitzt Eigenschaften, die jedes Objekt auf der Welt haben muss. Dazu gehören z.B. ein Bild, seine x- und y-Koordinaten und eine Richtung. Ein Actor besitzt auch verschiedene Methoden, die jedes Actor-Objekt ausführen kann. Jeder Actor kann z.B. seine aktuelle x- und y-Koordinate zurück geben oder seine eigene Position ändern.
Die Eigenschaften und Methoden, die ein Hase hat, ergeben sich somit aus den Eigenschaften und Methoden, die ein Actor hat und denen, die noch spezifisch für einen Hasen sind. Nur der Hase kann laufen oder Karotten essen. Eine Position auf der Welt hat dagegen auch ein Elefant oder eine Karotte.
Die geerbten von den nicht geerbten Methoden kann man in Greenfoot (und BlueJ) sehr einfach voneinander unterscheiden, wenn man eine Methode aufruft:
Quellen
- [1]: Schuhe - Urheber: Kris - Lizenz: Creative Commons BY-SA 2.0