novembro de 20011 ocl object constraint language puc-pr - mestrado em informática aplicada...
TRANSCRIPT
Novembro de 2001 1
OCLOCLObject Constraint LanguageObject Constraint Language
PUC-PR - Mestrado em Informática AplicadaDisciplina de Orientação a Objetos
Prof. Dr. Alcides Calsavara
Mestrandos Irani Martins Souza e Hugo Eduardo Simião
Novembro de 2001 2
Introdução:Introdução:
A OCL foi criada por Jos Warmer da IBM (Holanda), como uma linguagem para a modelagem de negócios. Ela é derivada do método SYNTROPY de Steve Cook e John Daniels.
OCL é uma linguagem que complementa a UML, permitindo formalizar a semântica da linguagem propriamente dita e fornecendo maneiras de expressar precisa e formalmente as restrições de uma estrutura de modelos.
OCL permite ao desenvolvedor criar um conjunto de regras altamente específicas, que definem o aspecto de um objeto individual.
OCL - Object Constraint LanguageOCL - Object Constraint Language
Novembro de 2001 3
O que a OCL é:O que a OCL é:
• uma linguagem textual de modelagem, expressiva e formal
O que a OCL não é:O que a OCL não é:
• uma linguagem de programação
Por que usar a OCL?Por que usar a OCL?
• os modelos gráficos não são suficientes para uma especificação precisa e sem ambiguidade
• as linguagens formais tradicionais não são muito “amigáveis”
OCL - Object Constraint LanguageOCL - Object Constraint Language
Novembro de 2001 4
OCL - Object Constraint LanguageOCL - Object Constraint Language
Características da OCL:Características da OCL:
Especificamente a OCL suporta expressões de invariantes, pré e pós condições, permitindo ao modelador definir restrições precisas de comportamento para um modelo, sem estar envolvido em detalhes de implementação. A OCL foi desenvolvida com o objetivo de descrever regras de negócio e evitar ambigüidades em modelos gráficos de orientação a objetos.
Novembro de 2001 5
OCL - Object Constraint LanguageOCL - Object Constraint Language
Características da OCL:Características da OCL:
•as expressões OCL são fáceis de ler e de escrever. Mesmo pessoas com pouca base matemática não têm dificuldade para aprender e utilizar a OCL • na OCL cada expressão é conceitualmente atômica• todas as construções têm um significado definido formalmente• OCL é baseada na Lógica de Predicados e na Teoria das Séries (Set Theory)• as expressões OCL não têm efeitos colaterais no modelo, podem ser avaliadas quanto à sintaxe e semântica, mas nem todas podem ser executadas diretamente• as expressões OCL exigem tipos de dados concordantes e devem utilizar apenas caracteres ASCII
Novembro de 2001 6
OCL - Object Constraint LanguageOCL - Object Constraint Language
Onde usar a OCL:Onde usar a OCL:
• para especificar invariantes nos modelos de Classe• para especificar tipos nos modelos de Classe• para especificar tipos de invariantes para Estereótipos• para descrever pré e pós-condições em Operações• para descrever pré e pós-condições em Métodos• para descrever alertas (Guards)• como uma linguagem de navegação• para especificar restrições em Operações
Novembro de 2001 7
OCL - Object Constraint LanguageOCL - Object Constraint Language
História:História:
• 1996 - OMG requisitou propostas sobre Análise e Projeto baseados em Objetos• 1997 (janeiro) - IBM e Object Time Ltd apresentaram uma proposta que incluía a OCL• 1997 (agosto) - Liberada a versão 1.1 da OCL• 2001 (agosto) - OMG requisitou propostas para a versão 2.0 da OCL• 2001 (dezembro) - prazo final para apresentação das propostas requeridas em agosto
Novembro de 2001 8
OCL - Object Constraint LanguageOCL - Object Constraint Language
Estrutura da LinguagemEstrutura da Linguagem
OCL não provê uma sintaxe especial para cada construção da linguagem. Em vez disso, ela usa um conceito:
Comece com um objeto, avalie uma propriedade (atributo, operação ou navegação) do objeto, a qual resulta em um novo objeto (ou uma coleção de objetos, que é um objeto também). Neste objeto resultante se pode avaliar outra propriedade, que resulta em outro objeto, etc.
A estrutura básica é:
object.property.aPropertyOnTheResult(...).yetAnotherProperty()
Novembro de 2001 9
Examples of OCL-expressionsExamples of OCL-expressions
The context of example expressions is written with underlined text.
Personwife.nameEvaluates to the name of a persons wife
Personchildren->Select(age>7)Evaluates to the list of persons who happen to be the children of the original person and is older than seven years.
Companyemployees->union(Employees.Spouse)->union(Employees.Children)Evaluates to the entire families of the employees of a company.
OCL - Object Constraint LanguageOCL - Object Constraint Language
Novembro de 2001 10
OCL - Object Constraint LanguageOCL - Object Constraint Language
Novembro de 2001 11
Modelo UMLModelo UML
Novembro de 2001 12
Exemplos OCLExemplos OCL
•Atributos
A idade de uma pessoa deve ser maior ou igual a 0: Person self.age >= 0
•AssociaçõesQuem é o Gerente e quais os Empregados de uma Companhia:
Company self.manager self.employee
Novembro de 2001 13
Exemplos OCLExemplos OCL
•AssociaçõesQuanto ao número de empregadores de determinada pessoa:
Person self.employer -> size self.employer -> isEmpty
Novembro de 2001 14
Exemplos OCLExemplos OCL
•Pessoas Casadas com Idade maior ou igual a 18:
self.wife -> notEmpty implies self.wife.age >= 18 and
self.husband -> notEmpty implies self.husband.age >= 18
Novembro de 2001 15
Exemplos OCLExemplos OCL
•As companhias que tenham 50 empregados ou menos:
self.employee -> size <= 50
•Uma relação de casamento deve acontecer entre um homem(Marido) e uma mulher (Esposa):
self.wife.sex = # female and self.husband.sex = # male
Novembro de 2001 16
Exemplos OCLExemplos OCL
•Uma pessoa não pode ser ao mesmo tempo Esposa e Marido:
not ((self.wife -> size = 1) and (self.husband -> size = 1))
Novembro de 2001 17
Exemplos OCLExemplos OCL
•Navegação para uma Classe de AssociaçõesO conjunto dos trabalhos de uma pessoa com as companhias que o emprega:
Person self.job
Novembro de 2001 18
Exemplos OCLExemplos OCL
•Navegação de uma Classe de Associações
Job self.employer self.employee
Novembro de 2001 19
Exemplos OCLExemplos OCL
•Navegação através de Assiciações Qualificadas
Bank self.customer self.customer[8764423]
Novembro de 2001 20
Exemplos OCLExemplos OCL
• Conjuntos Set, conjunto que não contêm elementos duplicados
Ex: Set{1,2,3,5,7,11,13,17}
Bag, semelhante a Set, porém pode conter elementos duplicados
Ex: Bag{1,3,4,3,5} Sequence, semelhante a Bag, porém os elementos são
ordenados Ex: Sequence{1,2,3,4,5,6,7,8,9,10} Sequence{1..10} Sequence{1..(6+4)}
Novembro de 2001 21
Exemplos OCLExemplos OCL
• Pré e Pós Condições:
Company : : hireEmployee(p : Person)
pre: not employee -> includes(p)
post: employee -> includes(p) and
stockprice() = stockprice@pre() + 10
Novembro de 2001 22
Exemplos OCLExemplos OCL
• Select , Reject e Collect
Select, retorna um conjunto para os quais o resultado da expressão seja verdadeiro:
Company
self.employee -> select (age > 50)
Reject, retorna um conjunto para os quais o resultado da expressão seja falso:
Company
self.employee -> reject(isMarried)
Novembro de 2001 23
Exemplos OCLExemplos OCL
• Collect
Company
self.employee -> collect (birthDate)
Company
self.employee.birthDate
Novembro de 2001 24
BibliografiaBibliografia
[1] Reflections on the Object Constraint Language; Ali Hamie, et al;
University of Brighton
[2] Object Constraint Language Specification - Version 1.1; W3C Consortium; September 1997
[3] On the Expressive Power of the Object Constraint Language OCL; Luis Mandel, Maria Victoria Cengarle; München, Alemanha
[4] Response to the UML 2.0 OCL ; RfP (ad/2000-09-03); OMG Document ad/2001-08-01; Submitters: Boldsoft, Rational Software Corporation, IONA, August 2001