Objekt (OOP): Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
=Definition=
=Definition=
'''Objekte''' sind reale oder abstrakte "Dinge", die sich durch folgende
Wie auch in der Mathematik üblich (z.B. bei der Definition des Begriffes [[Punkt]]),  wird der Begriff '''Objekt''' selbst nicht definiert, sondern es werden nur Merkmale festgelegt, die '''Objekte''' erfüllen müssen:
Eigenschaften auszeichnen:
 
*Ein Objekt existiert für eine gewisse Zeitspanne, d.h., es wird erzeugt und wieder zerstört. Dazu dienen so genannte [[Konstruktor|Konstruktoren]] und [[Destruktor|Destruktoren]].
*Ein Objekt existiert für eine gewisse Zeitspanne, d.h., es wird erzeugt und wieder zerstört. Dazu dienen so genannte [[Konstruktor|Konstruktoren]] und [[Destruktor|Destruktoren]].


*Ein Objekt ''o'' hat einen unveränderlichen, systemweit eindeutigen und nicht wiederverwendbaren [[Objektidentifikator]] (OID) ''oid(o)''.
*Ein Objekt ''o'' hat einen unveränderlichen, systemweit eindeutigen und nicht wiederverwendbaren Objekt-[[Identifikator]] (OID) ''oid(o)'', mit dem es während seiner Lebenszeit (oder sogar darüber hinaus) jederzeit eindeutig identifiziert werden kann.


*Neben dem Objektidentifikator kann ein Objekt noch einen oder mehrere [[Objektname|Objektnamen]] haben. Diese sind im Gegensatz zum OID veränderlich, wiederverwendbar und nicht notwendigerweise systemweit eindeutig, dafür aber "verständlich".
*Neben dem Identifikator kann es für ein Objekt noch einen oder mehrere Objekt-[[Name|Namen]] geben. Diese sind im Gegensatz zum OID veränderlich, wiederverwendbar und nicht notwendigerweise systemweit eindeutig. Mit Hilfe eines Namens kann ein Objekt nur unter bestimmten Bedingungen zu bestimmten Zeiten eindeutig identifiziert werden.


*Ein Objekt ''o'' hat zu jedem Zeitpunkt ''t'' einen eindeutigen [[Zustand]] ''state(o,t)'', welcher die "Eigenschaften" des Objektes zum Zeitpunkt ''t'' beschreibt.
*Ein Objekt ''o'' hat zu jedem Zeitpunkt ''t'' einen eindeutigen Objekt-[[Zustand]] ''state(o,t)'', welcher die "Eigenschaften" des Objektes zum Zeitpunkt ''t'' beschreibt.


*Für ein Objekt ''o'' gibt es zu jedem Zeitpunkt ''t'' einen eindeutigen Satz an [[öffentlich|öffentlichen]]  [[Methode|Methoden]] ''methods(o,t)'', mit denen Zustandseigenschften des Objektes ''o'' erfragt und manipuliert werden können. Für jede Methode gibt es eine Methoden[[deklaration]], in der festgelgt ist, welche Ein- und Ausgabe[[parameter]] die Methode hat.
*Für ein Objekt ''o'' gibt es zu jedem Zeitpunkt ''t'' einen eindeutigen Satz an [[öffentlich|öffentlichen]]  [[Methode|Methoden]] ''methods(o,t)'', mit denen Zustandseigenschaften des Objektes ''o'' erfragt und manipuliert werden können. Für jede Methode gibt es eine Methoden-[[Deklaration]], in der festgelgt ist, welche Ein- und Ausgabe-[[Parameter]] die Methode besitzt.


*Der Zustand eines Objektes ist [[gekapselt]] ([[privat]]), d.h., er kann nicht direkt, sondern ausschließlich mit Hilfe öffentlich zugänglichen Methoden abgefragt und verändert werden, oder er ändert sich selbstständig.
*Der Zustand eines Objektes ist [[gekapselt]] ([[privat]]), d.h., er kann nicht direkt, sondern ausschließlich mit Hilfe öffentlich zugänglichen Methoden abgefragt und verändert werden, oder er ändert sich selbstständig.


