45
II- Padrão ODMG II- Padrão ODMG Object Definifion Language Object Definifion Language - ODL - ODL

II- Padrão ODMG Object Definifion Language - ODL

Embed Size (px)

Citation preview

Page 1: II- Padrão ODMG Object Definifion Language - ODL

II- Padrão ODMGII- Padrão ODMGII- Padrão ODMGII- Padrão ODMG

Object Definifion Language - Object Definifion Language - ODLODL

Page 2: II- Padrão ODMG Object Definifion Language - ODL

II.1 O Modelo de II.1 O Modelo de ObjetoObjeto

II.1 O Modelo de II.1 O Modelo de ObjetoObjeto

Page 3: II- Padrão ODMG Object Definifion Language - ODL

ConceitosClasse Interface

[Atributo]  [Atributo]

[Relacionam.]  [Assinatura de

Método] [Assinatura de

Método]

[Chave]  Repositório  [Herança] [Herança]

Page 4: II- Padrão ODMG Object Definifion Language - ODL

Classe e Interface• Toda classe é concreta

– Repositório é o único elemento obrigatório

• Toda interface é abstrata– Classe abstrata (UML)

Page 5: II- Padrão ODMG Object Definifion Language - ODL

Atributo Coleção• Uma coleção pode ser set, bag, list, array

– Um conjunto (set) tem elementos desordenados, e somente uma ocorrência de cada elemento

– Um bag permite mais de uma ocorrência de um elemento, mas as ocorrências ainda são desordenadas

– Uma lista (list) permite mais de uma ocorrência de um elemento, mas as ocorrências são ordenadas

– Um array é uma lista com tamanho máximo pré-determinado

Page 6: II- Padrão ODMG Object Definifion Language - ODL

Ordem Repetiç

ãoTamanh

o

Set

Bag

List

Array

Page 7: II- Padrão ODMG Object Definifion Language - ODL

• {1, 2, 1} e {2, 1, 1} são um

mesmo bag • {1, 2, 1} e {2, 1, 1} não são a

mesma lista

Page 8: II- Padrão ODMG Object Definifion Language - ODL

Relacionamento• Relacionamentos são entre classes

e binários – Dois objetos de classes diferentes ou

da mesma classe são associados de alguma forma

– Explicitamente representados por um par de referências inversas

Page 9: II- Padrão ODMG Object Definifion Language - ODL
Page 10: II- Padrão ODMG Object Definifion Language - ODL

Método• Somente assinatura de métodos (nome do

método, parâmetros, exceções) é conceito do modelo– O corpo de um método pode ser implementado

usando qualquer linguagem de programação OO (Java, C++, PL/SQL etc)

• Métodos do tipo get_atributo() (métodos observer) e do tipo set_atributo() (métodos mutator) são

implicitamente definidos

Page 11: II- Padrão ODMG Object Definifion Language - ODL

Chave• Uma classe pode ter uma ou mais

chaves (key(s))• Uma chave pode também ser

definida por um relacionamento ou um método– Um relacionamento ou um método

podem fazer parte de uma chave composta

Page 12: II- Padrão ODMG Object Definifion Language - ODL

Repositório• A toda classe, deve ser definido

um repositório (extent)

Page 13: II- Padrão ODMG Object Definifion Language - ODL

Herança• Uma classe pode herdar de uma única

classe (class extends class) • Uma classe pode herdar de múltiplas

interfaces (class implements interface) • Uma forma limitada de herança

múltipla– Uma classe e várias interfaces

Page 14: II- Padrão ODMG Object Definifion Language - ODL
Page 15: II- Padrão ODMG Object Definifion Language - ODL
Page 16: II- Padrão ODMG Object Definifion Language - ODL

Omissões do Modelo

• Não tem o conceito de relacionamento agregação / composição

• Não tem o conceito de relacionamento ternário

• Não tem o conceito de método de classe– Não é propriamente um defeito!

• Conceito limitado de herança múltipla• Não tem o conceito de classe de

associação

Page 17: II- Padrão ODMG Object Definifion Language - ODL

II.2 A Linguagem ODL

• Interface interface Métodos_Filme

{ float duração_em_horas() raises(duração não encontrada)/* converte duração em min para duração em hh:min */; nomes_estrelas(out Set<Estrela>)/* retorna o conjunto das estrelas de um filme */; nome_estúdio(out string) raises (estúdio não encontrado)/* retorna o nome do estúdio que realizou o filme */; ...};

