Object Constraint Language
L'Object Constraint Language (OCL) és un llenguatge que permet definir expressions formals vinculades a elements de models UML. Aquestes expressions són bàsicament restriccions, regles de derivació i condicions.[1] OCL fou desenvolupat inicialment el 1995 per IBM i posteriorment es va integrar amb l'UML. OMG el va adoptar com estàndard el 1997.[2]
Elements principals del llenguatge
A continuació s'introdueixen mitjançant exemples els elements principals de l'OCL. Els exemples es basaran en el model UML de la figura. És un model molt simplificat d'un sistema de gestió d'inscripcions a esdeveniments.
Invariants
Un invariant és una restricció vinculada a una classe d'un model. La restricció ha de ser certa (o s'ha de satisfer) per cada instància de la classe.
En el model de la figura, un exemple d'invariant és:
context Esdeveniment inv:
self.nombreInscrits <= self.nombrePlacesOfertes
La primera línia indica que s'està definint un invariant (inv
) vinculat (context
) a la classe Esdeveniment. La restricció es defineix en la segona línia, i es tracta d'una condició que ha de ser certa per cada instància d'Esdeveniment.
El terme self
denota una instància del context (Esdeveniment en aquest cas). L'expressió self.nombreInscrits,
on nombreInscrits és un atribut d'Esdeveniment, denota el valor de l'atribut per a la instància self. Semblantment, l'expressió self.nombrePlacesOfertes
denota el valor de l'atribut nombrePlacesOfertes per a la instància self. La restricció indica doncs que, per cada esdeveniment, el nombre d'inscrits a l'esdeveniment no pot ser superior al nombre de places ofertes.
Una restricció molt freqüent és la que requereix que no hi hagi dues instàncies d'una classe que tinguin el mateix valor d'un dels seus atributs. En l'exemple de la figura això passa en la classe Inscripció, perquè no hi poden haver dues inscripcions que tinguin el mateix número. En OCL ho podem expressar així:
context Inscripcio inv:
Inscripcio.allInstances()->isUnique(numero)
Referències
- ↑ OMG «Object Constraint Language. Version 2.4». OMG Document Number: formal/2014-02-03, 2-2014.
- ↑ Cabot, Jordi; Gogolla, Martin «Object Constraint Language (OCL):A Definitive Guide». Lecture Notes in Computer Science, vol 7320. Springer, Berlin, Heidelberg, 2012.