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

Post on 17-Apr-2015

104 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related