Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc//concepts/oopOOP
BESCHREIBUNG:
OOP steht fuer "Object-Orientierte Programmierung":
Wenn du weisst, wie man in einer prozeduralen Sprache programmiert
(C, PASCAL, BASIC), dann hast du bereits viele der Faehigkeiten, die
noetig sind um effektiv in LPC zu Programmieren. Die Hauptfaehigkeit,
die du brauchen wirst, ist die Begabung deine Ideen in eine Reihe von
Schritten zu unterteilen, so dass der Computer diese fuer dich
ausfuehren kann.
LPC ist aber auch eine (imperative, strukturierte) objektorientierte
Sprache. OOP haelt dazu an, sich zuerst um die Daten zu kuemmern und
dann um die Methoden mit denen diese Daten manipuliert werden:
Ein Spieler ist zuerst einmal ein Haufen von Attributen und Punkten
und seinem Namen, wie auf diese eingewirkt werden kann wird danach
geklaert. Ein Spielerobjekt kommuniziert und kooperiert mit vielen
anderen Objekten hier.
Im Folgenden sind einige der Kriterien objektorientierter Programmierung
aufgefuehrt:
Klassen:
Eine Klasse beschreibt das Verhalten einer Gruppe gleichartiger
Objekte. Beispielsweise kann man Lebewesen als eine Klasse ansehen,
weil man alle Objekte in Lebewesen und nicht-Lebewesen einteilen
kann. Hat man einen konkretes Monster und einen konkreten Spieler in
einem Raum, dann sind dies Objekte (Instanzen). Man kann von einer
Menge gleichartiger Objekte sagen, dass sie zu ein- und derselben
Klasse gehoeren.
Abstraktion:
Jedes Objekt im System verkoerpert als abstraktes Modell einen
"Arbeiter", der Auftraege erledigen kann, seinen Zustand berichten
und aendern kann und mit den anderen Objekten im System kommunizieren
kann, ohne offen zu legen, wie diese seine Faehigkeiten implementiert
sind.
[So kann man einem Objekt den Auftrag Defend(1000, DT_FIRE, ...)
geben. In MG werden lebende Objekte diesen Auftrag durch Aenderung
ihres Zustandes - LP-Abzug oder Magiereaktion - erfuellen.]
Kapselung
Auch das "Verbergen von Information" genannt, sorgt K. dafuer, dass
Objekte den internen Zustand anderer Objekte nicht in unerwarteter
Weise aendern koennen; nur den eigenen Methoden eines Objektes soll
es erlaubt sein, auf den internen Zustand direkt zuzugreifen. Alle
Sorten von Objekten praesentieren nach aussen Schnittstellen (man
properties), die darueber bestimmen, wie andere Objekte mit ihnen
wechselwirken koennen.
[Siehe vor allem man properties]
Polymorphie
Zeiger zu Objekten koennen es mit sich bringen, dass bei der Auswahl
eines konkreten Objektes seine Klasse (sein Typ) nicht offensichtlich
ist. Trotzdem werden Nachrichten an so selektierte Objekte korrekt
der tatsaechlichen Klasse zugeordnet. Wenn diese Zuordnung erst zur
Laufzeit aufgeloest wird, dann wird dieses Verhalten Polymorphismus
(auch: spaete Bindung oder dynamische Bindung) genannt.
[In LPC ist dynamische Bindung der Standard. Ueberschreibt man also
in einem NPC die(), dann wird auf jeden Fall die neue Methode
aufgerufen, wenn der NPC aus do_damage() heraus in sich die() ruft.]
Vererbung
Organisiert und erleichtert Polymorphie, indem neue Objekte definiert
und erzeugt werden koennen, die Spezialisierungen schon existierender
Objekte sind. Solche neuen Objekte koennen das vorhandene Verhalten
uebernehmen und erweitern, ohne dass dieses Urverhalten neu
implementiert werden muss. Typischerweise wird das dadurch erreicht,
dass Objekte zu Klassen und zu Hierarchien von Klassen gruppiert
werden, in denen sich die Gemeinsamkeiten im Verhalten ausdruecken.
[Siehe man vererbung]
SIEHE AUCH:
objekte, inheritance, goodstyle
22. Maerz 2004 Gloinson
zurück zur Übersicht