Search Home Preferences Login Help  

Objektorientierte Programmierung im Anfangsunterricht
 
 
 Allgemeine Betrachtung
Begriffe
Vergleich mit strukturierter Programmierung
 zurück zur OOP-Hauptseite
Begriffe
 
 
Kapselung 
Meldungen
Klassen 
Vererbung
Zusammenfassung

Kapselung
In den Bildern sind die Variablen des Objektes im Zentrum, umschlossen von den Methoden, gezeichnet. Dies deutet grafisch an, daß Variablen gegen Zugriffe von außen geschützt sind, d.h. Programme können nicht direkt auf die Variablen des Objektes zugreifen, sondern müssen die entsprechenden Methoden aufrufen. Dieser Schutz wird in der OOP Welt Kapselung genannt. Mit Kapselung werden Implementationsdetails versteckt. 

Vorteile der Kapselung

Ein Objekt hat eine nach außen definierte Schnittstelle, mit der andere Objekte kommunizieren können. Das Objekt kann die privaten Informationen und Methoden ändern, ohne daß andere Objekte betroffen sind. Zudem kann ein Objekt problemlos herumgereicht werden. 

Sie können Ihren Hund jemand anderem geben und er bellt immer noch.

Meldungen
 

Objekte agieren und kommunizieren untereinander, indem sie sich gegenseitig Meldungen schicken. 

Eine Meldung umfaßt drei Komponenten: 

  • Das Objekt zu dem die Meldung geschickt wird (Hund)
  • Der Name der auszuführenden Methode (bellen)
  • Notwendige Parameter der Meldung (gib Laut) 
  • Vorteile der Meldungen

    Alles was ein Objekt machen kann, wird mit Meldungen ausgedrückt. Das Verschicken von Meldungen ist die einzige Möglichkeit, wie sich Objekte verständigen können. Objekte müssen sich nicht unbedingt auf derselben Maschine befinden. Meldungen können auch über das lokale Netzwerk oder Internet verschickt werden. 

    Der Aufruf einer Methode entspricht dem Schicken einer Meldung. Deshalb sprechen wir meist von Methodenaufruf anstelle von Meldung verschicken.

Klassen
Oft finden wir mehrere Fahrräder gleicher Art. Es gibt Moutainbikes, Citybikes, Rennräder, Tandems usw. All diese Fahrradtypen besitzen gemeinsame Zustandsmerkmale (aktueller Gang, Pedalenkadenz, zwei Räder) und gemeinsame Verhaltensmerkmale (Gang wechseln, bremsen). Fahrradhersteller nützen diesen Vorteil aus und stellen mehrere Fahrräder des gleichen Typs her. Es wäre höchst ineffizient für jedes individuelle Fahrrad einen neuen Typ zu erfinden. 

Wie der Fahrradhersteller können auch wir Vorteile aus der Tatsache von gemeinsamen Merkmalen nutzen und mehrere Objekte desselben Typs erzeugen. In der objektorientierten Welt sprechen wir jedoch nicht von Arten, sondern von Klassen (engl. classes). Eine Klasse ist ein Prototyp, welcher die gemeinsamen Attribute und Methoden aller Objekte dieser Klasse definiert. 
 

Mein Fahrrad (= Objekt) ist zum Beispiel ein Mountainbike und ist damit eine Instanz der Klasse Mountainbike, die wiederum vielleicht eine Instanz der Fahrradklasse ist..


 
 

Vorteil von Klassen
Klassen können mehrmals benützt werden. Fahrradhersteller verwenden immer wieder den gleichen "Bauplan" um viele Fahrräder herzustellen. Softwareentwickler benützen dieselbe Klasse um mehrere Objekte gleicher Art zu kreieren.
 

Vererbung
Als im letzten Jahrhundert das Fahrrad erfunden wurde, gab es nur einen Typ von Fahrrad. Später wurde das Urfahrrad weiterentwickelt und Damenfahrräder, Mountainbikes und Rennräder hergestellt. Dabei nahm man das bestehende Fahrrad und fügte neue Funktionalitäten wie eine Gangschaltung hinzu, verbesserte die Bremsen und den Sitz. Das Verhalten des Fahrrades änderte sich jedoch nicht. Auch heute noch muß man in die Pedalen treten um das Fahrrad zu bewegen, oder die Bremsen drücken, wenn man langsamer fahren möchte.

