| |
28 Angenommene Spezifikation UML Ocl 2,0 collection.propertyname Ansammlung->collect(propertyname) und sind so diese, wenn die Eigenschaft parameterisiert wird: collection.propertyname (par1, par2...) Ansammlung->collect (propertyname(par1, par2...)) 7,6,3 Betrieb ForAll Viele Mal ist eine Begrenzung auf allen Elementen einer Ansammlung erforderlich. Der forAllbetrieb in OCL darf a spezifizieren Boolescher Ausdruck, der für alle Gegenstände in einer Ansammlung halten muß: Ansammlung->forAll(V: Art|Boolesch-Ausdruck-mit-v) Ansammlung->forAll(V|Boolesch-Ausdruck-mit-v) Ansammlungs->forAll(Boolesch-ausdruck) Dieses forAll Ausdrucksresultate in einem Booleschem. Das Resultat ist wenn Boolesch-Ausdruck-mit-v zutreffend ist für alle Elemente von zutreffend Ansammlung . Wenn Boolesch-Ausdruck-mit-v für ist eins oder mehr falsch V in Ansammlung , dann der komplette Ausdruck wertet zu falschem aus. Z.B. im Kontext einer Firma: Kontext Firma inv : self.employee->forAll(alter < = 65) inv : self.employee->forAll(p|p.age < = 65) inv : self.employee->forAll(p: Person|p.age < = 65) Diese invariants werten aus, um auszurichten wenn das Alter Eigenschaft jedes Angestellten ist kleiner oder Gleichgestelltes bis 65. Das forAll Betrieb hat eine ausgedehnte Variante, in der dann ein iterator verwendet wird. Beide iterators wiederholen über führen Sie Ansammlung durch. Effektiv ist dieses ein forAll auf dem kartesischen Produkt der Ansammlung mit sich. Kontext- Firma inv : self.employee->forAll(e1, e2: Person| e1 < > e2 deutet e1.forename < > e2.forename) an Dieser Ausdruck wertet aus, um auszurichten, wenn die Forenames aller Angestellten unterschiedlich sind. Es ist semantisch Äquivalent: Kontext- Firma inv : self.employee->forAll (e1|self.employee->forAll (e2| e1 < > e2 deutet e1.forename < > e2.forename)) an 7,6,4 Besteht Betrieb Viele Mal man muß wissen, ob es mindestens ein Element in einer Ansammlung gibt, für die eine Begrenzung hält. besteht Betrieb in OCL erlaubt Ihnen, einen Booleschen Ausdruck zu spezifizieren, der für mindestens einen Gegenstand in a halten muß Ansammlung: Ansammlung->exists(V: Art|Boolesch-Ausdruck-mit-v) Ansammlung->exists(V|Boolesch-Ausdruck-mit-v) Ansammlungs->exists(Boolesch-ausdruck) Dieses besteht Betriebsresultate in einem Booleschem. Das Resultat ist wenn Boolesch-Ausdruck-mit-v zutreffend ist für ein mindestens zutreffend Element der Ansammlung. Wenn Boolesch-Ausdruck-mit-v ist für alles v falsch in der Ansammlung dann der komplette Ausdruck wertet zu falschem aus. Z.B. im Kontext einer Firma: Kontext- Firma inv : self.employee->exists(forename = ' Jack ') |  |
|
| |
|
|