| |
Angenommene Spezifikation UML Ocl 2,0 163 self.guard.transition.getStateMachine().context.oclAsType(Classifier) und self.bodyExpression.type.name = ' Boolesch ' [ 2 ] Innerhalb eines Schutzes wird der Gebrauch von @pre nicht erlaubt. Kontext ExpressionInOcl inv: -- 12,13 Konkrete Syntax der Kontexterklärungen Dieser Abschnitt beschreibt die konkrete Syntax für das Spezifizieren des Kontextes der unterschiedlichen Arten des Verbrauches der OCL-Ausdrücke. Er gebraucht die Grammatikrichtlinien, die in Kapitel 9 definiert werden ("konkrete Syntax"). Hier auch,IST jede Produktionsrichtlinie zu verbunden die abstract syntax nach der Art des Attribut- ast . Jedoch müssen wir auf die abstract syntax des UML manchmal uns beziehen die rechte Art für jede Produktion finden. Sichtrichtlinien etc. müssen im UML-metamodel definiert werden. Hier nehmen wir an, daß jeder Klassifikator einen Betrieb hat visibleElements() , das einen Fall des Artklimas zurückbringt, wie in Kapitel 9 ("konkrete Syntax") definiert. Anmerkung - die Kontexterklärungen, wie in diesem Abschnitt beschrieben sind nicht erforderlich, wenn die OCL-Ausdrücke direkt zu angebracht werden das UML-Modell. Diese conceretesyntax für Kontexterklärungen ist nur dort, unterschiedliche OCl-Ausdrücke in den Textakten zu erleichtern. Wegen der Annahme, daß die konkrete Syntax folgend getrennt von dem UML-Modell verwendet wird, nehmen wir das Bestehen an von einem Betriebs- getClassifier() auf dem UML-Modell, das uns erlaubt, einen Klassifikator im Entsprechen überall zu finden Modell. Die Unterzeichnung dieses Betriebes wird definiert, wie folgt: Name des Kontextes Model::findClassifier(: Sequence(String)): Klassifikator Der Name Notwendigkeiten ein völlig qualifizierter Name (er kann sein), nicht sein, so lang, wie er den Klassifikator einzigartig kennzeichnen kann siomewhere im UML-Modell. Wenn ein Klassifikatorname mehr als einmal auftritt, muß er mit seinem Besitzen qualifiziert werden Paket (recusiveley) bis den qualifizierten Namen ist einzigartig. Wenn mehr als ein Klassifikator gefunden wird, geht der Betrieb zurück OclUndefined . Die Variable Modell wird verwendet, sich auf das UML-Modell zu beziehen. Es wird wie verwendet Model.findClassifier() . Ebenso nehmen wir das Bestehen eines Betriebs- getPackage() an auf dem UML-Modell, das uns erlaubt, ein Paket zu finden überall im entsprechenden Modell. Die Unterzeichnung dieses Betriebes wird definiert, wie folgt: Name des Kontextes Model::findPackage(: Sequence(String)): Paket In diesem Fall der Name Notwendigkeiten sind ein völlig qualifizierter Name. Anmerkung - die Richtlinien für die synthetisierten und übernommenen Attribute verbanden mit der Grammatik, die alle nach dem getroffenen UML 2,0 abhängen amodel. Sie können nicht geschrieben werden, bis dieses metamodel stablelized gewesen ist. Folglich nur die Grammatikrichtlinien werden gegeben. 12,13,1 packageDeclarationCS Diese Produktionsrichtlinie stellt eine Paketerklärung dar. [ A ] packageDeclarationCS::= ' Paket ' pathNameCS contextDeclCS * ' endpackage ' [ B ] packageDeclarationCS::= contextDeclCS * 12,13,2 contextDeclarationCS Diese Produktionsrichtlinie stellt alle unterschiedlichen Kontexterklärungen dar. [ A ] contextDeclarationCS::= attrOrAssocContextCS |  |
|
| |
|
|