11.07.2015 Aufrufe

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

54 KAPITEL 5: IMPLEMENTIERUNGdem Schema Meta_Typbeschreibung zusammengesetzt: String-Werte haben beispielsweiseden <strong>ODL</strong>-Typ MetaString <strong>und</strong> Int-Werte den <strong>ODL</strong>-Typ MetaInteger.Metamodell-Elemente werden als Entitäten verstanden <strong>und</strong> haben dementsprechend den <strong>ODL</strong>-Typ MetaEntity. Hat ein <strong>ODL</strong>-Typ keine Entsprechung im Java-Typsystem, so wird einespezielle Werteklasse erstellt, um Instanzen dieses Typs zu repräsentieren – für den <strong>ODL</strong>-TypMetaEntity werden die Werte durch Instanzen der Klasse Entity repräsentiert.Um der umfassenden Erweiterung des <strong>ODL</strong>-Typsystems gerecht zu werden, die im Rahmen dervorliegenden Diplomarbeit vorzunehmen war, wurde die MetaType-Klassensierarchie umgebaut.Zunächst wurde für alle MetaType-Unterklassen die abstrakte Oberklasse AbstractMetaTypeerstellt, die einige Methoden aus dem Interface MetaType implementiert – alle MetaType-Unterklassensind auch Unterklassen von AbstractMetaType. Die Klasse MetaProductTypenimmt eine Sonderstellung in der MetaType-Hierarchie ein, indem sienicht direkt das Interface MetaType, sondern das Interface MetaCompositeType implementiert,das ein Unterinteface von MetaType ist <strong>und</strong> Methoden für zusammengesetzte Datentypendefiniert, d.h., Datentypen, die aus Wertetupeln fester Länge bestehen. Die abstrakteKlasse AbstractMetaCompositeType implementiert einige Methoden aus MetaCompositeType<strong>und</strong> dient als Oberklasse für alle Klassen, die einen zusammengesetzten Typimplementieren – zurzeit ist MetaProductType ihre einzige Unterklasse.Die vollständige MetaType-Hierarchie ist auf der Abbildung A.5 im Anhang A dargestellt.Wir beschreiben nun die Erweiterungen im Detail. In der früheren Version waren das InterfaceMetaType sowie die Typ-Klassen MetaBool, MetaInteger, MetaString <strong>und</strong> Meta-Entity bereits vorhanden, ebenso wie die Werte-Klasse Entity, die einzelne Metamodell-Elemente repräsentiert. Für die neuen Datentypen ProductType, RestrictedType,SetType <strong>und</strong> IntroducedType mussten neue Typ-Klassen <strong>und</strong> teilweise auch Werte-Klassen erstellt werden.Die folgende Tabelle gibt für jeden neuen Datentyp die dafür erstellten Klassen in der MetaType-Hierarchiesowie die implementierten Methoden im SableCCGenerator an. Einausführlicher Kommentar zu diesen Klassen <strong>und</strong> Methoden findet sich im Java-Quellcode derentsprechenden Klassen <strong>und</strong> Methoden sowie in [<strong>ODL</strong>API].Datentyp Typ-Klassen Methoden im SableCCGeneratorProductType(Produkttyp)SetType(Mengentyp)RestrictedType(EingeschränkterTyp)IntroducedType(Eingeführter Typ)MetaCompositeType,AbstractMetaCompositeType,MetaProductType,CompositeValue,ProductValueMetaSetType,SetValueMetaRestrictedTypeMetaIntroducedTypeoutAProductType,outAListProductType,constructMetaProductType,outATypeListoutASetType,outASetTypeDefinitionoutARestrictedType,inARestrictedTypeDefinition,caseARestrictedTypeDefinition,outARestrictedTypeDefinitionoutASetExpressionType,outASetVariableType,constructMetaIntroducedTypeFür alle zusammengesetzten Typen, die das Interface MetaCompositeType implementie-

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!