novembro de 20011 ocl object constraint language puc-pr - mestrado em informática aplicada...

24
Novembro de 2001 1 OCL OCL Object Constraint Object Constraint Language Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara Mestrandos Irani Martins Souza e Hugo Eduardo Simião

Upload: internet

Post on 17-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 2: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 3: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 4: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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.

Page 5: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 6: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 7: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 8: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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()

Page 9: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 10: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

Novembro de 2001 10

OCL - Object Constraint LanguageOCL - Object Constraint Language

Page 11: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

Novembro de 2001 11

Modelo UMLModelo UML

Page 12: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 13: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

Novembro de 2001 13

Exemplos OCLExemplos OCL

•AssociaçõesQuanto ao número de empregadores de determinada pessoa:

Person self.employer -> size self.employer -> isEmpty

Page 14: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 15: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 16: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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))

Page 17: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 18: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

Novembro de 2001 18

Exemplos OCLExemplos OCL

•Navegação de uma Classe de Associações

Job self.employer self.employee

Page 19: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

Novembro de 2001 19

Exemplos OCLExemplos OCL

•Navegação através de Assiciações Qualificadas

Bank self.customer self.customer[8764423]

Page 20: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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)}

Page 21: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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

Page 22: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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)

Page 23: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

Novembro de 2001 23

Exemplos OCLExemplos OCL

• Collect

Company

self.employee -> collect (birthDate)

Company

self.employee.birthDate

Page 24: Novembro de 20011 OCL Object Constraint Language PUC-PR - Mestrado em Informática Aplicada Disciplina de Orientação a Objetos Prof. Dr. Alcides Calsavara

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