Modelo Objecto

15
ODMG 1 Modelo Objecto Modelo Objecto ODMG objecto: primitiva base tipo: definição das propriedades e comportamento comuns a um conjunto de objectos propriedades: estado (atributos ou associações) operações: comportamento herança: hierarquias de generalização

description

Modelo Objecto. Modelo Objecto ODMG objecto : primitiva base tipo : definição das propriedades e comportamento comuns a um conjunto de objectos propriedades: estado (atributos ou associações) operações: comportamento herança: hierarquias de generalização. Métodos. - PowerPoint PPT Presentation

Transcript of Modelo Objecto

Page 1: Modelo Objecto

ODMG 1

Modelo Objecto Modelo Objecto ODMG

objecto: primitiva base

tipo: definição das propriedades e comportamento comuns a um conjunto de objectos

propriedades: estado (atributos ou associações)

operações: comportamento

herança: hierarquias de generalização

Page 2: Modelo Objecto

ODMG 2

Métodos BDOO: integração linguagem de dados e linguagem hospedeira

ODL suporta definição de assinaturas de métodos

implementação na linguagem hospedeira (Smalltalk, C++, Java); na interface fica só a assinatura, i.e., nomes e tipos dos parâmetros e da função

ligação forte entre ODL e a linguagem hospedeira, com tradução directa e acesso às mesmas variáveis

OQL define as interrogações mais baseadas em conjuntos (“relacionais”) e os métodos são mais virados para o objecto individual

métodos sempre definidos numa classe e executados relativamente a um objecto dessa classe que funciona como parâmetro implícito

métodos podem ser vistos como atributos especiais

Métodos

estilo declaração de função C++ (suporta polimorfismo) parâmetros são declarados in (entrada), out (saída) ou inout (entrada-saída) -- dois últimos

passados por referência levantamento de excepções, para tratamento de situações anormais ou inesperadas que são

tratadas pelo chamador fora da sequência normal de chamada resposta

Page 3: Modelo Objecto

ODMG 3

Exemplo de declaração de métodosinterface Filme

(extent Filmes

key (titulo, ano))

{ attribute string titulo;

attribute integer ano;

attribute integer comprimento;

attribute enum Filme {cor, pretoBranco} tipoFilme;

relationship Set<Estrela> estrelas inverse Estrela::filmes;relationship Estudio proprietario inverse Estudio::possui;float comprimentoHoras() raises(semDuracao);nomesActores( out Set<string> );outrosFilmes( in string, out Set<Filme> ) raises (estrelaInexistente);

};

a declaração extent nomeia o conjunto de instâncias da classe existentes no momento - funciona como uma relação as perguntas em OQL referem-se à extensão e não ao nome da classe

Page 4: Modelo Objecto

ODMG 4

Estender LPOO com capacidades BD Extensões à linguagem: OPAL é uma extensão do Smalltalk com classes e

primitivas de gestão de BD

colecções com restrições para armazenar grandes quantidades de dados

blocos de selecção especiais com capacidade para usar índices, onde os haja

Fornecimento de bibliotecas de gestão de BD para uso de linguagem standard (C++)

Ontos, Objectivity, Object Store usa compiladores standard

distinção entre preprocessamento e uso de bibliotecas é ténue

Objectivos:

eliminar a impedância entre as linguagens especializadas de BD e as de uso geral

reduzir o abismo semântico para a especificação do problema

Resultado ainda é mais navegacional e menos declarativo do que o modelo relacional forneceu

Page 5: Modelo Objecto

ODMG 5

Objectivos

Objectivos

promover normalização dos SGBDO’s para uma maior aceitação e divulgação

garantir portabilidade de aplicações entre SGBDO’s definir interface portável ao nível de esquema de dados e linguagens de

definição, manipulação e interrogação conseguir forte integração das BD’s com as LP’s (p.e. com C++) possibilitar interoperabilidade entre SGBDO’s

Page 6: Modelo Objecto

ODMG 6

Objectivos

Produtos Normalizados versus Produtos Iguais

a interface comum ao nível de esquema de dados e linguagens envolvidas permite a inovação em muitas outras áreas permitindo que os produtos se distingam a vários níveis:

performance linguagens de programação suportadas ambientes de desenvolvimento ferramentas para construção de aplicações redes plataformas bibliotecas de tipos ferramentas para construção de interfaces gráficas ferramentas para apoio ao projecto etc.

Page 7: Modelo Objecto

ODMG 7

Hierarquia de Tipos Pré-definidos Denotable_Object

Object

Atomic_Object Type Exception Iterator

Structured_Object Collection<T>

Set<T> Bag<T> List<T>

String Bit_String

