| |
26 Angenommene Spezifikation UML Ocl 2,0 Ansammlung->select(...) Zu der Parameter von auserwähltem hat eine spezielle Syntax, die ermöglicht einem, zu spezifizieren, welchen Elementen der Ansammlung wir wünschen auserwählt. Es gibt drei unterschiedliche Formen, von denen das einfachste man ist: Ansammlungs->select(Boolesch-ausdruck) Dieses ergibt eine Ansammlung, die alle Elemente von der Ansammlung enthält für welches der Boolesch-Ausdruck wertet zu aus zutreffend. Das Resultat dieses Ausdruckes, für jedes Element in der Ansammlung finden der Ausdrucks- Boolesch-Ausdruck wird ausgewertet. Wenn dieses auswertet, um auszurichten, wird das Element in der Resultatsansammlung, andernfalls nicht umfaßt. Als Beispiel der folgende OCL Ausdruck spezifiziert, daß die Ansammlung aller Angestellten älter als 50 Jahre nicht leer ist: Kontext Firma inv : self.employee->select(age > 50)->notEmpty() Das self.employee ist von der Art Set(Person). Das auserwählte nimmt jede Person von self.employee und wertet Alter > 50 aus für dieses Person. Wenn dieses zutreffendes ergibt dann ist die Person im Resultatssatz. Wie im vorhergehenden Beispiel gezeigt, ist der Kontext für den Ausdruck im auserwählten Argument das Element der Ansammlung auf, welchem das auserwählte hervorgerufen wird. So das Alter Eigenschaft wird im Kontext einer Person genommen. Im oben genannten Beispiel ausdrücklich zu verweisen ist unmöglich, auf die Personen selbst; Sie können auf Eigenschaften von nur sich beziehen sie. Ermöglichen, sich auf die Personen selbst zu beziehen, gibt es eine allgemeinere Syntax für den auserwählten Ausdruck: Ansammlung->select(V|Boolesch-Ausdruck-mit-v) Die Variable V wird das iterator benannt. Wenn das auserwählte ausgewertet wird, v wiederholt über der Ansammlung und das Boolesche Ausdruck-mit-v wird für jedes ausgewertet V . V ist ein Hinweis auf dem Gegenstand von der Ansammlung und kann verwendet werden sich zu beziehen die Gegenstände selbst von Ansammlung . Die zwei Beispiele folgend sind identisch: Kontext Firma inv : self.employee->select(age > 50)->notEmpty() Kontext- Firma inv : self.employee->select(p|p.age > 50)->notEmpty() Das Resultat des kompletten auserwählten ist die Ansammlung der Personen p für welches p.age > 50 wertet aus, um auszurichten. Dieses beträgt zu einer Teilmenge self.employee. Als abschließende Verlängerung zur auserwählten Syntax, kann die erwartete Art des variablen v gegeben werden. Das auserwählte jetzt wird wie geschrieben: Ansammlung->select(V: Art|Boolesch-Ausdruck-mit-v) Die Bedeutung von diesem ist daß die Gegenstände in der Ansammlung muß von der Art- Art sein . Das folgende Beispiel ist zum vorhergehenden identisch Beispiele: Kontext- Firma inv : self.employee.select(p: Person|p.age > 50)->notEmpty() Die auserwählte Syntax konkurrieren sieht jetzt wie ein von aus: Ansammlung->select(V: Art|Boolesch-Ausdruck-mit-v) Ansammlung->select(V|Boolesch-Ausdruck-mit-v) Ansammlungs->select(Boolesch-ausdruck) Der Ausschuß Betrieb ist zum auserwählten Betrieb identisch, aber mit Ausschuß erhalten wir die Teilmenge aller Elemente von Ansammlung, für die der Ausdruck zu falschem auswertet. Die Ausschußsyntax ist- zur auserwählten Syntax identisch: Ansammlung->reject(V: Art|Boolesch-Ausdruck-mit-v) Ansammlung->reject(V|Boolesch-Ausdruck-mit-v) |  |
|
| |
|
|