Thread Was ist ein Objekt: Suche erläuternde Definition (21 answers)
Opened by pktm at 2004-03-04 13:15

Strat
 2004-03-05 22:56
#80565 #80565
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ein neuer Versuch (dank Crian):

Ein Objekt ist ein Container, in dem Daten gespeichert werden können, und bietet zusaetzlich einen Zugriffsmechanismus (=Objektmethoden) auf diese Daten. Die Daten werden Objektattributwerte genannt. Die Container, in denen diese Daten gespeichert werden, nennt man Objektattribute. Um auf diese Attribute und Attributwerte zugreifen zu können, gibt es Methoden, die als Schnittstellen zu den Daten dienen.

Zusaetzlich gibt es noch Klassenmethoden, die nicht fuer ein bestimmtes Objekt aufgerufen werden, sondern die ein neues Objekt erzeugen (=Konstruktor) oder sich eventuell auf mehrere Objekte beziehen.
Diese Klassen- und Objektmethoden bilden zusammen einen Rahmen (=Klasse) fuer Objekte, und ein Objekt weiss stets, zu welcher Klasse es gehoert, sodass man z.B. auch mehrere Objekte von verschiedenen Klassen haben kann, die dieselben Methoden implementieren, und dadurch weiss die Programmiersprache, welche Methode welcher Klasse es ausfuehren muss (=Polymorphismus).

Warum das Ganze?

Kapselung von Daten und Zugriff: Wenn man Daten und den Zugriffsmechanismus auf die Daten kapseln kann, braucht man nicht zu wissen, wie ein Objekt Daten speichert, sondern kann über spezifizierte Schnittstellen (=Methoden) auf die Daten zugreifen. Wenn z.B die Daten ab sofort nicht mehr in einer Hashreferenz, sondern in einer Datei gespeichert werden, müssen nur die Methoden angepasst werden, aber die Schnittstellen zu den Daten bleiben gleich. Einem Programm kann es somit egal sein, wie was intern gespeichert ist, solange es genauso wie vorher (nämlich über die Objektmethoden) darauf zugegreifen kann. Durch diese groessere Abstraktion durch die klaren Schnittstellen wird es leichter, Code wiederzuverwenden.
Vererbung von Funktionalität: wenn die Funktionalität einer Klasse nicht mehr ausreicht und erweitert werden muß, kann man eine neue Klasse generieren, die die Funktionalität der alten Klasse erbt und erweitert oder überschreibt. Dies hat den Vorteil, daß die gesammte geerbte Funktionalität nicht nochmal gecoded werden muß, sondern nur die erweiterte oder überschriebene hinzugefuegt werden muss. Einen solchen Mechanismus nennt man Vererbung.


Objektorientierte Programmierung zahlt sich normalerweise erst ab größeren Mengen Code aus (sagen wir mal so ab 1000 Zeilen Code). Objektorientierte Programmierung macht auch ein Programm in der Regel ein klein wenig langsamer als mit prozeduraler Programmierung. Durch die bessere Kapselung des Codes wird jedoch die Entwicklungsgeschwindigkeit gesteigert, die Wartbarkeit und Wiederverwendbarkeit erhoeht. Und da die Entwicklungszeit meistens teurer ist als eine schnellere Hardware, rentiert sich OOP in der Regel schon.

ist es so besser?\n\n

<!--EDIT|Strat|1078521181-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Was ist ein Objekt: Suche erläuternde Definition