16.08.2013 Aufrufe

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

168 KAPITEL 7. OBJEKTORIENTIERTE MODELLE<br />

Sequence<br />

...<br />

...<br />

SequenceValue<br />

Kommunikation:<br />

write (Stream)<br />

read (Stream)<br />

Konstruktion:<br />

SequenceValue ()<br />

SequenceValue (Stream)<br />

values<br />

*<br />

1<br />

homeSequence<br />

SequenceValueLetter<br />

{abstract}<br />

* letterRef<br />

Zeitliche Einordnung:<br />

grabTime: TimeAbs<br />

supplyTime: TimePointAbs<br />

0..1 cycleTime: TimeAbs<br />

<strong>Daten</strong>charakteristik:<br />

validityTime: TimePointRel<br />

defined: bool<br />

typeName: string<br />

typeID: enum<br />

Referenzzähler:<br />

refCounter: integer<br />

Kommunikation:<br />

write (Stream)<br />

SequenceValue<br />

Konstruktion:<br />

SequenceValue ()<br />

*<br />

supplyFunctor<br />

1<br />

*<br />

dataValue<br />

...<br />

...<br />

1<br />

Functor<br />

...<br />

...<br />

<br />

Abbildung 7.3: Klassendiagramm <strong>für</strong> ËÕÙÒ ÎÐÙ aus der Implementierungssicht in C++.<br />

der Objekte zu erhalten, ein Kopieren häufig nicht möglich ist. Da <strong>die</strong>se Objekte veralten <strong>und</strong><br />

ihr Speicherbereich <strong>für</strong> neue dynamische Objekte benötigt wird, müssen sie schließlich gelöscht<br />

werden, wobei <strong>die</strong> nicht triviale Frage zu beantworten ist, wann genau <strong>die</strong>s geschehen kann.<br />

Mit Hilfe des Envelope-Letter-Idioms wird <strong>die</strong>s <strong>für</strong> <strong>die</strong> Sequenzwerte folgendermaßen gelöst.<br />

Jeder Sequenzwert wird durch genau eine Letter-Instanz: ËÕÙÒ ÎÐÙÄØØÖ repräsentiert,<br />

<strong>die</strong>se ist mit einem Referenzzähler ausgestattet. Objekte, <strong>die</strong> einen Sequenzwert referenzieren,<br />

halten eine lokale ËÕÙÒ ÎÐÙ-Instanz. Diese nimmt in dem Anwendungsmuster <strong>die</strong><br />

Envelope-Funktion ein. Bei Zuweisungen <strong>und</strong> Kopien wird der Referenzzähler des entsprechenden<br />

Letter-Objekts erhöht, überschriebene oder gelöschte Sequenzwertreferenzen vermindern<br />

den Zähler des referenzierten Letter-Objekts. Wird der Sequenzwert durch kein Objekt mehr<br />

referenziert, ist der Zähler Null <strong>und</strong> das Letter-Objekt kann gelöscht werden.<br />

7.3.2 Das Objektmodell<br />

Attribute <strong>und</strong> Objektreferenzen<br />

Die Einbindung konkreter <strong>Daten</strong> in eine Sequenzwertinstanz erfolgt über <strong>die</strong> Instanzvariable<br />

ØÎÐÙ ØÌÝÔ. In Abhängigkeit von der Art der Typbehandlung der verwendeten Programmiersprache<br />

(Typbindung zur Compile- oder zur Laufzeit, Verfügbarkeit expliziter Typinformationen<br />

zur Laufzeit, usw.) kann <strong>die</strong>s zu unterschiedlichen Implementierungsvarianten<br />

führen, worauf hier jedoch nicht näher eingegangen werden soll.<br />

Die von der Sequenzwertklasse verwalteten Attribute <strong>die</strong>nen in erster Linie der zeitlichen<br />

Einordnung der <strong>Daten</strong>. Für viele Aufgaben ist es wichtig, den Bezug der <strong>Daten</strong> zur Realzeit zu<br />

bewahren <strong>und</strong> <strong>für</strong> deren Auswertung zusammen mit den <strong>Daten</strong>werten bereitzustellen, so z.B.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!