Array<T> Structure<e1:T1...en:Tn>

Literal

Atomic_Literal Integer Float Character Boolean

Structured_Literal Immutable_Collection<T>

Immutable_Set<T> Immutable_Bag<T> Immutable_List<T>

Immutable_String Immutable_Bit_String

Immutable_Array<T> Enumeration

Immutable_Structure<e1:T1...en:Tn> Date Time DateTime Interval

Characteristic Property

Attribute Relationship

Operation

Page 8: Modelo Objecto

ODMG 8

OQL: Object Query Language

Princípios orientadores:

não ser computacionalmente completa, mas permitir fácil acesso a uma base de dados de objectos

ser declarativa ter como base o modelo objecto ODMG ter uma sintaxe abstracta possuir semântica formal facilmente definível ter construções idênticas às de SQL sem privilegiar a cláusula select-from-where dispôr de primitivas para manipulação de conjuntos e também listas, vectores,

bags, etc.

Page 9: Modelo Objecto

ODMG 9

Expressões

Expressões permitidas:literais, aritméticas, comparações, lógicasconstrutorasacesso: ‘.’, ‘->‘, first(), last(), []conversão: listtoset(), element(), flatten(), explicitaconjuntos: intersect, union, exceptcolecções:

for all ... in ... : ... exists ... in ... : ... <elemento> in <colecção> select-from-where sort ... by ... count(), sum(), min(), max(), avg() group ... in ... by ... with ...

Page 10: Modelo Objecto

ODMG 10

Exemplos de OQL

1. Obter o conjunto dos nomes de todas as pessoas com nacionalidade portuguesa.select distinct x.nome from x in Pessoas where x.nacionalidade=“Portugal”

2. Obter o conjunto de nomes, moradas e códigos postais de todas as pessoas com nacionalidade portuguesa.select distinct struct(n: x.nome, m: x.morada, c: x.cpostal)from x in Pessoaswhere x.nacionalidade = “Portugal”

3. Obter a lista de nomes dos revisores portugueses dos textos revistos depois de 1 Jan de 1994.select x.nome from x in (select y.revisor from y in Textos where revisao > 1-1-94)where x.nacionalidade = “Portugal”

Page 11: Modelo Objecto

ODMG 11

Mais exemplos de OQL

4. Obter os nomes das 3 pessoas mais novas de nacionalidade portuguesa.

select w.nome from w in (sort x in

(select y from y in Pessoaswhere y.nacionalidade = “Portugal”)

by x.idade)[0:2]

5. Obter os títulos dos documentos cujos autores são na sua totalidade de nacionalidade portuguesa.

select x.titulofrom x in Documentoswhere (for all y in x.autores: y.nacionalidade=“Portugal”)

Page 12: Modelo Objecto

ODMG 12

Último exemplo de OQL

6. Para cada uma das seguintes 3 gamas etárias (12-30,30-55,55-...) calcular o número de pessoas que se encontram nessa gama bem como a idade maior e menor encontrada nessa gama.

group x in Pessoa by(jovens: x.idade >= 12 and x.idade < 30,experientes: x.idade >=30 and x.idade < 55,maduros: x.idade >= 55)

with (numero: count(partition),menor_idade: min(select x.idade from x in partition)maior_idade: max(select x.idade from x in partition))

R: set<struct(jovens: boolean, experientes: boolean, maduros: boolean, numero: integer, menor_idade: integer, maior_idade: integer)>

Page 13: Modelo Objecto

ODMG 13

OQL versus SQL

SQLselect livros.titulofrom livroswhere not exist (select autorfrom autores, pessoaswhere autores.pessoa=pessoas.id

and autores.livro=livros.idand not(pessoas.nacionalidade=“Portugal”))

OQLselect x.titulofrom x in Documentoswhere (for all y in x.autores: y.nacionalidade=“Portugal”)

Page 14: Modelo Objecto

ODMG 14

ODMG...

....

...

...

Aplicação

Linker

Base de Dados de Objectos

Criação

....

...

...Código Objecto

do SGBDO

....

...

...

Objective-Ccom ODL/OML

Código Objectoda aplicação

Ficheiros .hObjective-C

....

...

...Ficheiros .mObjective-C

Compilador Objective-C

Pré-Processadorde ODL/OML

....

...

...

Meta Informação

objectos

Page 15: Modelo Objecto

ODMG 15

Conclusões

simples de seguir

tem como base um modelo menos simples que o relacional mas muito mais poderoso

a linguagem de interrogação é fechada, completa, as construções possuem uma semântica bem definida, e tem um poder expressivo superior ao SQL.

diminui a impedância semântica entre LP’s e LI’s