modelo de objetos odmg. odmg modelo de objetos odl oql
Post on 16-Apr-2015
198 Views
Preview:
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