Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
164 KAPITEL 7. OBJEKTORIENTIERTE MODELLE<br />
das System anhand vorgegebener Kriterien überwachen. Ihre Aufgabe ist es, <strong>die</strong> Arbeitszyklen<br />
eines aus Funktoren <strong>und</strong> Sequenzen bestehenden Moduls anzusteuern <strong>und</strong> zu kontrollieren,<br />
wo<strong>für</strong> sie regelmäßig neue Werte von den Ausgabesequenzen des Moduls anfordern sowie<br />
ausgewählte Funktoren aufrufen.<br />
Wichtige Gr<strong>und</strong>konzepte der objektorientierten Programmierung wie Klassen, Instanzen,<br />
Vererbung, Polymorphie, Komposition, Aggregation <strong>und</strong> Assoziation werden hier als bekannt<br />
vorausgesetzt. Die graphische Darstellung von Objekt- <strong>und</strong> Klassenbeziehungen erfolgt mit<br />
den Ausdrucksmitteln der UML (Unified Modelling Language), da <strong>die</strong>se sich als ein De-facto-<br />
Standard etabliert hat. Die folgenden Klassenentwürfe orientieren sich in erster Linie an der<br />
konzeptionellen bzw. Spezifikationssicht auf <strong>die</strong> Klassenbeschreibungen <strong>und</strong> Funktionalitäten.<br />
Auf Implementierungsdetails, <strong>die</strong> sich z.B. aus den Besonderheiten der verwendeten Programmiersprache<br />
C++ ergeben, soll an <strong>die</strong>ser Stelle weitestgehend verzichtet werden.<br />
Für Objekte, <strong>die</strong> in <strong>die</strong>sem Kapitel vorgestellt werden, gelten <strong>die</strong> folgenden Konventionen<br />
bei der Angabe von Attributen <strong>und</strong> Methoden.<br />
¯ Auf Attribute <strong>und</strong> assoziierte Objekte der vorgestellten Klassen kann mit Hilfe von standardisierten<br />
Methoden zugegriffen werden, <strong>die</strong> nicht gesondert angegeben werden. Die<br />
Namen <strong>die</strong>ser Methoden werden nach einem regelmäßigen Schema gebildet, <strong>für</strong> eine Instanzvariable<br />
mit dem Namen <strong>und</strong> Typ ÚÖÒÑ ÎÖÌÝÔ bzw. <strong>für</strong> eine Liste ÚÖÒÑÄ×Ø<br />
ÎÖÌÝÔ℄ergeben sich <strong>die</strong> folgenden Methodennamen:<br />
ØÎÖÒÑ ÎÖÌÝÔ Auslesen eines Attributwertes bzw. einer Objektreferenz;<br />
×ØÎÖÒÑ ÎÖÌÝÔ Setzen eines Attributwertes bzw. einer Objektreferenz;<br />
×ÎÖÒÑ ÓÓÐ Abfrage des Wahrheitswertes von boolschen Attributen;<br />
ÎÖÒÑ ÎÖÌÝÔ Wert oder Objektreferenz in eine Liste eintragen;<br />
ÖÑÎÖÒÑ ÎÖÌÝÔ Wert oder Objektreferenz aus einer Liste entfernen.<br />
¯ Konvertierungen von Objekten in einen anderen Typ Ê×ÙÐØÌÝÔ erfolgen mit Hilfe von<br />
Methoden der Form ×Ê×ÙÐØÌÝÔ <strong>und</strong> sind i.d.R. explizit anzugeben.<br />
¯ Basistypen wie ×ØÖÒ, ÒØÖ, ÓÓÐ,...werdendurch<strong>die</strong>zugr<strong>und</strong>eliegende Programmierumgebung<br />
bereitgestellt.<br />
¯ Für alle Objektklassen werden Konstruktor- <strong>und</strong> Destruktormethoden definiert.<br />
¯ Alle hier entwickelten Objektklassen sind von einer gemeinsamen Basisklasse ÊÓÓØÇ Ø<br />
abgeleitet, <strong>die</strong> einige wenige gr<strong>und</strong>legende Methoden, insbesondere <strong>für</strong> <strong>die</strong> Objektidentifikation<br />
sowie <strong>für</strong> Kommunikation <strong>und</strong> externe Repräsentation, jedoch keine Attribute<br />
definiert. Eine Auswahl der wichtigsten Methoden wird in Tabelle 7.1 angegeben.<br />
¯ Im Rahmen <strong>die</strong>ses Systems werden zahlreiche weitere Klassen <strong>und</strong> <strong>Daten</strong>typen verwendet,<br />
z.B. Klassen <strong>für</strong> den <strong>Daten</strong>austausch über Netzverbindungen <strong>und</strong> mit dem Filesystem:<br />
ËØÖÑ, <strong>und</strong> davon abgeleitet ÐËØÖÑ <strong>und</strong> ÆØËØÖÑ. Das Einlesen von Videobildfolgen<br />
erfolgt über eine Framegrabber-Einbindung ÖÑÖÖ, Kameraparameter<br />
können mit Hilfe der ÑÖ-Klasse repräsentiert werden.<br />
Die vorgestellten Klassen wurden prototypisch in C++ implementiert <strong>und</strong> sind <strong>für</strong> <strong>die</strong> Sensordatenauswertung<br />
im Agilo-RoboCuppers-Team der TU München in einer Roboterfußball-<br />
Umgebung mit Erfolg eingesetzt worden.