420 likes | 647 Views
Modelo de Objetos ODMG. ODMG. Modelo de objetos ODL OQL. Modelo 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
E N D
ODMG • Modelo de objetos • ODL • OQL
Modelo 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
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 classe class 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 - relacionamentos class 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 - relacionamentos class 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 • 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 • 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