Eine ähnliche Entwicklungsmöglichkeit bietet OOP an. Wir können neue Klassen mit Hilfe anderer Klassen programmieren. Unser Fahrradbeispiel können wir wie folgt modellieren: Die Klasse Fahrrad ist unser Urfahrrad mit Eigenschaften und Verhalten die allen Fahrrädern gemeinsam sind. Danach erweitern wir die Klasse, fügen neue Eigenschaften hinzu und ändern bestehende ab. Somit erhalten wir unsere Mountainbike-, Citybike-, Rennräder- und Tandemklasse. Diese Klassen werden in OOP Unterklassen (engl. subclasses) von der Klasse Fahrrad genannt. Die ursprüngliche Fahrradklasse wird Oberklasse (engl. superclass) genannt.

Jede Unterklasse vererbt (engl. inherit) die Zustände in Form der Variablen von der Oberklasse. Moutainbikes, Citybikes, Rennräder und Tandems besitzen gemeinsame Zustandsmerkmale wie Farbe, Geschwindigkeit usw., welche sie von der Oberklasse Fahrrad geerbt haben. Unterklassen werden aber nicht durch die Zustände und das Verhalten der Oberklasse eingeschränkt. Unterklassen können Variablen und Methoden zu den geerbten Variablen und Methoden von der Oberklasse hinzufügen. Tandems, zum Beispiel, benötigen zwei Sitze und zwei Lenker. Unterklassen können sogar geerbte Methoden überschreiben (engl. override) und spezialisierte Implementationen zur Verfügung stellen. Tandems sind oft mit Trommelbremsen ausgestattet. Die Oberklasse Fahrrad vererbt eine Bremse, die durch unsere verbesserte Trommelbremse ausgetauscht wird.

Klassen sind nicht auf eine Vererbungsebene beschränkt. Die Klassenhierarchie kann beliebig gross werden. Methoden und Variablen werden vererbt und weitervererbt. Je weiter unten in der Hierarchie eine Klasse definiert ist, um so spezialisierter ist ihr Verhalten.
 
 

Begriffszusammenfassung

Ein Objekt ist ein allgemeiner Datentyp, der Daten mit Funktionen kombinieren und bearbeiten kann. Die Daten eines Objektes sind seine Eigenschaften . Funktionen, die diese Eigenschaften bearbeiten können, nennt man Methoden der Objekte. 
Eine Klasse ist eine Sammlung aller Eigenschaften und Methoden der Objekte dieser Klasse und legt fest, wie diese zu erzeugen sind. Eine Instanz einer Klasse ist ein anderes Wort für ein tatsächliches Objekt. Während Klassen eine abstrakte Darstellung eines Objekts sind, ist eine Instanz dessen konkrete Darstellung. Jede Klasse besteht im allgemeinen aus zwei Komponenten: Attribute und Eigenschaften. Attribute sind die Eigenschaften, durch die sich ein Objekt von anderen unterscheidet. Sie bestimmen Aussehen, Zustand und andere Qualitäten eines Objekts.
Attribute werden durch Variablen definiert. Sie können Sie sich als globale Variablen für das gesamte Objekt vorstellen. Da jede Instanz einer Klasse verschiedene Werte für ihre Variablen haben kann, nennt man jede Variable eine Instanzvariable. Instanzvariablen definieren die Attribute eines Objekts. Die Klasse definiert die Art des Attributs, und jede Instanz speichert einen eigenen Wert für das jeweilige Attribut. Jedes Attribut hat eine einzelne entsprechende Instanzvariable. Durch Änderung des Wertes einer Variablen ändert sich das Attribut des Objekts. Instanzvariablen können gesetzt werden, wenn ein Objekt erstellt wird und können sich nach Belieben bei der Ausführung des Programms ändern. Zusätzlich zu Instanzvariablen gibt es Klassenvariablen, die die Klasse selbst und alle ihre Instanzen betreffen. Im Gegensatz zu Instanzvariablen, deren Werte in der Instanz gespeichert werden, werden die Werte von Klassenvariablen direkt in der Klasse gespeichert. Die Eigenschaften einer Klasse bestimmen, was die Instanzen der Klasse tun, wenn sich ihr interner Zustand ändert oder wenn die Instanz von einer anderen Klasse oder einem Objekt aufgefordert wird, etwas zu tun. Die Eigenschaften bestimmen, was Objekte alles machen können und was man mit Objekten machen kann. Um das Verhalten eines Objekts zu definieren, erstellt man die Methoden.
Vererbung ist ein Mechanismus in der objektorientierten Programmierung, der bewirkt, daß alle Klassen in einer strikten Hierarchie angeordnet sind und etwas von ihren übergeordneten Klassen erben. Subclassing bedeutet das Erstellen einer neuen Klasse - einer sogenannten Subklasse, die von einer anderen Klasse in der Klassenhierarchie erbt. Übergeordnete Klassen, Klassen von denen geerbt wird, bezeichnet man als Superklasse.
 
 

Benutzer: gast • Besitzer: seminar • Zuletzt geändert am: