Zum Inhalt springen

„Objektorientierung“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Keine Bearbeitungszusammenfassung
Zeile 41: Zeile 41:
Eine besondere Rolle spielen Methoden für die [[Kapselung|Kapselung]]. Spezielle Methoden zur Erzeugung bzw. "Zerstörung" von Objekten heißen [[Konstruktoren und Destruktoren]].
Eine besondere Rolle spielen Methoden für die [[Kapselung|Kapselung]]. Spezielle Methoden zur Erzeugung bzw. "Zerstörung" von Objekten heißen [[Konstruktoren und Destruktoren]].
<!-- Methoden können unterschiedliche Zugreifbarkeit (öffentlich, privat) haben. -->
<!-- Methoden können unterschiedliche Zugreifbarkeit (öffentlich, privat) haben. -->
=== Eigenschaften ===

Die Daten in den Objekten und den Klassen bezeichnet man als ''Eigenschaften''.
<!-- Manchmal wird zwischen Objekt- und Klassenmethoden nicht unterschieden. -->


=== Attribute ===
=== Attribute ===


Objekte (Hosen, Jacken, Pullover, ...) besitzen verschiedene Eigenschaften (Farbe, Größe, Material, ...). Diese Eigenschaften eines Objekts heißen ''Attribute''.
Objekte (Hosen, Jacken, Pullover, ...) besitzen verschiedene Eigenschaften (Farbe, Größe, Material, ...). Diese Eigenschaften eines Objekts heißen ''Attribute''.

=== Eigenschaften ===

Die Daten in den Objekten und den Klassen bezeichnet man als ''Eigenschaften''.
<!-- Manchmal wird zwischen Objekt- und Klassenmethoden nicht unterschieden. -->


== Polymorphie ==
== Polymorphie ==

Version vom 3. August 2006, 11:00 Uhr

Die Objektorientierung ist eine Ausprägung der strukturierten Programmierung. Objekte werden mit Daten und den darauf arbeitenden Methoden als Einheiten aufgefasst. Objekte können untereinander über Nachrichten kommunizieren, sind aber intern völlig unabhängig von anderen Objekten. Wenn ein solches Objekt einem anderen Objekt eine Nachricht übergeben sollte, führt dieses Objekt den betreffenden Vorgang aus und meldet dem absendenden Objekt das Ergebnis. Im Unterschied dazu werden beim so genannten prozeduralen Paradigma die Daten von den darauf arbeitenden Routinen getrennt in separaten Strukturen für Daten oder auch Befehlen gehalten.

Grundlegende Begriffe

Im Folgenden werden wichtige Begriffe der objektorientierten Programmierung kurz umrissen. Für nähere Details sei auf die jeweiligen Einzelabschnitte und -artikel verwiesen.

Die einzelnen Bausteine, aus denen ein objektorientiertes Programm während seiner Abarbeitung besteht, werden als Objekte bezeichnet. Die Konzeption dieser Objekte erfolgt dabei in der Regel auf Basis der folgenden Paradigmen:

Klasse
Die Struktur eines Objekts wird durch die Attribute (auch Eigenschaften) seiner Klassendefinition festgelegt. Das Verhalten des Objekts wird von den Methoden der Klasse bestimmt. Klassen können von anderen Klassen abgeleitet werden (Vererbung). Dabei erbt die Klasse die Datenstruktur (Attribute) und die Methoden von der vererbenden Klasse (Basisklasse).
Abstraktion
Jedes Objekt im System kann als ein abstraktes Modell eines Akteurs betrachtet werden, der Aufträge erledigen, seinen Zustand berichten und ändern und mit den anderen Objekten im System kommunizieren kann, ohne offen legen zu müssen, wie diese Fähigkeiten implementiert sind (vgl. abstrakter Datentyp (ADT)).
Datenkapselung
Als Datenkapselung bezeichnet man in der Programmierung das Verbergen von Implementierungsdetails. Der direkte Zugriff auf die interne Datenstruktur wird unterbunden und erfolgt statt dessen über definierte Schnittstellen. Objekte können den internen Zustand anderer Objekte nicht in unerwarteter Weise lesen oder ändern. Ein Objekt hat eine Schnittstelle, die darüber bestimmt, auf welche Weise mit dem Objekt interagiert werden kann. Dies verhindert das Umgehen von Invarianten des Programms.
Polymorphie
Verschiedene Objekte können auf die gleiche Nachricht unterschiedlich reagieren. Wird die Zuordnung einer Nachricht zur Reaktion auf die Nachricht erst zur Laufzeit aufgelöst, dann wird dies auch späte Bindung genannt.
Feedback
Verschiedene Objekte kommunizieren über ein Nachricht-Antwort-Mechanismus, der zu Veränderungen in den Objekten führt und neue Nachrichtenaufrufe erzeugt. Dafür steht die Kopplung als Index für den Grad des Feedback.
Vererbung
Vererbung heißt vereinfacht, dass eine abgeleitete Klasse die Methoden und Objekte der Basisklasse ebenfalls besitzt, also „erbt“. Somit kann die abgeleitete Klasse auch darauf zugreifen. Neue Arten von Objekten können auf der Basis bereits vorhandener Objekt-Definitionen festgelegt werden. Es können neue Bestandteile hinzugenommen werden oder vorhandene überlagert werden. Wird keine Vererbung zugelassen, so spricht man zur Unterscheidung oft auch von objektbasierter Programmierung.