*Mit Hilfe von [[Integritätsbedingung|Integritätsbedingungen]] können Beschränkungen für den Zustand und/oder die Methoden definiert werden, die zu bestimmten Zeitpunkten oder für die gesamte Lebensdauer des Objektes gültig sind.
*Mit Hilfe von [[Integritätsbedingung|Integritätsbedingungen]] können Beschränkungen für den Zustand und/oder die Methoden definiert werden, die zu bestimmten Zeitpunkten oder für die gesamte Lebensdauer des Objektes gültig sind. Die Methoden-Deklarationen können als spezielle Integritätsabedingungen aufgefasst werden, da sie festlegen, wie eine Methode korrekt aufgerufen wird und von welcher Art die Ergebnisse eines Aufrufes sind.


*Die Menge aller Methodendeklarationen zusammen mit der Menge aller Integritätsbedingungen wird [[Objekt-Schnittstelle]] oder [[Objekt-Interface]] genannt.
*Die Menge aller Integritätsbedingungen (einschließlich der Methoden-Deklarationen) wird Objekt-[[Schnittstelle]] oder Objekt-[[Interface]] genannt.


*Für jedes Objekt gibt es i.Allg. außerdem mindestens eine [[Objekt-Implementierung]], die die Funktionalität der Objekt-Methoden realisiert. Die Objekt-Implementierung definiert den Objekt-Zustand, hat Zugriff auf diesen Zustand und kann weitere nicht-öffentliche, d.h. private Methoden einführen, auf die nur die Objekt-Implementierung selbst Zugriff hat.
*Für jedes Objekt gibt es i.Allg. außerdem mindestens eine Objekt-[[Implementierung]], die die Funktionalität der Methoden realisiert. Die Implementierung definiert den Zustand und implementiert die öffentlichen Methoden. Sie kann dabei direkt auf den zuvor definierten Zustand zugreifen. Sie kann überdies weitere nicht-öffentliche, d.h. private Methoden einführen, auf die nur die Implementierung selbst Zugriff hat. Eine Implementierung muss dafür Sorge tragen, dass alle Integritäsbedingungen zu jedem Zeitpunkt erfüllt sind (sonst ist sie fehlerhaft).


=Bedeutung von "systemweit"=
=Bedeutung von "systemweit"=
Der in der Definition verwendete Beriff ''systemweit'' ist nicht eindeutig definiert, sondern hängt von der jeweiligen objektorientierten Systemumgabung ab. Bei einem einfachen Programmlauf eines [[JAVA]]-Programms bedeutet ''systemweit''  
Der in der Definition verwendete Beriff ''systemweit'' ist nicht eindeutig definiert, sondern hängt von der jeweiligen objektorientierten Systemumgebung ab. Bei einem einfachen Programmlauf eines [[JAVA]]-Programms bedeutet ''systemweit''  
beispielsweise "zu jedem Zeitpunkt während des Programmlaufs innerhalb der [[Laufzeit]]umgebung". Für ein verteiltes
beispielsweise für ein Objekt "während der Lebensdauer des Objekts (die endet spätestens mit dem Programmende) innerhalb der [[Laufzeit]]umgebung des Programms". Für ein verteiltes
objektorientiertes Datenbanksystem bedeutet ''systemweit'' dagegen "über alle Zeit und alle beteiligten Datenbanken hinweg".
objektorientiertes Datenbanksystem bedeutet ''systemweit'' dagegen für ein Objekt "ab der Erzeugung des Objektes  über alle beteiligten Datenbanken hinweg solange die zugehörigen Datenbanken existieren".


=Zustandsvariablen=  
=Zustandsvariablen=  

Version vom 25. Juli 2005, 15:52 Uhr

Definition

