.. Morgengrauen-Mudlib - Ueber Properties

Properties
==========

Properties sind im MG Eigenschaften eines Objektes, welche von (in der Regel)
von aussen gesetzt werden koennen (im Gegensatz zu Variablen innerhalb von
Objekten).

BESCHREIBUNG:
-------------

Im Gegensatz zu Variablen innerhalb eines Objektes, kann man Properties
von aussen veraendern, ohne eine besondere Funktion geschrieben zu haben.

Das zugrundeliegende Prinzip
++++++++++++++++++++++++++++
   Das grundlegende Konzept der MUDlib ist, dass wichtige, objektbezogene
   Informationen in den sogenannnten Properties gespeichert werden (engl.
   property -- Eigenschaft, Eigentum).
   Diese Informationen koennen einfache Werte, wie z.B. Zahlen, Zeichen oder
   Objekte, aber auch kompliziertere Strukturen sein.
   Jedes Objekt kann beliebig viele solcher Properties besitzen und deren
   Namensgebung ist nicht nur auf die von der MUDlib bereitgestellten
   Standardproperties begrenzt. Das heisst, das fuer eigene Anwendungen die
   Menge der Properties fuer ein Objekt beliebig erweitert werden kann.
   Damit sind auch schon die beiden Hauptmerkmale einer Property ange-
   sprochen:

   #. ein Name oder Kennung und
   #. ein Wert, der durch den Namen repraesentiert wird.

  Das reine Verwalten einer Property mit Namen und Wert ist aber nicht sehr
  sinnvoll und so gehoeren zu jeder Property noch zwei weitere wichtige
  Dinge. Zu jeder Property wurden jeweils zwei Operationen eingefuehrt,
  welche den uebergebenen Wert vor der Speicherung oder Abfrage bearbeiten.

  Zusammenfassend laesst sich das Konzept der Property in folgendem Schema
  darstellen::

               +-------------------------------------------+
               | Property                                  |
               +-------------------------------------------+
               | privater Datenbereich (Property Werte)    |
               +-------------------------------------------+
               | Direktzugriff auf den Datenbereich        |
               +-------------------------------------+     |
               |     ^       Methoden       v        | ^ v |
               |   Setzen       |        Abfragen    |     |
               +-------------------------------------+-----+
                     ^                      |
                     |                      V
                  SetProp()             QueryProp()


  Aus dem Schema laesst sich Folgendes erkennen

  * beim Setzen und Abfragen wird der Wert einer Methode uebergeben, die
    den Wert zurueckgibt oder ggf. die Aenderungen vornimmt
  * ein direkter Zugriff auf den Wert der ist ebenfalls moeglich, sollte
    aber nicht der Normalfall sein, da die Methoden Nebeneffekte erzeugen
  * in bestimmten Faellen kann man den aeusserlich aendernden Zugriff
    vollkommen unterbinden (NOSETMETHOD, PROTECT)
    (VORSICHT bei mappings/arrays, diese werden bei QueryProp()
    als Referenz zurueckgegeben, sind also so aenderbar)

Implementation
++++++++++++++
   Die Klasse /std/thing/properties.c stellt folgende Funktionen fuer die
   Behandlung von Properties bereit:

   * Normaler Zugriff

     * ``mixed SetProp(<name>, <wert>)``
       setzt den Wert von <name> auf <wert>
     * ``mixed QueryProp(<name>)``
       gibt den Wert von <name> zurueck

   * Direkter Zugriff

     * ``mixed Set(<name>, <wert>, <interpretation>)``
       wird genutzt, um eines der folgenden zu setzen:

        * den normalen Wert (aber fast immer besser: :doc:`/lfun/SetProp` verwenden!)
        * eine Query- oder Setmethode
        * ein Flag/Modus: Speicherstatus/Zugriffsschutz

     * ``mixed Query(<name>, <interpretation>)``
       fragt fuer <name> einen <wert> ab

       * den normalen Wert (aber fast immer besser: :doc:`/lfun/QueryProp` verwenden!)
       * die Closure der Query- oder Setmethode
       * den Modus der Property

Besonderheiten/Eingebaute Properties
++++++++++++++++++++++++++++++++++++
   Existiert zu einer Property eine Funktion mit dem selben Namen und einem
   ``_set_`` bzw ``_query_`` davor, so wird nicht auf die das Property-Mapping
   zugegriffen, sondern es werden die Argumente an diese Funktion uebergeben
   und der Rueckgabewert dieser Funktion zurueckgegeben.

   * Vorteile

      * so kann man Daten, die schnell verfuegbar sein muessen,	(bei denen
        also Effizienz gegen SetProp/QueryProp spricht) trotzdem nach aussen
        einheitlich zugreifbar machen

   * Nachteile

      * nicht wirklich sauber
      * Speichern muss man selbst vornehmen
      * Set/Query gehen wie auch bei Methoden an _set_*/_query_* vorbei
      * dieses Verhalten sollte der Mudlib vorbehalten bleiben, fuer eigene
        Prueffunktionen (wird etwas gesetzt/abgefragt) bzw. Aenderungen
        sollte man Methoden (F_SET_METHOD/F_QUERY_METHOD) benutzen

SIEHE AUCH:
-----------

* :doc:`/lfun/SetProp`, :doc:`/lfun/QueryProp`, :doc:`/lfun/Set`,
  :doc:`/lfun/Query`,
* :doc:`/lfun/SetProperties`, :doc:`/lfun/QueryProperties`
* objekte, effizienz, closures


Gesamtverzeichnis der dokumentierten Properties:
------------------------------------------------
.. toctree::
   :maxdepth: 1

   props-liste
   props-gilden
   props-obsolet