Klassen

Hauptartikel: Klasse

Zur besseren Verwaltung gleichartiger Objekte bedienen sich die meisten Programmiersprachen des Konzeptes der Klasse. Klassen sind Vorlagen, aus denen Objekte zur Laufzeit erzeugt werden (Instanzen). Im Programm werden dann nicht einzelne Objekte, sondern eine Klasse gleichartiger Objekte definiert.

Man kann sich die Erzeugung von Objekten aus einer Klasse vorstellen wie das Fertigen von Autos aus dem Konstruktionsplan eines bestimmten Fahrzeugtyps. Klassen sind die Konstruktionspläne für Objekte.

Die Klasse entspricht in etwa einem komplexen Datentyp wie in der prozeduralen Programmierung, geht aber darüber hinaus: Sie legt nicht nur die Datentypen fest, aus denen die mit Hilfe der Klassen erzeugten Objekte bestehen, sie definiert zudem die Algorithmen, die auf diesen Daten operieren. Während also zur Laufzeit eines Programmes einzelne Objekte miteinander interagieren, wird das Grundmuster dieser Interaktion durch die Definition der einzelnen Klassen festgelegt.

Beispiel:

Die Klasse Auto legt fest, dass das Auto vier Reifen, fünf Türen, einen Motor und fünf Sitze hat.

Das Objekt „Automarke1“ hat schließlich vier Reifen mit dem Durchmesser 60 cm und der Breite 20 cm, fünf rote Türen, einen Motor mit 150 kW und fünf Ledersitze. Ein weiteres Objekt „Automarke2“ hat vier Reifen mit dem Durchmesser 40 cm und der Breite 15 cm, fünf blaue Türen ...

Beide Objekte sind unterschiedlich, gehören aber zu der gemeinsamen Klasse Auto.

Methoden

Die einer Klasse von Objekten zugeordneten Algorithmen bezeichnet man auch als Methoden.

Häufig wird der Begriff Methode synonym zu Funktion oder Prozedur gebraucht, obwohl die Funktion oder Prozedur eher als Implementierung einer Methode zu betrachten ist. Im täglichen Sprachgebrauch sagt man auch "Objekt A ruft Methode m von Objekt B auf."

Eine besondere Rolle spielen Methoden für die Kapselung. Spezielle Methoden zur Erzeugung bzw. "Zerstörung" von Objekten heißen Konstruktoren und Destruktoren.

Attribute

Objekte (Hosen, Jacken, Pullover, ...) besitzen verschiedene Eigenschaften (Farbe, Größe, Material, ...). Diese Eigenschaften eines Objekts heißen Attribute.

Eigenschaften

Die Daten in den Objekten und den Klassen bezeichnet man als Eigenschaften.

Polymorphie

Hauptartikel: Polymorphie (Programmierung)

Unter bestimmten Voraussetzungen können Algorithmen, die auf den Schnittstellen eines bestimmten Objekttyps operieren, auch mit davon abgeleiteten Objekten zusammenarbeiten.

Geschieht dies so, dass durch Vererbung überschriebene Methoden an Stelle der Methoden des vererbenden Objektes ausgeführt werden, dann spricht man von Polymorphie.

Bezeichnungen

Die Begriffe der objektorientierten Programmierung haben teilweise unterschiedliche Namen. Folgende Bezeichnungen werden synonym verwendet:

Bezeichnungen in der objektorientierten Programmierung
Superklasse = Basisklasse = Oberklasse
Subklasse = abgeleitete Klasse = Unterklasse
Methode = Elementfunktion = Memberfunktion
Attribut = Datenelement = Member
(aus einer Klasse erzeugtes) Objekt = Exemplar = Instanz

Siehe auch