| |
Angenommene Spezifikation UML Ocl 2,0 29 Kontext- Firma inv : self.employee->exists(p|p.forename = ' Jack ') Kontext- Firma inv : self.employee->exists(p: Person|p.forename = ' Jack ') Diese Ausdrücke werten aus, um auszurichten wenn der Forename Eigenschaft von mindestens einem Angestellten ist gleich ' Jack.', 7,6,5 Wiederholen Sie Betrieb Wiederholen Betrieb ist etwas schwieriger, aber ist sehr generisch. Die Betriebe weisen zurück, auserwählt, forAll, besteht, sammelt, können alle in beschrieben werden wiederholen . Eine Ansammlung errichtet einen Wert, indem sie über einer Ansammlung wiederholt. Ansammlungs->iterate(elem: Art; Akkumulator: Art = < Ausdruck >| Ausdruck-mit-elem-und-Akkumulator) Das variable elem ist das iterator, wie in der Definition von auserwähltem, forAll, usw.. Der variable Akkumulator ist der Akkumulator. Akkumulator erhält einen Ausgangswert < Ausdruck > . Wenn wiederholen ausgewertet wird, elem wiederholt über der Ansammlung und Ausdruck-mit-elem-und-Akkumulator wird für jedes ausgewertet elem . Nach jeder Auswertung von Ausdruck-mit-elem-und-Akkumulator , sein Wert wird Akkumulator zugewiesen . Auf diese Art der Wert des Akkumulators wird während der Wiederholung der Ansammlung aufgebaut. Sammeln der Betrieb, der in beschrieben wird, wiederholen schaut Gleiches: Ansammlung->collect(x: T|x.property) -- ist zu identisch: Ansammlung->iterate(x: T; Akkumulator: T2 = Bag{ }| Akkumulator->including(x.property)) Oder innen geschrieben Java-wie Pseudocode kann das Resultat wiederholen wie errechnet werden: iterate(elem: T; Akkumulator: T2 = Wert) { Akkumulator = Wert; for(Enumeration e = collection.elements(); e.hasMoreElements(); { elem = e.nextElement(); Akkumulator = < Ausdruck-mit-elem-und-Akkumulator > } Rückholakkumulator; } Obgleich der Pseudo-Code Java ein ' folgendes Element ' benutzt, wiederholen Betrieb wird nicht nur für Sequqnce, aber für jedes definiert Ansammlungsart. Der Auftrag der Wiederholung durch die Elemente in der Ansammlung wird nicht für Satz und Beutel definiert. Für a Ordnen Sie den Auftrag ist der Auftrag der Elemente in der Reihenfolge der Reihe nach. 7,7 Anzeigen in OCL Dieser Abschnitt enthält einige Beispiele der konkreten Syntax und beschreibt die feineren Details des Anzeigenausdruckes. In frühere Versionen die Phrase "Tätigkeiten in OCL" wurden verwendet, aber Anzeige wurde gefunden, um die Bedeutung genau gefangenzunehmen. 7,7,1 Betriebe und das Senden der Signale benennen , um zu spezifizieren, daß Kommunikation stattgefunden hat,IST der hasSent ('^')operator gewohnt: Kontext Subject::hasChanged() Pfosten : observer^update(12, 14) |  |
|
| |
|
|