Ingeniero
• Un lenguaje formal textual para definir restricciones sobre objetos • Usos
– Modelo conceptual: Restricciones adicionales al modelo gráfico – Modelo de operaciones: Definición formal de condiciones (pre-, posty disparadores) – Modelo de objetivos: Definición formal de objetivos (aunque habría que extenderlo con operadores temporales) – Diseño
• Diagrama de Clases • Contratos
– Navegación de modelos estructurales
1
OCL en el Modelo Conceptual
• El diagrama de clases suele ser insuficientemente expresivo:
– Muchas veces, se cuelan instanciaciones del diagrama que no condicen con un estado deseable del sistema
• OCL brinda
– mayor expresividad para definir qué estados son válidos
– (i.e., hay una signatura que sedesprende del modelo de clases)
• El vocabulario de OCL depende del modelo de clases • Estructura de aserciones OCL en el MC
– Un contexto: Donde la aserción se espera que sea verdadera – Un invariante: La aserción misma
2
Object Constraint Language
¿Cómo modelar los siguientes requerimientos?
• Posible número de dueños que un vehículo puede tener. • Edad requerida para los dueños deautos. • Toda persona deba tener al menos un auto negro.
3
Object Constraint Language
“El dueño de un auto debe tener al menos 18 años”
4
Object Constraint Language
¿Qué significa esto?
5
Object Constraint Language
“El dueño de un auto debe tener al menos 18 años”
6
Object Constraint Language
“Nadie tiene más de 3 vehiculos”
7
Object Constraint Language“Todos los vehiculos de una persona son negros”
Conjunción
8
Object Constraint Language
“Nadie tiene más de 3 vehículos negros”
Retorna un conjunto de vehículos
9
Object Constraint Language
“Ninguna persona menor a 18 años, posee un auto”
Retorna un conjunto de vehículos que no son autos
10
Object Constraint Language
“Existe un auto rojo”
11
Visión Semántica
• Una descripción MC/OCL está dada en los mismos términos que una descripción de MC
– Conjuntos de objetos con valores de atributos, relaciones entre conjuntos.
• La diferencia es la expresividad de OCL
– Podemos recortar modelos inválidos con más precisión
Semántica de prunning o de recorte: a medida que agregamos especificación recortamos las interpretaciones válidas de la especificaciónModelos con semántica de prunning: Modelo de objetivos, de operaciones
12
OCL: Resumen
• Especificación formal de invariantes de los objetos • Expresiones OCL utilizan vocabulario del modelo conceptual.
– El MC introduce una signatura para las aserciones OCL
• • • •
Predicados “navegan” el diagrama de clases. context especifica el elemento del cual se está hablando. selfindica el objeto actual. Soporte para predicar sobre colecciones (“->”)
– select, exists, size, forAll, etc…
13
Sintaxis
• Definida recursivamente a partir del modelo conceptual • Expresiones se construyen a partir de:
– Cada clase induce un tipo en el lenguaje – Constantes. Ej. ‘5’, ‘Rojo’ – Variables tipadas. Ej. x:Estudiante, y:Integer – Queries. – Atributos. Ej. Estudiante.nombre– Roles. Ej. Piloto.conduce – Tipos predefinidos y sus operaciones
• Tipos básicos:
– – – –
• Funciones sin efectos colaterales para especificaciones mas concisas)
• Comparadores de tipos básicos: , =, =>, =< • Colecciones: Set, Bag, Sequence
– ...
Integer: *, +, -, /, div(), abs(), mod(), max(), min(), sum(), sin(), cos() Real: *, +, -, /, floor(), sum(), sin(), cos()Boolean: and, or, xor, not, implies, if-then-else String:concat(), size(), substring(), toInteger() and toReal()
14
Clases introducen Tipos en OCL
Persona introduce un tipo nuevo a OCL
self es de tipo Persona
self.flota tiene tipo Colección de Vehículos
Devuelve el true si v es de tipo Auto
15
Colecciones
• OCL viene con tipos básicos parametricos para modelar colecciones...
Regístrate para leer el documento completo.