Wie auch in der Mathematik üblich (z.B. bei der Definition des Begriffes Punkt), wird der Begriff Objekt selbst nicht definiert, sondern es werden nur Merkmale festgelegt, die Objekte erfüllen müssen:

  • Ein Objekt existiert für eine gewisse Zeitspanne, d.h., es wird erzeugt und wieder zerstört. Dazu dienen so genannte Konstruktoren und Destruktoren.
  • Ein Objekt o hat einen unveränderlichen, systemweit eindeutigen und nicht wiederverwendbaren Objekt-Identifikator (OID) oid(o), mit dem es während seiner Lebenszeit (oder sogar darüber hinaus) jederzeit eindeutig identifiziert werden kann.
  • Neben dem Identifikator kann es für ein Objekt noch einen oder mehrere Objekt-Namen geben. Diese sind im Gegensatz zum OID veränderlich, wiederverwendbar und nicht notwendigerweise systemweit eindeutig. Mit Hilfe eines Namens kann ein Objekt nur unter bestimmten Bedingungen zu bestimmten Zeiten eindeutig identifiziert werden.
  • Ein Objekt o hat zu jedem Zeitpunkt t einen eindeutigen Objekt-Zustand state(o,t), welcher die "Eigenschaften" des Objektes zum Zeitpunkt t beschreibt.
  • Für ein Objekt o gibt es zu jedem Zeitpunkt t einen eindeutigen Satz an öffentlichen Methoden methods(o,t), mit denen Zustandseigenschaften des Objektes o erfragt und manipuliert werden können. Für jede Methode gibt es eine Methoden-Deklaration, in der festgelgt ist, welche Ein- und Ausgabe-Parameter die Methode besitzt.
  • Der Zustand eines Objektes ist gekapselt (privat), d.h., er kann nicht direkt, sondern ausschließlich mit Hilfe öffentlich zugänglichen Methoden abgefragt und verändert werden, oder er ändert sich selbstständig.
  • Mit Hilfe von Integritätsbedingungen können Beschränkungen für den Zustand und/oder die Methoden definiert werden, die zu bestimmten Zeitpunkten oder für die gesamte Lebensdauer des Objektes gültig sind. Die Methoden-Deklarationen können als spezielle Integritätsabedingungen aufgefasst werden, da sie festlegen, wie eine Methode korrekt aufgerufen wird und von welcher Art die Ergebnisse eines Aufrufes sind.
  • Die Menge aller Integritätsbedingungen (einschließlich der Methoden-Deklarationen) wird Objekt-Schnittstelle oder Objekt-Interface genannt.
  • Für jedes Objekt gibt es i.Allg. außerdem mindestens eine Objekt-Implementierung, die die Funktionalität der Methoden realisiert. Die Implementierung definiert den Zustand und implementiert die öffentlichen Methoden. Sie kann dabei direkt auf den zuvor definierten Zustand zugreifen. Sie kann überdies weitere nicht-öffentliche, d.h. private Methoden einführen, auf die nur die Implementierung selbst Zugriff hat. Eine Implementierung muss dafür Sorge tragen, dass alle Integritäsbedingungen zu jedem Zeitpunkt erfüllt sind (sonst ist sie fehlerhaft).

Bedeutung von "systemweit"

Der in der Definition verwendete Beriff systemweit ist nicht eindeutig definiert, sondern hängt von der jeweiligen objektorientierten Systemumgebung ab. Bei einem einfachen Programmlauf eines JAVA-Programms bedeutet systemweit beispielsweise für ein Objekt "während der Lebensdauer des Objekts (die endet spätestens mit dem Programmende) innerhalb der Laufzeitumgebung des Programms". Für ein verteiltes objektorientiertes Datenbanksystem bedeutet systemweit dagegen für ein Objekt "ab der Erzeugung des Objektes über alle beteiligten Datenbanken hinweg solange die zugehörigen Datenbanken existieren".

Zustandsvariablen

Die meisten Objekte speichern ihren Zustand in so genannten Zustandsvariablen. Das sind Variablen, die dem Objekt zugeordnet sind und auf die nur die Methoden des Objektes zugreifen können.

Anfrage- und Modifikationsmethoden

Methoden, die Informationen über einen Objektzustand als Ergebnis liefern, heißen Anfragemethoden. Sie entsprechen den Funktionen in prozeduralen oder | funktionalen Programmierspachen.

Methoden, die den Objektzustand verändern können, werden Modifikationsmethoden genannt. Sie entsprechen den Prozeduren in prozeduralen Programmierspachen.

In der "reinen objektorientierten Lehre" gibt es keine Methoden, die gleichzeitig einen Objektzustand ändern und ein Ergebnis liefern können. In der Praxis gibt es dies dagegen schon, genaus, wie in den meisten anderen Programmiersprachen gar nicht oder nicht streng zwischen "Funktion" und "Prozedur" unterschieden wird. .

Skripte

Eine Sammlung mehrerer Methoden und Zustandsvariablen wird in den Autorensystemen normalerweise Skript genannt. Skripte werden manchmal auch -- gerade in Autorensystemen -- als eigenständige Objekte aufgefasst.

Siehe auch

Wikipedia: Objekt