Lenguaje de Restricciones de Objeto

20
Evolución tecnoLÓGICA

Transcript of Lenguaje de Restricciones de Objeto

Evolución tecnoLÓGICA

Lenguaje de restricciones de objetos.

Lenguaje formal

Basado en teoria de conjuntos y logica

Creado por steve cook y john daniels

Es fuertemente tipado

Compatible 100% con uml

No tiene efectos laterales, solo consulta el estado del modelo no define su estructura.

Sus expresiones no son ejecutables

Solo evaluan y analizan.

DRESDEN OCL TOOLKIT

USE

MDT/OCL DE ECLIPSE

Lenguaje de consulta de modelos

Especificar invariantes y restricciones de integridad sobre las clases y los tipos de un modelo de clases uml

Especificar pre y poscondiciones de las operaciones

Describir guardas en las maquinas de estado

Especificar conjuntos de destinatarios de los mensajes y acciones de uml

Especificar restricciones en las operaciones

Especificar las reglas de derivacion de atributos y cuerpos de las operaciones

Expresan las condiciones que deben cumplir los metamodelos.

Son conocidas como invariantes.

Pueden ser definidas de entrada o salida

Es una restricción de uno o mas valores, o parte de ellos, en un modelo o sistema orientado a objetos.

Es formulada a nivel de clases.

Su semántica es aplicada a nivel de objeto.

Es una constraint que obliga a que un objeto tome un valor verdadero para completar su desarrollo.

Representan reglas para producir objetos o realizar tareas base en los sistemas orientados a objetos.

context <classifier>

inv [<constraint name>]: <boolean OCL expression>

La hora de inicio no debe ser mayor a la de término. context Reunión inv: self.horaFinalizacion > self.horaInicio

Un equipo solo puede ser formado por mayores de edad.

Es una restricción que especifica la aplicación y efecto de una operación.

Son agregadas a las operaciones en los diagramas de clases

Buscan completar de mejor forma la especificación de un sistema

Deben ser verdaderas para permitir la ejecución de ciertos métodos.

context <classifier> :: <operation> (<parameters>) pre [<constraint name>]: <boolean OCL expression>

Ejemplo:

Se puede agregar horas para cambiar el bloque de inicio y término de una reunión. context Reunion::cambiar(d:integer) pre: self.confirmada=false

Debe ser verdadera después de la ejecución de un método.

Indican el camino que deben seguir los efectos si son ejecutados.

context <classifier>::<operation> (<parameters>) context<classifier>::<operation> (<parameters>) post [<constraintname>]: <Boolean OCL expression>

Ejemplo: context Reunion::duracion():Integer post: resultado= self.horaFinalizacion

– self.horaInicio

context Reunion::confirmar() post: self.confirmada = true

context Meeting::shift(d:Integer) post: start = start@pre +d and end = end@pre + d

Son expresiones booleanas

Librería estándar: Tipos básicos : boolean, integer, real, string.

Colecciones:

Collection

Set

Ordered Set

Bag

Sequence

DataType.

Tipo Clase: Clasificadores

Generalizadores

Atributos

Métodos

Expresiones de navegaciones

Enumeraciones

Los roles finales de las relaciones son utilizados para navegar de un objeto a otro dentro del modelo.

Los navegadores deben ser tratados como atributos.

Los tipos de navegadores son: Definidos por el usuario (cuando la cardinalidad es uno)

Colección (cuando es mayor a uno)

Establecer que los moderadores son solo personas de genero femenino. context Reunion inv: self.moderador.genero = Genero::femenino

Una reunión debe tener mínimo 2 integrantes. context Reunion inv: self -> collect(participantes) -> size()>=2

Operaciones booleanas

If..else ..Endif

Operaciones de conjuntos.

Operaciones de iteración Any, collect, exists, forall, isUnique, one, select, reject, sortedBy

Una reunión de equipo ha sido organizado para todo el equipo. context ReunionEquipo: inv: participantes -> forAll(Equipo=self.para)

Opine: context ReuniónEquipo::numeroParticipantes():Integer post:

result=reuniones->size()

context MiembroEquipo::numeroConfirmados():Integer post: result=reuniones -> select( confirmado)->size()

Descargue el documento. Tarea OCL desde la plataforma.

Construya en grupo (3 int.) las siguientes restricciones en OCL: Solo se pueden añadir unidades físicas al carrito si el numero de

unidades solicitadas no sobrepasa el stock actual.

Una vez que se confirma la venta se debe ejecutar la operación decrementar stock.

Cada vez que se compra un producto del tipo “descargable” se incrementa el numero de descargas.

Si el cliente carga nuevamente el mismo producto en el carrito este debe actualizarse en stock pero no repetirse.

Cada vez que se ingresa un producto nuevo el tipoDeIVA se actualiza según el precio del producto.