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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4.3 BEISPIELE VON <strong>ODL</strong>-ABFRAGEN 394.3 Beispiele von <strong>ODL</strong>-AbfragenAm Schluss dieses Kapitels möchten wir noch einige praktische Beispiele für <strong>ODL</strong>-Abfragen geben.• exists c:Component. is Name( c, ”comp1” )Alle Komponenten mit dem Namen ”comp1” finden.• exists c1:Component.exists c2:Component.(is Name( c1, ”comp1” ) and is SubComponents( c1, c2 ))Alle Unterkomponenten der Komponente ”comp1” finden.• exists comps:(c1:Component, c2:Component).(is Name( comps.c1, ”comp1” ) andis SubComponents( comps.c1, comps.c2 ))Umformulierung der vorherigen Abfrage mit Verwendung eines Produkttyps – sie wird dadurchschneller ausgewertet wird.• context comps:{ c:(c1:Component, c2:Component) |is SubComponents( c.c1, c.c2 ) }. trueEine Komponente <strong>und</strong> eine ihrer Unterkomponenten auswählen.• exists ports:( p1:Port, p2:Port ).(neg ports.p1 = ports.p2 andports.p1.Name = ports.p2.Name )Alle Portpaare verschiedener Ports mit gleichem Namen finden.• exists port:Port. port.Type.Text = ”Int”Alle Ports mit dem Datentyp Int finden.• exists ports:( p1:Port, p2:Port ).(neg ports.p1 = ports.p2 andports.p1.Type.Text = ports.p2.Type.Text )Alle Portpaare verschiedener Ports mit gleichem Datentyp finden.• context c1:Component.context name:String.new c2:Component.(result has Name( c2, name ) andresult has SubComponents( c1, c2 ))Eine Komponente <strong>und</strong> den Namen für eine neue Unterkomponente eingeben: es wird eine neueKomponente erstellt, die den eingegebenen Namen erhält <strong>und</strong> als Unterkomponente der ausgewähltenKomponente ins Modell eingefügt wird.• context comp:Component. context names:set String.forall name:element names.( new c:Component.(result has Name( c, name ) andresult has SubComponents( comp, c )))Eine Komponente auswählen <strong>und</strong> anschließend eine Menge von Namen eingeben: für jedenNamen aus der eingegebenen Menge wird bei der ausgewählten Komponente eine Unterkomponentemit diesem Namen erstellt.• context portSet:set Port.forall port:element portSet.(context name:String. result has Name( port, name ) )Eine Portmenge auswählen <strong>und</strong> anschließend für jeden Port aus der Menge einen neuen Namenspezifizieren.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!