modelo de objetos odmg. odmg modelo de objetos odl oql

Post on 16-Apr-2015

198 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

ODMG

Identidade de Objeto

• OID– Mantida pelo sistema

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

• Uso para associações entre objetos

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)

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

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

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

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

ODMG

Tipo literal

• ODMG tem tipos Simples e Estruturados– Simples

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

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)

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

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

ODMG

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

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

– EXTENDS (comportamento e estado)

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

ODMG

Herança

• relacionamento de supertipo/subtipo

• Supertipo– Herança de Interface

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

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

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

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

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

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

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

ODMG

ODL – definição de classe

class <nome> {

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

}

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;

}

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

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

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

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)

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)

ODMG

ODL- tipos complexos

attribute [STRUCT] |[ENUM] <nome>

{ <declarações>}

<nome do atributo> ;

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

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

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

ODMG

ODL – chaves

• Key

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

{ ...

}

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

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.

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

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

ODMG

OQL

ODMG

OQL

• Object Query Language

• Tenta trabalhar como SQL num contexto OO

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

top related