MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | OOP |
| 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 |