Consideriamo il seguente diagramma di classe
Vorrei esprimere la seguente regola in OCL
if cond = true then
bderived = b
else
bderived.x = b.x + 10
bderived.y = b.y + 10
endif
La mia migliore ipotesi per esprimere quanto sopra usando OCL è la seguente:
context A::bderived : B
derive: if cond = true then b
else
{b.x + 10, b.y + 10}
endif
So che l'espressione OCL precedente non è corretta, ma non riesco a capire alcuna espressione OCL valida per esprimere ciò che voglio.