# Die Klasse UserData

Diese Klasse bildet die Grundlage zur Verwaltung individuell definierter Attribute für Bausteine und Transporteinheiten zur Experimentsteuerung. Innerhalb der Modellprogrammierung werden eigene von UserData abgeleitete Klassen mit allen benötigten Attributen (Signale, Markierungen, Bezeichner, etc.) und Methoden programmiert.

Die Klasse UserData verfügt selbst über keine vordefinierten Attribute, sondern stellt die Funktionalität für Zuweisung und Zugriff auf die selbstprogrammierte Klasse und deren Attribute zur Verfügung. Sie fungiert somit als Schnittstelle zwischen den programmierten Klassen und den zugehörigen Bausteinen oder Transporteinheiten.

Mittels der Funktion setBstUserData(..) bzw. setTEUserData(..) wird ein neu erzeugtes Objekt einem Baustein bzw. einer Transporteinheit zugewiesen. Der Zugriff erfolgt über die entsprechende Funktion BstUserData(..) bzw. TEUserData(..).

Während des Simulationslaufes ist es oft wünschenswert, den Zustand oder die Änderung von individuellen Attributen selbst definierter Klassen zu beobachten. Die Klasse UserData verfügt hierzu über zwei sog. UStrings (vgl. Dokumentation SoftShop) und die virtuellen Funktionen LabelString () und ParaString ().

// Beispiel einer selbst definieren Datenklasse innerhalb der Programmdatei class MeineDaten : public UserData { public: MeineDaten() : UserData() {}; int attribut1; unsigned attribut2; double attribut2; char* LabelString (); char* ParaString (); }; char* MeineDaten::LabelString () { ObjLabelString = ²Bezeichner1 Bezeichner2 Bezeichner3²; return ObjLabelString.str (); }; char* MeineDaten::ParaString () { char parastr[255]; sprintf (parastr, ²%i %i %5.2f², attribut1, attribut2, attribut3); ObjParaString = parastr; return ObjParaString.str (); };

Zur Darstellung von Attributen ist es notwendig, diese Funktionen innerhalb der selbst programmierten Klassen zu formulieren (Abb. 5). In der Funktion LabelString () werden die Namens-Bezeichner der Attribute im „ObjLabelString" definiert, dieser zurückgegeben. In der Funktion ParaString () werden nun analog die entsprechenden Ausgaben der Attribute im „ObjParaString" plaziert, dieser ebenfalls zurückgegeben. Die Reihenfolge in beiden UStrings muß hierbei übereinstimmen!

Anmerkung: Innerhalb der Programmierung erzeugte Objekte von UserData abgeleiteten Klassen müssen nicht explizit in der Funktion exit_prog() entfernt werden. SIMFLEX/3D ruft im Zusammenhang mit den Bausteinen und Transporteinheiten den entsprechenden Destruktor automatisch mit auf.