class StorableObject

Abstrakte Superklasse aller dynamischen Objekte

Inheritance:


Public

Ausgabe auf dem Terminal
void printOn(ostream& = cout)
Ausgabe der Beschreibung auf einen Stream
virtual String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal
Objekte anlegen und zerstören
virtual StorableObject* copy()
Legt eine Kopie des Objekts auf dem Heap an und liefert einen Zeiger darauf zurück
virtual ~StorableObject()
Der virtuelle Destruktor

Documentation

Abstrakte Superklasse aller dynamischen Objekte. Dynamische Objekte werden zum Datenaustausch zwischen den und innerhalb der Hauptkomponenten (Deliberator, WorldModel, Sensors, Effectors) eingesetzt.

Der Name StorableObject deutet auf eine wesentliche Eigenschaft der Klasse hin: StorableObjects haben einen virtuellen Destruktor und einen "virtuellen Konstruktor". Genauer gesagt, eine virtuelle Methode copy(), die eine Kopie des Objekts auf dem Heap anlegt und einen Zeiger darauf zurückliefert. Da der Name copy bei allen abgeleiteten Klassen gleich ist (im Gegensatz zum Copy-Konstruktor), können in einem Array Zeiger auf Objekte verschiedener Klassen verwaltet werden.

In StorableObject ist copy() eine pure abstract function, d.h. sie muß in der abgeleiteten Klasse überschrieben werden, damit Instanzen der Klasse erzeugt werden können.

Ein StorableObject kann ausserdem einen Beschreibungsstring von sich erzeugen und sich auf einen Stream ausgeben. Zur Erzeugung des Strings dient die Funktion toString(), die ebenfalls pure abstract ist.

Quelltext

[Header | [Implementierung]

CVS Informationen zum Interface

  **************************************************
  *
  * Aktueller Stand
  *
  *   $RCSfile: StorableObject.h,v $
  *   $Revision: 1.8 $
  *   $Date: 1998/08/14 13:21:21 $
  *   $Author: myritz $ 
  *
  **************************************************
  
Objekte anlegen und zerstören

virtual StorableObject* copy()
Legt eine Kopie des Objekts auf dem Heap an und liefert einen Zeiger darauf zurück.

Copy ist eine "pure virtual function" (daher das seltsame = 0 im Code), die also von allen Nachkommen ueberschrieben werden muss. Damit sie richtig funktioniert, muß sie von JEDER abgeleiteten Klasse neu überschrieben werden. Hier ein Beispiel für die Klasse Foo:

    Foo.h:
    class Foo : public StorableObject {
      public:
        ...
        virtual StorableObject* copy() const;
        ...
    }
    Foo.c:
    StorableObject* Foo::copy() const {
      return new Foo( *this );
    }

   
Parameters:
Ein - Zeiger vom Typ (StorableObject *) auf den neu allozierten Speicher.

virtual ~StorableObject()
Der virtuelle Destruktor

Ausgabe auf dem Terminal

void printOn(ostream& = cout)
Ausgabe der Beschreibung auf einen Stream. Standardmäßig wird auf stdout ausgegeben. Der auszugebende String wird von der Methode toString() erzeugt.

Am einfachsten kann man das Objekt durch Umleitung nach cout ausgeben.

virtual String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal. Der String sollte kein abschließsendes newline enthalten. Die Ausgabe sollte in () eingschlossen sein und als erstes den Klassennamen enthalten.

Die Methode muß in der abgeleiteten Klasse überschrieben werden.


Direct child classes:
ViewPoint
Situation
Reliability
StableObject
Message
BodyInfos
Plan
Constraint
Action
Vector
String

alphabetic index hierarchy of classes


Hauptseite

Einleitung | Architektur | Dynamische Zusammenhänge | Referenzhandbuch | FAQ | Anhang A | Anhang B

generated by doc++