blob: 5146a7e7b4f086613ad105244c568deb9f340d17 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001OOP
2 BESCHREIBUNG:
3 OOP steht fuer "Object-Orientierte Programmierung":
4
5 Wenn du weisst, wie man in einer prozeduralen Sprache programmiert
6 (C, PASCAL, BASIC), dann hast du bereits viele der Faehigkeiten, die
7 noetig sind um effektiv in LPC zu Programmieren. Die Hauptfaehigkeit,
8 die du brauchen wirst, ist die Begabung deine Ideen in eine Reihe von
9 Schritten zu unterteilen, so dass der Computer diese fuer dich
10 ausfuehren kann.
11
12 LPC ist aber auch eine (imperative, strukturierte) objektorientierte
13 Sprache. OOP haelt dazu an, sich zuerst um die Daten zu kuemmern und
14 dann um die Methoden mit denen diese Daten manipuliert werden:
15 Ein Spieler ist zuerst einmal ein Haufen von Attributen und Punkten
16 und seinem Namen, wie auf diese eingewirkt werden kann wird danach
17 geklaert. Ein Spielerobjekt kommuniziert und kooperiert mit vielen
18 anderen Objekten hier.
19
20 Im Folgenden sind einige der Kriterien objektorientierter Programmierung
21 aufgefuehrt:
22
23 Klassen:
24 Eine Klasse beschreibt das Verhalten einer Gruppe gleichartiger
25 Objekte. Beispielsweise kann man Lebewesen als eine Klasse ansehen,
26 weil man alle Objekte in Lebewesen und nicht-Lebewesen einteilen
27 kann. Hat man einen konkretes Monster und einen konkreten Spieler in
28 einem Raum, dann sind dies Objekte (Instanzen). Man kann von einer
29 Menge gleichartiger Objekte sagen, dass sie zu ein- und derselben
30 Klasse gehoeren.
31
32 Abstraktion:
33 Jedes Objekt im System verkoerpert als abstraktes Modell einen
34 "Arbeiter", der Auftraege erledigen kann, seinen Zustand berichten
35 und aendern kann und mit den anderen Objekten im System kommunizieren
36 kann, ohne offen zu legen, wie diese seine Faehigkeiten implementiert
37 sind.
38 [So kann man einem Objekt den Auftrag Defend(1000, DT_FIRE, ...)
39 geben. In MG werden lebende Objekte diesen Auftrag durch Aenderung
40 ihres Zustandes - LP-Abzug oder Magiereaktion - erfuellen.]
41
42 Kapselung
43 Auch das "Verbergen von Information" genannt, sorgt K. dafuer, dass
44 Objekte den internen Zustand anderer Objekte nicht in unerwarteter
45 Weise aendern koennen; nur den eigenen Methoden eines Objektes soll
46 es erlaubt sein, auf den internen Zustand direkt zuzugreifen. Alle
47 Sorten von Objekten praesentieren nach aussen Schnittstellen (man
48 properties), die darueber bestimmen, wie andere Objekte mit ihnen
49 wechselwirken koennen.
50 [Siehe vor allem man properties]
51
52 Polymorphie
53 Zeiger zu Objekten koennen es mit sich bringen, dass bei der Auswahl
54 eines konkreten Objektes seine Klasse (sein Typ) nicht offensichtlich
55 ist. Trotzdem werden Nachrichten an so selektierte Objekte korrekt
56 der tatsaechlichen Klasse zugeordnet. Wenn diese Zuordnung erst zur
57 Laufzeit aufgeloest wird, dann wird dieses Verhalten Polymorphismus
58 (auch: spaete Bindung oder dynamische Bindung) genannt.
59 [In LPC ist dynamische Bindung der Standard. Ueberschreibt man also
60 in einem NPC die(), dann wird auf jeden Fall die neue Methode
61 aufgerufen, wenn der NPC aus do_damage() heraus in sich die() ruft.]
62
63 Vererbung
64 Organisiert und erleichtert Polymorphie, indem neue Objekte definiert
65 und erzeugt werden koennen, die Spezialisierungen schon existierender
66 Objekte sind. Solche neuen Objekte koennen das vorhandene Verhalten
67 uebernehmen und erweitern, ohne dass dieses Urverhalten neu
68 implementiert werden muss. Typischerweise wird das dadurch erreicht,
69 dass Objekte zu Klassen und zu Hierarchien von Klassen gruppiert
70 werden, in denen sich die Gemeinsamkeiten im Verhalten ausdruecken.
71 [Siehe man vererbung]
72
73 SIEHE AUCH:
74 objekte, inheritance, goodstyle
75
76 22. Maerz 2004 Gloinson