14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

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.

5 Kontroll- und Verwaltungsschicht<br />

Abbildung 5.19: Abhängigkeiten der Typprüfung<br />

Überprüfung des Typs mehr notwendig. In Abbildung 5.20 wird e<strong>in</strong> e<strong>in</strong>faches Beispiel konstruiert. E<strong>in</strong><br />

Schnittstellentyp A wird hier nur von der Klasse B implementiert. Da von der Schnittstelle selbst ke<strong>in</strong><br />

Objekt <strong>in</strong>stanziiert werden kann, s<strong>in</strong>d alle Objekte welche den Typ A darstellen tatsächlich von Typ B.<br />

Typumwandlungen von Typ A <strong>in</strong> Typ B müssen daher nicht geprüft werden.<br />

Abbildung 5.20: E<strong>in</strong>faches Optimierungsbeispiel bei globaler Sicht<br />

E<strong>in</strong>e Schnittstelle A wird nur von der Klasse B implementiert. Typumwandlungen von Objekten vom statischen Typ A <strong>in</strong><br />

den Typ B s<strong>in</strong>d dann immer erfolgreich. Die markierte Umwandlungsoperation muss somit nicht geprüft werden, da alle<br />

Objekte, welche den Typ A implementieren, vom Typ B s<strong>in</strong>d.<br />

Wird dann jedoch e<strong>in</strong>e Klasse C nachgeladen, welche ebenfalls die Schnittstelle A implementiert, so<br />

ist die Optimierung ungültig. Nun ist e<strong>in</strong>e Typprüfung notwendig, um Objekte vom Typ B von denen<br />

des Typs C zu unterscheiden. Die Typprüfung muss angepasst oder ausgetauscht werden.<br />

Bei e<strong>in</strong>em compilerbasierten System kann die Typüberprüfung <strong>in</strong> den Code e<strong>in</strong>gearbeitet werden.<br />

Sie ist dann nicht mehr als eigenständiger Dienst sichtbar, sondern im Code der Anwendung enthalten.<br />

Bei Änderungen der Typhierarchie muss dann jedoch der betroffene Code ausgetauscht werden. Im<br />

oben betrachteten Beispiel muss beispielsweise der Code der Klasse B neu generiert werden, obwohl<br />

die Klasse selbst nicht verändert wurde.<br />

5.4.9 Laufzeittypsystem<br />

Java bietet die Möglichkeit, dass e<strong>in</strong>e Anwendung zur Laufzeit Informationen über die vorhandenen<br />

Typen abfragen kann. Die Anwendung erhält dabei Objekte, welche Klassen oder Methoden beschreiben.<br />

Mithilfe solcher Meta-Objekte können dann Details der Elemente, wie beispielsweise Typen der<br />

Parameter abgefragt werden. Darüber h<strong>in</strong>aus können neue Objekte erzeugt oder existierende Objekte<br />

verändert werden. So kann beispielsweise der Inhalt e<strong>in</strong>es Objektfeldes verändert oder e<strong>in</strong>e Methode<br />

aufgerufen werden, deren Name während der Implementierung noch unbekannt war.<br />

Das Laufzeittypsystem ist dafür zuständig, die entsprechenden Meta-Objekte zu erstellen und mit<br />

den Informationen aus den Klassendaten zu <strong>in</strong>itialisieren. Außerdem müssen verändernde Zugriffe<br />

über diese Meta-Objekte an die entsprechenden Bauste<strong>in</strong>e wie beispielsweise die Objekterzeugung<br />

weitergeleitet werden.<br />

Die Anwendung kann das Laufzeittypsystem direkt nutzen. E<strong>in</strong> Teil der Funktionalität wird auch<br />

von der Speicherbere<strong>in</strong>igung genutzt, um alle Referenzen zu f<strong>in</strong>den.<br />

122

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!