modelo de objetos odmg. odmg modelo de objetos odl oql

42
Modelo de Objetos ODMG

Upload: internet

Post on 16-Apr-2015

198 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

Modelo de Objetos ODMG

Page 2: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

• Modelo de objetos

• ODL

• OQL

Page 3: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

Modelo ODMG

1. Objetos2. Identidade de objeto3. Estado de objeto4. Comportamento de objeto5. Tipos de objeto6. Definição de tipo de objeto7. Tipos literais8. Propriedade de Objeto9. Herança10.Herança : relacionamento de Super/Subtipo11.Herança: relacionamento EXTENDS12.Herança: Late binding

Page 4: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 5: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

Identidade de Objeto

• OID– Mantida pelo sistema

• Atribuição automática e imutável

• Uso para associações entre objetos

Page 6: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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)

Page 7: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 8: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 9: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 10: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 11: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

Tipo literal

• ODMG tem tipos Simples e Estruturados– Simples

• Integer• Float/ Real• Boolean• Char• String• Octet

Page 12: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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)

Page 13: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 14: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 15: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

Herança• Particionamento de problema• Reutilização• 2 tipos

– relacionamento de supertipo/subtipo ( herança de comportamento)

– EXTENDS (comportamento e estado)

Page 16: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 17: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

Herança

• relacionamento de supertipo/subtipo

• Supertipo– Herança de Interface

• Uma classe deve ser interface• Não deve ter subtipo

Page 18: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 19: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 20: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 21: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 22: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 23: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

ODL

• Declaração de classe– Nome da classe– Declaração opcional de chave ( key)– Declaração extent– Declaração de element

• Attribute• Relationship• method

Page 24: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

ODL – definição de classe

class <nome> {

<lista de declaração de elementos separados por vírgulas>

}

Page 25: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

ODL – definição de classeclass Restaurante {

attribute string nome;

attribute string endereço;

relationship Set<Prato> serve inverse Prato::servidoEm; }

class Prato {

attribute string nome;

attribute string nacionalidade;

relationship Set<Restaurante> servidoEm inverse Restaurante::serve;

}

Page 26: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

ODL- tipos de relacionamento

• Classe : Restaurante

• Set<Restaurante> : conecta este objeto com conjunto de objetos Prato

• Bag<Restaurante>, List<Restaurante>, Array<Restaurante> : o object é conectado a bag,list, array de objetos Restaurante

Page 27: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

ODL - relacionamentos• Sempre binários• Muitos-para-muitos

– SET<> para o tipo de relacionamento e o seu “inverso”

• Muitos-para-um– Set<> no relacionamento para classe-única e

apenas a classe para a classe-“muitos”

• Um-para-um– Tem classes no tipo em ambas direções

Page 28: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

ODL - relacionamentosclass Consumidor {relationship Set<Produto> compra inverse

Produto::frequente; relationship Produto sempreCompra inverse

Produto::favorito;}

class Produto {relationship Set<Consumidor> frequente inverse Consumidor::compra;

relationship Set<Consumidor> favorito inverse Consumidor::sempreCompra;

}

Muitos para muitos

Um-para-

muitos

Page 29: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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)

Page 30: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

ODL - relacionamentosclass CPP {

attribute preço : real;

relationship Restaurante oRest inverse Restaurante::comCPP;

relationship Produto umProd inverse Produto::comCPP;}

Será preciso alterar Restaurante e Produto para inlcuir relacionamentos comCPP e ambos do tipo SET(comCPP)

Page 31: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

ODL- tipos complexos

attribute [STRUCT] |[ENUM] <nome>

{ <declarações>}

<nome do atributo> ;

Page 32: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 33: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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 {...}

Page 34: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 35: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

ODL – chaves

• Key

Class Restaurante ( key CNPJ, (telefone,IE))

{ ...

}

Page 36: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 37: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

OQL –Expressões de caminho

• Seja x um objeto da classe C

1. 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.

Page 38: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

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

Page 39: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

OQL

• Computar relações como coleções

SELECT <lista de valores>

FROM <lista de coleções e nome para os membros>

WHERE <condição>

• Onde coleção pode ser :– Extent de qualquer classeExpressão avaliada

de uma coleção

Page 40: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

OQL

Page 41: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

ODMG

OQL

• Object Query Language

• Tenta trabalhar como SQL num contexto OO

Page 42: Modelo de Objetos ODMG. ODMG Modelo de objetos ODL OQL

Referê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_Management_Group