Page 18: II- Padrão ODMG Object Definifion Language - ODL

Classe• Classes nativas

– Integer– Float– String– Boolean– Date– Enumeration– Struct– Collection– XML

Page 19: II- Padrão ODMG Object Definifion Language - ODL

class Filme : Métodos_Filme(extent Filmes key (título, ano)) { attribute string título; attribute integer ano; attribute integer duração; attribute enumeration Cor{colorido, preto-e-branco} corfilme;relationship Set<Estrela> estrelado_por inverse Estrela::estrelou_em;relationship Estúdio realizado_por inverse Estúdio::realizou;}

Page 20: II- Padrão ODMG Object Definifion Language - ODL

• A classe Filme podia ter sido

definida sem a interface, isto é, com todos os métodos definidos dentro da classe

Page 21: II- Padrão ODMG Object Definifion Language - ODL

class Estrela : Métodos_Estrela

(extent Estrelas key nome){ attribute string nome; attribute Struct End {string rua, string cidade} endereço; relationship Set<Filme> estrelou_em inverse Filme::estrelado_por;}

Page 22: II- Padrão ODMG Object Definifion Language - ODL

class Estúdio : Métodos_Estúdio

(extent Estúdios key nome){ attribute string nome; attribute Estrela::End endereço; relationship Set<Filme> realizou inverse Filme::realizado_por;}

Page 23: II- Padrão ODMG Object Definifion Language - ODL

• Pergunta: A estrutura End poderia

ser definida como uma interface? Como?

Page 24: II- Padrão ODMG Object Definifion Language - ODL

Atributo Coleção• Attribute Bag<tipo_do_elemento>

atrib• Attribute List<tipo_do_elemento>

atrib • Attribute Array<tipo_do_elem, N>

atrib

Page 25: II- Padrão ODMG Object Definifion Language - ODL

Atributo versus Relacionamento

• Attribute List<float> é legal• Relationship List<float> é ilegal• Attribute List<Filme> é ilegal• Relationship List<Filme> é legal• Relationship só pode envolver classe

definida pelo usuário (classe), por exemplo Relationship List<Filme>

• Attribute só pode envolver classes nativas

Page 26: II- Padrão ODMG Object Definifion Language - ODL

Relacionamento Ternário?

Page 27: II- Padrão ODMG Object Definifion Language - ODL

• Como determinar a multiplicidade

de um relacionamento ternário?– Agregando duas classes, por vez

• Filme-Estrela, Estúdio• Filme-Estúdio, Estrela• Estrela-Estúdio, Filme

– Não conseguimos raciocinar ternariamente

Page 28: II- Padrão ODMG Object Definifion Language - ODL

• Como ODL não oferece relacionamento

ternário, devemos usar uma regra de transformação 1 relacionamento ternário 3 relacionamentos binários– O relacionamento é elevado a classe

• Eventuais perdas de informação decorrentes da transformação devem ser supridas com regras de integridade

Page 29: II- Padrão ODMG Object Definifion Language - ODL

Filme Estrela

Estúdio

ContratoValor NM

P

A chave de Contrato éFilme-Estrela-Estúdio

o_filme a_

estre

la

o_estúdio

Page 30: II- Padrão ODMG Object Definifion Language - ODL

• Definição da classe Contrato

Class Contrato(extent Contratos key (o_filme, a_estrela, o_estudio)) { attribute float valor; relationship Filme o_filme inverse …; relationship Estrela a_estrela inverse …; relationship Estudio o_estudio inverse …;};

Page 31: II- Padrão ODMG Object Definifion Language - ODL

• Na classe Filme

• Na classe Estrela

• Na classe Estúdio

Relationship Set<Contrato> contratos inverse Contrato::o_filme;

Relationship Set<Contrato> contratos inverse Contrato::a_estrela;

Relationship Set<Contrato> contratos inverse Contrato::o_estúdio;

Page 32: II- Padrão ODMG Object Definifion Language - ODL

• De um modo geral

– Suponha uma relacionamento ternário R entre as classes C1, C2 e C3. Podemos substituir R por uma classe C e 3 relacionamentos binários N:1 de C (N) para cada uma das Ci (1). Os atributos de C são os atributos do relacionamento ternário. C também se relaciona com cada Ci

