Title: Modelo de Objetos ODMG
1Modelo de Objetos ODMG
2ODMG
- Modelo de objetos
- ODL
- OQL
3Modelo ODMG
- Objetos
- Identidade de objeto
- Estado de objeto
- Comportamento de objeto
- Tipos de objeto
- Definição de tipo de objeto
- Tipos literais
- Propriedade de Objeto
- Herança
- Herança relacionamento de Super/Subtipo
- Herança relacionamento EXTENDS
- Herança Late binding
4ODMG Objeto
- Instância de tipo
- Tem estado valor de seu atributo
- Tem identidade
- Subtipo
- Mutabilidade
- instância de tipo object mutável
- Instância de tipo literal imutável
- Encapsula estado e comportamento
- Semântica rica e integridade
5ODMG Identidade de Objeto
- OID
- Mantida pelo sistema
- Atribuição automática e imutável
- Uso para associações entre objetos
6ODMG Estado de objeto
- Armazenado na atributo/propriedade do objeto
- Objeto attribute
- Tem nome e valor
- Sem OID
- Vinculado a um objeto com OID
- podem ser keys ( mantidas pelo usuário)
7ODMG Estado de objeto
- Relacionamento
- Associação entre entidades (objetos)
- Descrito por até 2 nomes
- o primeiro é o caminho do relacionamento
- O segundo, opcional, é o caminho inverso
- Não possui OID
- existe sse sobre um objeto com OID
8ODMG Comportamento de objeto
- Coleção de operações oferecidas na interface
- Operação tem
- valores de parâmetros
- Valores de retorno
- Executa tratamento de exceção
9ODMG Tipos de Objeto
- Instâncias de objetos
- Descrição da interface do objeto
- Várias implementações possÃveis
- Representação ( conjunto de estruturas de dados)
- métodos ( corpo de procedimentos)
- UML ou ODL
10ODMG Tipo de definição de objeto
- interface do objeto
- incompleta se operações não são definidas
- Insuficiente para criar objeto
- Classe de implentação
- Definição completa
- Pode ser instanciada
11ODMG Tipo literal
- ODMG tem tipos Simples e Estruturados
- Simples
- Integer
- Float/ Real
- Boolean
- Char
- String
- Octet
12ODMG Tipo literal
- Estruturados construÃdos sobre tipos literais.
- Date
- Time
- Timestamp
- Interval
- Imutáveis
- Novos tipos type generator
- Especifica apenas estado
- não comportamento ( operações)
13ODMG Propriedades de objeto
- Noção de tipo
- Supertipo
- Extensão
- Chave
- Propriedade de instância
- Attribute tem nome e tipo
- Relashionship tem caminho e multiplicidade
- Não tem nome, mas o caminho sim
- OID do objeto associado
14ODMG Propriedades de objeto
- Operação de instância
- Nome
- Valor de retorno
- Assinatura ( composição de tipos de parâmetros,
tipo do retorno e exceções) - Semântica padrão definida pela implementação ,
senão, por fórmula
15ODMG Herança
- Particionamento de problema
- Reutilização
- 2 tipos
- relacionamento de supertipo/subtipo ( herança de
comportamento) - EXTENDS (comportamento e estado)
16ODMG Herança
- relacionamento de supertipo/subtipo
- Subtipo
- Um ou mais supertipos automatic.
- Herda tudo ( operação, atributo, relacion.)
- Pode haver redefinição ou adição de outras
caracterÃsticas - O objeto é uma instância de seus tipos e
supertipos
17ODMG Herança
- relacionamento de supertipo/subtipo
- Supertipo
- Herança de Interface
- Uma classe deve ser interface
- Não deve ter subtipo
18ODMG Herança
- relacionamento de supertipo/subtipo
- Supertipo
- Herança de Interface
- Uma classe deve ser interface
- Não deve ter subtipo
- Herança múltipla é possÃvel
- Mais de um supertipo
19ODMG Relacionamento EXTENDS
- Especializar uma classe
- Reuso da interface e implementação
- Herança múltipla aqui não é possÃvel
- Contudo pode haver mais de 1 supertipo
20ODMG Late Binding
- Operações podem ser sobrecarregadas
- Mesmo nome, mesma assinatura com diferente
implementação - Se esta operação usa relacionamento EXTENDS
implementação do tipo especÃfico será selecionada
em tempo de execução
21ODMG Entidades Compostas
- Outros tipos de objetos
- Classe é tipo básico
- Relacionamento só pode derivar de classe
- Tipo Coleção/ estruturas
- Set
- Bag
- List
- Array
- Dictionary
- Definidos por collection type generator
22ODMG ODL
- Object Definition Language
- Equivale a CREATE TABLE no SQL
- Definir classes persistentes
- Objetos que permanecem armazenados
- Definição é parte da linguagem OO host do BD
23ODMG ODL
- Declaração de classe
- Nome da classe
- Declaração opcional de chave ( key)
- Declaração extent
- Declaração de element
- Attribute
- Relationship
- method
24ODMG ODL definição de classe
- class ltnomegt
- ltlista de declaração de elementos separados
por vÃrgulasgt
25ODMG ODL definição de classe
- class Restaurante
- attribute string nome
- attribute string endereço
- relationship SetltPratogt serve inverse
PratoservidoEm - class Prato
- attribute string nome
- attribute string nacionalidade
- relationship SetltRestaurantegt servidoEm
inverse Restauranteserve
26ODMG ODL- tipos de relacionamento
- Classe Restaurante
- SetltRestaurantegt conecta este objeto com
conjunto de objetos Prato - BagltRestaurantegt, ListltRestaurantegt,
ArrayltRestaurantegt o object é conectado a
bag,list, array de objetos Restaurante
27ODMG ODL - relacionamentos
- Sempre binários
- Muitos-para-muitos
- SETltgt para o tipo de relacionamento e o seu
inverso - Muitos-para-um
- Setltgt no relacionamento para classe-única e
apenas a classe para a classe-muitos - Um-para-um
- Tem classes no tipo em ambas direções
28ODMG ODL - relacionamentos
- class Consumidor
- relationship SetltProdutogt compra inverse
Produtofrequente - relationship Produto sempreCompra inverse
Produtofavorito - class Produto
- relationship SetltConsumidorgt frequente inverse
Consumidorcompra - relationship SetltConsumidorgt favorito inverse
ConsumidorsempreCompra -
Muitos para muitos
Um-para- muitos
29ODMG ODL
- Se há necessidade
- criar uma classe de conexão
- os objetos representam tuplas de objetos que se
deseja conectar - Ex. Conectar classe Consumidor, Produto e Preço
- Criar classe de conexão CPP
- Considere que cada produto tem um preço em cada
estabelecimento ( preço não é atributo de produto)
30ODMG ODL - relacionamentos
- class CPP
- attribute preço real
- relationship Restaurante oRest inverse
RestaurantecomCPP - relationship Produto umProd inverse
ProdutocomCPP -
- Será preciso alterar Restaurante e Produto para
inlcuir relacionamentos comCPP e ambos do tipo
SET(comCPP)
31ODMG ODL- tipos complexos
- attribute STRUCT ENUM ltnomegt
- ltdeclaraçõesgt
- ltnome do atributogt
32ODMG ODL- tipos complexos
- Class Restaurante
- attribute string nome
- attribute STRUCT end
- string rua, string cidade, string uf
endereco - attribute ENUM lic
- boate, nenhuma, bar licença
33ODMG ODL - subclasse
- Equivalente à LPOO
- Indicar superclasse com vÃrgula e nome
- subclasse lista apenas suas propriedades
- Herda as propriedades da superclasse
- Ex.
- class BarX Restaurante ...
34ODMG ODL declarar método
- Tipo de retorno, se houver
- Nome de método
- Modo de argumentos e tipos (sem nome)
- Modos In / out / inout
- Exceção, se houver
- Ex. real fecharConta ( in string) raise
(semProduto)
35ODMG ODL chaves
- Key
- Class Restaurante ( key CNPJ, (telefone,IE))
- ...
36ODMG OQL
- Object Query Language
- Consulta no padrão OO
- Usa ODL como esquema de definição
- Tipos em OQL são os de ODL
- Tipos SET e BAG seguem a regra das relações
37ODMG OQL Expressões de caminho
- Seja x um objeto da classe C
- Se a é um atributo de C então
- x.a é o valor desse atributo
- 2. SE r é um relacionamento de C então
- x.r é o valor para o qual x está conectado a r.
- Resposta pode ser objeto ou um conjunto de
objetos, dependendo do tipo de r - 3. SE m é um método de C ENTÃO
- x.m() é resultado da aplicação de m em x.
38ODMG OQL
- Ex. Seja s uma variável do tipo CPP, objeto
Produto-Consumidor-Preço - s.preço preço no objeto s
- s.restaurante.endereco
39ODMG OQL
- Computar relações como coleções
- SELECT ltlista de valoresgt
- FROM ltlista de coleções e nome para os membrosgt
- WHERE ltcondiçãogt
- Onde coleção pode ser
- Extent de qualquer classeExpressão avaliada de
uma coleção
40ODMG OQL
41ODMG OQL
- Object Query Language
- Tenta trabalhar como SQL num contexto OO
42Referências
- SETZER- Projetos de BDOO
- ELMARSI/ NAVATHE- Sistemas de BD
- ULLMAN Notas de aula
- http//is.twi.tudelft.nl/szivan/oodbs/tit.html
- http//en.wikipedia.org/wiki/Object_Database_Manag
ement_Group