12.07.2015 Aufrufe

Entwicklung und Anwendung eines Bezugsrahmens zur ...

Entwicklung und Anwendung eines Bezugsrahmens zur ...

Entwicklung und Anwendung eines Bezugsrahmens zur ...

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.

Da Hilfsmittelklassen nicht instanziert werden dürfen, werden die enthaltenen Attribute <strong>und</strong> Methodenbei der Umsetzung auf C++- Code statisch deklariert, d.h. sie sind nicht instanzbezogen. DaJava ebenfalls über das Konzept der statisch deklarierte Methoden verfügt, ist nicht nachvollziehbar,warum für diese Sprache keine zu C++ äquivalente Lösung der Umsetzung auf den Quellcode gewähltwurde.Schnittstellen werden in C++ als normale Klassen abgebildet, da diese Sprache nicht über ein entsprechendesKonzept verfügt. Bei Java hingegen erfolgt die Abbildung auf die Schnittstellen, wie siein der Programmiersprache realisiert sind. In beiden Fällen ist die Deklaration von Attributen erlaubt.Die Realisierung einer Schnittstelle durch eine Klasse wird vom ANSI C++-Codegenerator ignoriert<strong>und</strong> bei Rose C++ als Generalisierung interpretiert. Java verfügt dahingehend über die implements-Anweisung, die eine <strong>zur</strong> Realisierungsbeziehung äquivalente Semantik hat.KlassentypKlasseParametrisierbare KlasseInstanzierte KlasseHilfsmittelklasseParametrisierbare HilfsmittelklasseInstanzierte HilfsmittelklasseMetaklasseTabelle 5: Umsetzung der Klassentypen in C++Umsetzung in C++KlasseTemplateTypdefinitionKlasse mit statischen Attributen <strong>und</strong> MethodenTemplate mit statischen Attributen <strong>und</strong> MethodenTypdefinitionKlasseStrategien <strong>zur</strong> Auflösung von Konflikten bei Mehrfachvererbung werden in Rose nicht angeboten.Die Überprüfung der Zulässigkeit auf Modellebene ist abhängig von der Zielsprache. Falls diesekeine Mehrfachvererbung anbietet – wie bspw. Java -, wird dies vom Tool rückgemeldet. Allerdingserfolgt die Rückmeldung nicht bei der Erstellung der mehrfachen Vererbungsbeziehung, sondern erstbei der Öffnung des Eigenschaftendialogs der mehrfach erbenden Klasse. Eine Codeerzeugung kannin diesem Falle so lange nicht erfolgen, bis die Mehrfachvererbungsbeziehung aufgelöst ist. Dies erfolgtvon Hand, d.h. das Modellierungstool greift nicht automatisch ein. Bei C++, das Mehrfachvererbungunterstützt, erfolgt keinerlei Überprüfung hinsichtlich der Zulässigkeit der in den betreffendenKlassen enthaltenen Deklarationen. Im Fall widersprüchlich deklarierter Operationen bspw. werdendiese in den Quellcode übernommen, so daß eine Fehlermeldung erst <strong>zur</strong> Compilezeit erzeugt wird.Die Navigation von Assoziationen wird auf Codeebene mit Attributen umgesetzt. Dabei werdenKardinalitäten durch die Wahl des Datentyps des die Navigation realisierenden Attributs berücksichtigt.Bei einer Kardinalität >1 bspw. erfolgt die Umsetzung durch ein Array, ansonsten durch einfacheAttribute. Weiterhin wird in C++ zwischen Attributen, die Werte (by value) bzw. Referenzen (byreference) enthalten, unterschieden. Ersteres wird durch eine Attributdeklaration der Form typeattribute; umgesetzt. Referenzen hingegen werden mit Pointern in der Form type* attribute;dargestellt. Die erste Deklarationsart wird für Kompositionen genutzt, um die existentielleAnhängigkeit der Teile von Ganzen darzustellen 115 , die zweite für Assoziationen <strong>und</strong>Aggregationen. Weiterhin werden bei der Erzeugung der Attribute, über welche die Navigation erfolgt,im Gegensatz zu normalen Attributen durch die C++-Generatoren entsprechende Zugriffmethodengeneriert.Java kennt ausschließlich die Methode des Zugriffs auf Objekte über eine Referenz (object handle),so daß hier kein Unterschied zwischen Assoziation, Aggregation <strong>und</strong> Komposition auf derImplementierungsebene besteht. Auch ein Kommentar, der im Quellcode auf die Art der Beziehung115 S. dazu auch Abschnitt 3.3.2.3.3- 128 -

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!