Page 33: II- Padrão ODMG Object Definifion Language - ODL

Herança de Classe

• Como interpretar o relacionamento Des_Animado estrelado-por Estrela?

class Des_Animado extends Filme {... relationship Set<Estrela> dublado_por; ...}; 

Page 34: II- Padrão ODMG Object Definifion Language - ODL

Herança de Classe / Interface

• Class C2 : I1 : I2 : I3 extends C1– Uma forma limitada de herança

múltipla

Page 35: II- Padrão ODMG Object Definifion Language - ODL

Regras de Integridade• Chave. Dado o conjunto de

atributos-chave de uma classe, não pode haver dois objetos da classe com o mesmo valor da chave, e o valor da chave deve ser obrigatoriamente informado, quando da criação do objeto

Page 36: II- Padrão ODMG Object Definifion Language - ODL

• Valor opcional. Todos os

atributos/relacionamentos de uma classe que não são chave são opcionais, isto é, seus valores não precisam ser obrigatoriamente informados. Cabe aos projetistas definir como indicar que o valor de um atributo não é informado– enumeration Cor{preto_e_branco, colorido, null}

corfilme– integer duração /* um valor negativo informa que a

duração de um objeto da classe Filme não é informada */

Page 37: II- Padrão ODMG Object Definifion Language - ODL

• Par de Referências Inversas. Garante que,

se um objeto x de uma classe A aponta para um objeto y de uma classe B A e B não necessariamente diferentes então y aponta para x, e y não apontará para nenhum objeto da classe A que não aponte para ele. O par de referências inversas permite a correta navegação de A para B, e de B para A

Page 38: II- Padrão ODMG Object Definifion Language - ODL

• Integridade Referencial. A única forma de

garantir integridade referencial é definindo pares de referências inversas. A garantia é restrita: se dois objetos apontam um para o outro (ciclo), nenhum dos dois pode ser destruído individualmente, pois romperia o ciclo; a única possibilidade é a destruição dos dois ‘ao mesmo tempo’ (dentro de uma transação)

Page 39: II- Padrão ODMG Object Definifion Language - ODL

• Integridade de domínio. Classes nativas e

classes definidas pelo usuário• Regras Gerais. ODL não tem nada como uma

linguagem de definição de regras gerais de integridade (por exemplo, "salário maior que o mínimo", "um gerente não pode ganhar menos que seus subordinados", etc). As regras de integridade devem ser embutidas, pelos projetistas, nos corpos dos métodos construtores

Page 40: II- Padrão ODMG Object Definifion Language - ODL

Exercícios• Suponha que conceitualmente

você tem um array, mas o modelo lógico objeto-relacional só oferece o tipo tabela, que é um bag ou um conjunto. Explique como você simularia o array como um bag ou um conjunto

Page 41: II- Padrão ODMG Object Definifion Language - ODL

• Dado um pedido de compra Código Cliente Data_emissão Data_entrega Linha Item Quantidade Total Parcial xx xxx xx xx.xxx,xx xx xxx xx xx.xxx,xx ... xx xxx xx xx.xxx,xx Total Geral: xxx.xxx,xx

definir a classe ODL PedidoDeCompra

Page 42: II- Padrão ODMG Object Definifion Language - ODL

• Descreva em ODL a classe

Empregado, com os atributos matricula, nome, salario e gerente. A classe deve ter obrigatoriamente um método que encontra a matrícula, o nome e o salário do gerente de um empregado

Page 43: II- Padrão ODMG Object Definifion Language - ODL

• Considere o seguinte

diagrama UML

Imagine que A é Fornecedor, B é Produto, e Associação é Fornecimento. Descreva este diagrama de classes em ODL. Este exercício serve para mostrar que Classe Associação é um conceito dispensável, ou não essencial

Page 44: II- Padrão ODMG Object Definifion Language - ODL

• Crie uma classe-ODL, Calendário, fazendo

observar as particularidades dos ambientes onde um calendário é aplicado. Exemplos:– Calendário comercial - Dias úteis: de segunda a

sexta, menos os feriados;– Calendário hospitalar - Dias úteis: todos os dias;– Calendário escolar - de segunda a sexta, menos

os feriados, e eventualmente sábado; exceções: todo o mês de janeiro e todo o mês de julho

Page 45: II- Padrão ODMG Object Definifion Language - ODL

• Defina a classe Pessoa, incluindo a

árvore genealógica