Objekte
In unserer Umgebung existieren zahlreiche Objekte, und sie alle haben zumindest zwei Charakteristika gemeinsam: Sie besitzen bestimmte Eigenschaften (Attribute, state, properties) und bestimmte Verhaltensweisen (behavior, methods). Katzen zum Beispiel haben Eigenschaften (Namen, Fellfarbe, spitze Ohren) und Verhaltensweisen (Schnurren, Fauchen, Mäuse jagen). Das Gleiche gilt für Fahrräder, sie haben Eigenschaften (zwei Räder, Rahmen, Marke) und Verhaltensweisen (sie gehen zu Bruch, ihre Pedalen sind zu bewegen, damit sie fahren). Diese Angaben sind notwendig, um zum Beispiel eine Katze in einem Animationsprogramm darzustellen.
Klassen
Eine Klasse ist ein idealisiertes Abbild beziehungsweise ein Prototyp, der die Eigenschaften sowie die Methoden eines speziellen Objektes definiert. Ein Fahrrad repräsentiert eine Instanz der größeren Klasse von Zweirädern, zu der auch Rennräder, Mountain Bikes, Mopeds oder Tandems gehören. In einer Klasse sind die wesentlichen Merkmale abstrahiert, die notwendig sind, um ein bestimmtes Objekt über weitergehende Spezifikationen zu generieren. Der Vorteil ist, dass Klassen beliebig oft wieder einsetzbar sind, und dass eine Änderung der Eigenschaften einer Klasse gleichzeitig alle zu der entsprechenden Klasse gehörenden Objekte betrifft.
Beispiel: Die Fahrradklasse
Im folgenden Beispiel repräsentiert eine Software ein Fahrrad. Alles, was die Software weiß (properties) und tun kann (methods) wird durch die Attribute und Methoden innerhalb des Objektes ausgedrückt. Attribute können sein: die Geschwindigkeit (25 km/h), der Pedalradius (4 cm) und die Ausstattung des "Vehikels". Das Softwarefahrrad besäße auch Methoden, um zu zerbrechen oder die Ausstattung zu ändern. Es gäbe keine Methode für die Geschwindigkeit, da diese nur als Nebeneffekt aus den Eigenschaften und der Interaktion mit einem anderen Objekt (Radfahrer) resultiert. Alles, was ein Objekt nicht kann, ist von ihm ausgeschlossen.
Ein Fahrrad rennt oder bellt mit Sicherheit nicht. Daher gibt es in der Klasse der Fahrräder keine Eigenschaften oder Methoden zur Darstellung solcher Dinge oder Verhaltensweisen.
Vererbung (Inheritance)
Eine Klasse erbt Eigenschaften und Verhaltensweisen von seiner übergeordneten Klasse (Superclass). Wie erwähnt bilden Tandems, Rennräder usw. eine Unterklasse der Superclass "Zweirad". Jede Unterklasse erbt Eigenschaften und Methoden von seiner Superclass. Unterklassen können jedoch Eigenschaften und Methoden zu ihren von der Superclass geerbten hinzufügen, beziehungsweise von anderen Unterklassen erben. So kann ein Rennrad die gleiche Ausstattung wie ein Hollandrad erhalten.
Kapselung (Encapsulation)
Wie auf dem Schaubild erkennbar bilden die Eigenschaften einen Kern, den die Methoden eingeschliessen. Das ist die ideale Repräsentation eines Objektes. Der "Schutz" der Eigenschaften dient dazu, für andere Objekte unwichtige Informationen zu "verstecken". Andererseits könnte es für ein Objekt auch wichtig sein, Informationen an andere Objekte weiterzugeben. In Programmiersprachen wie Java entscheidet der Programmierer, ob ein Objekt Informationen aus den Attributen an andere Objekte weitergeben, verändern lassen oder eben verstecken darf.
Die Vorteile von Objekten
Botschaften (Messages)
Softwareobjekte interagieren und kommunizieren miteinander über Botschaften. Ein Objekt alleine bewirkt noch nicht viel. Es ist vielmehr Bestandteil eines Programmes, das mehrere unterschiedliche Objekte enthält. Durch die Interaktion mehrerer Objekte untereinander erstellen die Programmierer den Funktionsumfang einer Anwendung. Der Informationsaustausch von Objekten geschieht über Botschaften, die Parameter enthalten. Kaufen Sie (Objekt 1) ein Fahrrad (Objekt 2), müssen Sie dem Händler (Objekt 3) mitteilen (Message), welchen Sattel Sie wünschen und was für eine Gangschaltung es sein soll (Parameter).
Eine Message setzt sich aus drei Komponenten zusammen:
Objekte müssen nicht in demselben Prozess ja nicht einmal innerhalb desselben Rechners sein, um miteinander zu kommunizieren.
© Ralph-Erich Hildebrandt, 19. September 2011