| |
24 Angenommene Spezifikation UML Ocl 2,0 ? Type1 paßt sich an an Type2 wenn sie identisch sind (Standard, ordnen Sie für alle Arten) an. ? Type1 paßt sich an an Type2 wenn es ein Formationsglied von Type2 ist (Standard, ordnen Sie für alle Arten) an. ? Collection(Type1) paßt sich an an Collection(Type2) , wenn Type1 paßt sich an an Type2 . Dies gilt auch für Set(Type1)/ Set(Type2) , Sequence(Type1)/Sequence(Type2) , Bag(Type1)/Bag(Type2) ? Artübereinstimmung ist transitiv: wenn Type1 paßt sich an an Type2 und Type2 paßt sich an an Type3 , dann Type1 paßt sich an an Type3 (Standardrichtlinie für alle Arten). Z.B. wenn Fahrrad und Auto sind zwei verschiedene Formationsglieder des Transportes: Set(Bicycle) paßt sich an Set(Transport) an Set(Bicycle) paßt sich an Collection(Bicycle) an Set(Bicycle) paßt sich an Collection(Transport) an Merken Sie, daß Set(Bicycle) sich nicht an Bag(Bicycle) anpaßt, noch die andere Weise herum. Sie sind beide Formationsglieder von Collection(Bicycle) auf dem gleichen Niveau in der Hierarchie. 7,5,14 Vorhergehende Werte in Postconditions Wie in 7,3,4 angegeben ("vor und Postconditions"), Ocl kann verwendet werden, um und Pfosten-Zustände auf Betrieben vor zu spezifizieren und Methoden in UML. In einem postcondition kann der Ausdruck auf Werte für jede Eigenschaft eines Gegenstandes bei zwei Momenten innen sich beziehen Zeit: ? der Wert einer Eigenschaft beim Anfang des Betriebes oder der Methode ? der Wert einer Eigenschaft nach Beendigung des Betriebes oder der Methode Der Wert einer Eigenschaft in einem postcondition ist der Wert nach Beendigung des Betriebes. Sich auf den Wert von a beziehen Eigenschaft beim Anfang des Betriebes, man muß postfix den Eigenschaftsnamen mit dem Schlüsselwort ' @pre ': Kontext Person::birthdayHappens() Pfosten : Alter = age@pre + 1 Das Eigenschafts- Alter bezieht sich die auf Eigenschaft des Falls der Person, die den Betrieb durchführt. Das Eigenschafts- age@pre bezieht sich den auf Wert des Eigenschafts- Alters von der Person, die den Betrieb durchführt, beim Anfang des Betriebes. Wenn die Eigenschaft Parameter hat, postfixed das ' @pre ' zum propertyname, vor den Parametern. Kontext Company::hireEmployee(p: Person) Pfosten : Angestellte = employees@pre->including(p) und stockprice() = stockprice@pre() + 10 Wenn der Vorwert einer Eigenschaft zu einem Gegenstand auswertet, sind alle weiteren Eigenschaften, die von diesem Gegenstand erreicht werden, das neue Werte (nach Beendigung des Betriebes) dieses Gegenstandes. So: a.b@pre.c -- Nehmen der alte Wert von Eigenschaft b von a, Sagen x der -- und dann neue Wert von c von x. a.b@pre.c@pre -- Nehmen der alte Wert von Eigenschaft b von a, Sagen x der -- und dann alte Wert von c von x. Der ' @pre' Postfix wird nur in den OCL-Ausdrücken erlaubt, die ein Teil von einem Postcondition sind. Bitten um eine gegenwärtige Eigenschaft von ein Gegenstand, der während der Durchführung des Betriebes zerstört worden ist, ergibt OclUndefined. Auch Beziehen vorhergehender Wert eines Gegenstandes, der während der Durchführung des Betriebes verursacht worden ist, ergibt OclUndefined. |  |
|
| |
|
|