• Keine Ergebnisse gefunden

3.5 Externe Klassendiagramme

4.3.4 Das Type-System-Editor Dateiformat .TED

Da ein Schema im neuen JGraLab deutlich mehr Funktionalit¨at im Vergleich zu den alten Versionen bietet, wird sich bei der Persistenz des Schemas nicht vollst¨andig an .G orientiert.

Als weitere Basis dient das sogenannte Type System Editor Dateiformat mit der Endung .TED9. Die Entwicklung dieses Formates wurde andersherum motiviert wie .G: Das .TED-Dateiformat soll von Hand geschrieben und m¨oglichst intuitiv verstanden werden k¨onnen. .G dagegen dient prim¨ar als Austauschformat f¨ur GraLab - die M¨oglichkeit, es von Hand auszulesen und schreiben zu k¨onnen, war nicht das prim¨are Entwicklungsziel.

Aus einer TED-Beschreibung kann ein Typsystem f¨ur das alte GraLab generiert werden [DaKaMo98].

Beispiel f ¨ur ein Typsystem in .TED

In diesem Abschnitt wird versucht, das Schema-Beispiel der Abbildung 4.10 mittels .TED auszudr¨ucken.

schema TGTest

abstract entity Junction;

entity Intersection: Junction;

entity CarPark: Junction { capacity: INTEGER; open: BOOL;

width: REAL; name: STRING;

numberPlate: LIST(STRING);

numberPlateHistory: LIST(LIST(STRING); };

relationship Street from Junction (1,*) to Junction (1,*) { streetName: STRING };

end

Die .TED-Datei wird mit dem Schl¨usselwortschemaeingeleitet, gefolgt von seinem Namen. Anschließend wird das gesamte Schema beschrieben, welches sich durch das

9TED = Textual EER Description, eine Schemabeschreibungssprache

Schl¨usselwort end abschließt. Knotenklassen k¨onnen durch entity deklariert wer-den, Kantenklassen durchrelationship. Ein vorangestelltes abstractdefiniert eine Klasse als abstrakt.

Die Hierarchie wird direkt in der Deklaration der jeweiligen Graphelementklassen defi-niert, indem nach dem Namen des Elements, durch einen Doppelpunkt abgetrennt, seine Superklassen aufgelistet werden.

Sollte das Element Attribute besitzen, sind diese in geschweiften Klammern aufgef¨uhrt.

Die direkte Angabe der Dom¨anen hinter den Attributnamen f¨uhrt zu einer besseren Les-barkeit. Da die Dom¨anen Object, Record und Enum nicht in TED verf¨ugbar sind, werden sie weggelassen, Set wird durchLISTersetzt.

Eine Kantenklasse (relationship) besitzt in .TED die M¨oglichkeit festzusetzen, zwischen welchen Kantenklassen sie bestehen muss.

Die Multiplizit¨aten von 1 bis 6 sind nur eingeschr¨ankt anf¨uhrbar, da .TED keine anderen Multiplizit¨aten außer 0, 1 und unendlich erlaubt.

Alle fehlenden Eigenschaften von .TED sind detailliert in Abschnitt 4.3.4 aufgelistet.

EBNF-Definition des Type-System-Editor Dateiformats .TED

An dieser Stelle wird das TED-Dateiformat mit Hilfe der EBNF erl¨autert.

Generell gelten ¨ahnliche Basisregeln wie beim G-Dateiformat: Die EBNF-Beschrei-bungen der Bezeichner NL und Number sind identisch, das Symbol SP darf nun al-lerdings beliebig viele Leerzeichen bezeichnen. Ein String hingegen wird anders defi-niert, und zwar als einfache Zeichenfolge ohne eine Angabe der Anzahl der Zeichen des Strings.

Eine TED-Datei (TedFile) beginnt immer mit dem Schl¨usselwortschema, gefolgt von einem Namen. Nacheinander werden dann alle Entit¨aten (Entity) und anschlie-ßend alle Assoziationen (Relationship) beschrieben. Die Datei beendet das Schl¨us-selwortend.

TedFile = "schema" SP SchemaName NL { Entity NL } NL

{ Relationship NL }

"end" ;

String = { ? alle im Rechner darstellbaren Zeichen ? } ;

4.3. Eingabe/Ausgabe SP = SP { SP }

Der Schemaname wird durch eine beliebige Zeichenkette repr¨asentiert. Eine Entit¨at (Entity) kann durch das Schl¨usselwortabstractals abstrakt definiert werden. Das Wort entity leitet schließlich die Definition der Entit¨at ein. Sie beginnt mit einem Namen, anschließend werden ihre Hierarchie (genauer gesagt, ihre Oberklassen) und ihre Attribute festgesetzt. Abgeschlossen wird jede Definition einer Entit¨at mittels eines Semikolons.

SchemaName = String ;

Entity = [ "abstract" ] "entity" SP EName [ Hierarchy ] [ Attributes ] ";" ; EName = String ;

Die Definition einer Assoziation (Relationship) ist ¨ahnlich definiert wie die Defi-nition einer Entit¨at, auch sie spezifiziert eine Hierarchie und ihre Attribute. Zus¨atzlich wird diese Assoziation durch je einefromund einetoAngabe erg¨anzt, die angeben, mit welchen Entit¨aten sich verbunden werden darf. Des Weiteren ist eine Angabe der Multiplizit¨aten (Multiplicity) notwendig.

Relationship = "relationship" SP RSName [Hierarchy] SP

"from" SP EName Multiplicity

"to" EName Multiplicity [ Attributes ] ";" ; RSName = String ;

Die Angabe der Multiplizit¨at wird definiert durch eine oder zwei Zahlen. Die Angabe von nur einer Zahl bedeutet, dass die minimale und die maximale Multiplizit¨at gleich sind. Als Zahlen sind nur 0 oder 1 erlaubt.

Die Angabe eines Sterns (*) bedeutet, dass sich beliebig viele Instanzen von Entit¨aten mittels einer Instanz dieser Assoziation untereinander verbinden d¨urfen. Wird nur ein einziger Stern angegeben, sind damit die Multiplizit¨aten von 0 bis unendlich gemeint.

Auch die Angabe eines Plus-Zeichens (+) ist m¨oglich, sie definiert die Multiplizit¨aten von 1 bis unendlich.

Multiplicity = "(" ( 0 | 1 | "*" | "+" )

[ "," ( 0 | 1 | "*" | "+" ) ] ")" ;

Die Beschreibung der Hierarchie (Hierarchy) wird mittels eines Doppelpunktes ein-geleitet. Es folgt eine Liste von Superklassen, welche durch Semikolons getrennt wer-den.

Hierarchy = ":" SP EntityName { ";" SP EntityName } ;

Die Attribute (Attributes) werden in geschweiften Klammern ({, }) beschrieben.

Auch sie werden durch Semikolons aufgez¨ahlt. Im Einzelnen bestehen sie aus der An-gabe eines Namens und einer durch einen Doppelpunkt davon abgetrennten Dom¨ane (AttrDomain), welche den Datentyp des Attributs angibt.

Attributes = SP "{" SP Attribute { ";" Attribute } SP

"}" SP ;

Attribute = AttrName ":" SP AttrDomain ; AttrDomain = "STRING" | "INTEGER" | "BOOL" ;

Nicht speicherbare Information in .TED

Generell erscheint das .TED-Format wesentlich lesbarer als .G. Dies ist haupts¨achlich dem Umstand zu verdanken, dass .TED explizit auf intuitive Lesbarkeit hin entwickelt wurde. Es existieren hier keine Zahlen-IDs, welche die Lesbarkeit einschr¨anken.

Die folgenden Eigenschaften werden auf der Schema-Ebene von .TG ben¨otigt, k¨onnen jedoch nicht mittels .TED ausgedr¨uckt werden.

• Definition einer Record- und einer Enumeration-Dom¨ane und anschließender Re-ferenz mittels eines Namens darauf innerhalb der Attributdeklaration

• Definition einer Object-Dom¨ane, um Java-Objects zu speichern

• Repr¨asentation einer Set-Dom¨ane f¨ur eine Menge ohne Duplikate

• Deklaration einer Graphklasse inklusive ihrer Attribute

• Angabe von Rollennamen f¨ur die Endpunkte einer Kantenklasse

• Festlegung einer Kantenklasse als Aggregation oder als Komposition

• Festlegung von anderen Multiplizit¨aten außer 0, 1 und unendlich

4.3. Eingabe/Ausgabe