SGBDOO
Funções  persistência
SGBD
 transacções
 controlo da concorrência
 recuperação
 pesquisa
 versões
 integridade
 segurança
 desempenho

Orientação
por objectos
Estratégias
 novos modelo e linguagem de dados
 estender linguagem BD com capacidades OO
 estender uma LP OO com capacidades BD
 fornecer bibliotecas OO com funções de SGBD
 embeber construções de BDOO em linguagem hospedeira
 produtos para domínios específicos suportados por SGBDOO
 tipos de dados abstractos
 herança
 identidade dos objectos
SIM (Unysis)
Oracle, Informix, Ontos
Opal
ObjectStore, Ontos, Versant
O2
escritório inteligente
Modelo de objectos - 1
Sistema de tipos


Tipos de base: inteiros, reais, booleanos, cadeias de caracteres
Construtores de tipos



estruturas de registos: dada uma lista de tipos T1, T2, …, Tn e a correspondente lista de
nomes de campos c1, c2, …, cn,
RECORDOF(c1:T1, c2:T2, …, cn:Tn)
é um tipo registo com n componentes (struct)
tipos colecção: dado um tipo T,
SETOF(T)
é um tipo conjunto de elementos do tipo base T; para além dos conjuntos é habitual usar
outras colecções, como multiconjuntos, listas, vectores
tipos referência: uma referência para um tipo T
REF T
é um tipo cujos valores são adequados para encontrar eficientemente um valor do tipo T:
apontador para endereço de memória virtual, ou uma localização num disco de uma
máquina (distribuição) — REF frequentemente omitido dá imagem de objectos contidos
em objectos
Modelo de objectos - 2
Tipos, classes e objectos

Exemplo: Banco

CLASS Conta= RECORDOF(
nr : inteiro;
balanço : real
titular : REF Cliente)
- por iteração dos construtores obtêm-se
estruturas arbitrariamente complexas
- tipos + métodos = classe
- os objectos de uma classe são constantes
(objectos imutáveis) ou variáveis desse
tipo (mutáveis)
- {2,5,7} objecto imutável da classe
CInt=SETOF(inteiro)
- s:Cint é uma variável e pode guardar o
conjunto {2,5,7}
CLASS Cliente= RECORDOF(
nc : inteiro;
nome : string;
contas : SETOF(Conta))
Conta
nr
balanço
titular Cliente
nc
nome
contas ...
...
...
Modelo de objectos - 3
Características dos objectos

Identidade dos objectos (OID)


cada objecto tem o seu OID cuja validade tem que acompanhar toda a vida do objecto
Métodos


são procedimentos ou funções associados a uma classe
têm sempre como alvo um objecto; podem ter outros argumentos
• ex: calcular a soma dos números numa instância de Cint

ADT - Tipos de Dados Abstractos




encapsulamento das variáveis internas impõe disciplina no acesso à informação
obtém-se melhor qualidade e robustez ao software
elevada modularidade facilita a manutenção
capacidade expressiva contrasta com a fixidez do modelo relacional
• Relação = SETOF( RECORDOF(c1:T1, c2:T2, …, cn:Tn ) )

Classes organizam-se em hierarquias


subclasses herdam a estrutura do tipo e os métodos (reutilização)
podem estender a superclasse com mais propriedades ou redefinir as herdadas
Modelo de objectos - 4
Modelos de objectos complexos
•
modelos semanticamente ricos, próximos das construções dos formalismos de
especificação (entidade-associação, OMT, etc.), mas várias das linguagens são ad
hoc
 objectos complexos baseados em valores
•
sem OID e sem referências
•
unicidade de um objecto depende apenas do estado (conjunto de valores atómicos
das variáveis de instância)
•
espaço de objectos: florestas de árvores (semelhança com modelo hierárquico e
modelo relacional não primeira forma normal)
espaço transitório versus espaço persistente [objectos na memória são caminhos
(path) constituídos por atributos (selectores em tuplos) e chaves (selectores em
conjuntos)]
•
objectos atómicos
conjunto
tuplo
tuplo hierárquico
conjunto de tuplos
{[Nome:Pedro, Idade:25],
[Nome:João,Idade:7],
[Nome:Maria, Idade:13]}
relação encaixada
{[Nome:Pedro, Filhos:{Max, Susana}],
[Nome:João, Filhos:{Maria, Francisco}]}
25, João, 1.3
{João, Maria, Susana}
[Nome:Pedro, Idade:25]
[Nome:[Próprio: João, Apelido:Costa],
Idade:25, Filhos: {Pedro, Paulo, Maria}]
Modelo de objectos - 5
Objectos complexos baseados em valores
CLASS Nome= RECORDOF( proprio:string, apelido:string)
CLASS Morada= RECORDOF( cidade:string, rua:string, no:inteiro)
CLASS Pessoa = RECORDOF(
nome:Nome, filhos:SETOF(Pessoa), endereço: Morada, esposo:Nome))
tuplo
i
conjunto
Maria
Nome
Próprio
Apelido
Maria
Costa
Esposo
Endereço
Filhos
i
Cidade Rua
João
Braga
Nome
Próprio
João
Apelido
Costa
Esposo
Endereço
Filhos
i
Cidade Rua
Braga
António
António
Próprio
Próprio
Apelido
No
João
Costa
Direita 34
Joana
Apelido
No
Maria
Costa
Direita 34
Joana
Modelo de objectos - 6
Objectos complexos com identidade
(modelo baseado em FAD)
 espaço de objectos complexos baseados em identidade (grafo dirigido)
- conjunto de identificadores I, conjunto de atributos A
- objecto é (identificador, tipo, valor); identificador  I, tipo é atómico, conjunto ou tuplo
tipo atómico — elemento de um domínio de valores atómicos do utilizador
conjunto — {i1, i2,…, in}, ij  I, sem ordem e sem repetições
tuplo — [ai:i1, a2:i2, …, an:in], ij  I, aj  A
- notar a partilha referencial e os ciclos
i1
i2
Próprio
João
Esposo
Nome
i101
Nome
Endereço
Filhos
Apelido
Costa
i3
i
i4
Cidade Rua No
Braga
Direita 34
Próprio
i102
Apelido
Maria
Costa
…
Modelo de objectos - 7
Igualdade
 Objectos complexos baseados em valores
1. Dois objectos atómicos são iguais sse forem o mesmo.
2. Dois objectos tuplo são iguais sse os valores em cada atributo forem iguais.
3. Dois objectos conjunto S e S' são iguais sse para cada elemento de S (S') existir um
elemento de S' (S) igual.
 Objectos complexos baseados em identidade
1. Idênticos. Dois objectos têm identificadores idênticos sse forem o mesmo objecto.
2. Igualdade superficial (shallow equal). Dois objectos são superficialmente iguais sse
têm o mesmo tipo e os valores do conteúdo são idênticos;
• dois objectos atómicos são iguais se denotam o mesmo elemento no domínio de valores
base.
3. Igualdade profunda (deep equal). Dois objectos são profundamente iguais sse têm o
mesmo tipo e os valores do conteúdo são profundamente iguais;
 Modelo híbrido
• objectos atómicos (inteiros, reais, caracteres, booleanos, apontadores, datas) não
precisam de uma identidade diferente do seu valor (Smalltalk, Java) — eficiência
Modelo de objectos - 8
Estes objectos são iguais?
i1
nome
i2
próprio
João
próprio
filhos
i3 i
i4
apelido
Costa
cidade rua
i401
i301
Braga
i103 i
nome
i201
no
Direita 34
esposo
apelido
i102
esposo
endereço
filhos
i101
endereço
Pessoa1= i1
Pessoa2= i1
Pessoa3= i101
Filhos1= i3
Filhos2= i103



Pessoa1 = Pessoa2 ?
Pessoa1 = Pessoa3 ?
Filhos1 = Filhos2 ?
Claro
Profundamente; não superficialmente
Profundamente e superficialmente
Modelo de objectos - 9
Apoiantes da norma

Object Database Management Group
• representa 90 % do mercado existente de SGBDO’s:
– Object Design
– Objectivity
– O2
– Versant
– Ontos
– Servio
– Itasca
e liderado por Rick Cattell da SunSoft
Modelo de objectos - 10
Modelo de objectos



Modelo proposto pela ODMG (Object Database Management Group
dirigido por Rick Cattell) para servir como norma (versão 2.0) para
BDOO
Modelo abstracto — existem mapeamentos para C++, Smalltalk e
Java
Arquitectura com três componentes




ODL - Object Definition Language — interesse para o projecto
OQL - Object Query Language — extracção de informação
OML - Object Manipulation Language — alteração dos dados; pouco desenvolvida na
norma por ser específica de cada linguagem
ODL é uma extensão da IDL (Interface Description Language), a
componente da CORBA que descreve as interfaces entre objectos
Modelo de objectos - 11
CORBA

Common Object Request Broker Architecture







norma desenvolvida pelo OMG (Object Management Group) para sistemas de objectos
distribuídos
pretende tornar a distribuição transparente
e aumentar a interoperabilidade
fornece uma infraestrutura que permite encontrar um determinado objecto para lhe
solicitar um serviço e que faz as conversões necessárias
cada objecto apresenta ao sistema uma interface com a sua descrição feita em IDL
(Interface Description Language)
as aplicações ligam-se através
dessa interface a uma espécie
de barramento de dados
houve a preocupação de garantir
IDL
IDL
IDL
que o modelo de objectos ODMG
fosse um superconjunto do modelo
de objectos OMG
CORBA
Modelo de objectos - 12
Linguagem de Definição de Objectos


em ODL o Mundo é constituído por objectos, com identidade,
agrupados em classes
uma classe agrupa objectos que



propriedades:




correspondem a conceitos do mundo real semelhantes
têm todos as mesmas propriedades
atributos - têm tipos baseados em tipos primitivos, que não envolvam classes
associações - referência ou colecção de referências para objectos
métodos - funções aplicáveis aos objectos da classe
declaração de uma classe (muito ao estilo C++)
interface <nome> {
<lista de propriedades>
}
Modelo de objectos - 13
Exemplo

As definições de classe em rigor têm uma interface e uma
implementação (daí a designação)
interface Filme {
attribute string titulo;
attribute integer ano;
attribute integer comprimento;
attribute enum Filme {cor, pretoBranco} tipoFilme;
}


o quarto atributo é do tipo enumerado Filme, o qual é um conjunto
com dois literais cor, pretoBranco
interface Estrela {
attribute string nome;
attribute Struct Morada {string rua, string cidade} endereco;
}
neste exemplo existe um atributo composto, mas sem referência
Modelo de objectos - 14
Associações

Representar as participações de estrelas em filmes


acrescenta uma linha a Filme com um conjunto (Set) de referências para Estrelas
relationship Set<Estrela> estrelas;
ou acrescenta uma linha a Estrela, com uma referência para o Filme de que é a estrela
principal
relationship Set<Filme> filmes;
Estrela
nome
morada
rua
cidade
filmes
Filme
titulo
ano
comprimento
tipoFilme
estrelas
Modelo de objectos - 15
Associação inversa


é natural que se no objecto Jack Nicholson, no conjunto dos filmes
constar o objecto Shinning, se espere ir encontrar no objecto Shinning
uma referência ao Jack Nicholson
a manutenção da coerência em ambos os lados de uma associação
pode ser feita automaticamente, desde que, numa classe, se indique
qual o atributo que faz par na outra e é usado para garantir o inverso.
interface Estrela {
attribute string nome;
attribute Struct Morada {string rua, string cidade} endereco;
relationship Set<Filme> filmes inverse Filme::estrelas;
}

em ODL, por ser abstracta, insiste-se na existência de inversa


permite percorrer os dados arbitrariamente nos vários sentidos
uma concretização numa linguagem OO, pode levar a só criar inversos em associações
que o justifiquem.
Modelo de objectos - 16
Multiplicidade das associações


Muitos-para-muitos: é o caso da estrelas nos filmes; implementada
com conjuntos de ambos os lados
Muitos-para-um: proprietário de um filme; implementada com um
conjunto de um lado mais uma referência simples do outro
interface Filme {
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; }
interface Estudio {
attribute string nome;
attribute string endereco;
relationship Set<Filme> possui inverse Filme::proprietario; }

Um-para-um: caso dos presidentes dos estúdios; implementada com
uma referência simples quer de um lado quer do outro
Modelo de objectos - 17
Tipos em ODL

Tipos atómicos integer, float, character, string, boolean, enumeration



Tipos interface na realidade são estruturas com componentes para os
atributos e para as associações mas, uma vez definidos, podem
também ser vistos como tipos base
Construtores de tipos






enumerações são listas de constantes vistas como sinónimos dos inteiros
Set (conjunto) - sem repetidos e sem ordem
{1, 2}
Bag (multiconjunto) - com repetidos e sem ordem
{1,2,1}={2,1,1}
List (lista) - com repetidos e com ordem; string = List<char>
(1,2,1)  (2,1,1)
Array (vector) - com repetidos e com ordem, com dimensão definida; Array<char,10>
denota as cadeias de caracteres de comprimento 10
Struct (estrutura) - se T1, T2, …, Tn forem tipos e F1, F2, …, Fn nomes de campos Struct
N{ T1 F1, T2 F2, …, Tn Fn } é uma estrutura
Colecções: Set, Bag, List, Array
Modelo de objectos - 18
Regras de uso dos tipos

Atributos - começam em tipos atómicos ou estruturas só com tipos
atómicos e podem ser envolvidos por uma colecção (4 casos possíveis)





integer
Struct N {string campo1, integer campo2}
List<float>
Array<struct N {string campo1, integer campo2}>
Associações - tipo interface ou um tipo colecção aplicado a um tipo
interface


possível: Filme; Bag<Estrelas>
impossível:
• Struct N {Filme campo1, Estrela campo2} - envolve uma estrutura
• Set<integer> - envolve só tipos atómicos
• Set<Array<Estrela>> - envolve colecção de colecções
Modelo de objectos - 19
Princípios de projecto


Fidelidade às especificações
evitar a redundância



cada facto da realidade deve estar representado num único sítio no sistema
as relações inversas, se automaticamente mantidas, não implicam redundância
parcimónia e simplicidade

KISS (keep it simple, stupid)

escolha do elemento apropriado para representar a realidade

Declaração de chave (objectos continuam a ter identidade)

interface filme
key( titulo, ano)
{…}
Modelo de objectos - 20
Subclasses


por vezes ocorre que, numa dada classe, parte dos seus objectos tem,
para além das características comuns a todos os outros, algumas
propriedades específicas. Nesse caso faz sentido usar o conceito de
subclasse.
Notação: pôr a seguir ao nome da classe a ser definida, dois pontos e
respectiva superclasse
interface Cartoon : Filme {
relationship Set<Estrela> vozes; // inverse Estrela::personagensAnimação;
}


a subclasse herda todas as propriedades de todos os que estão para
cima na hierarquia
herança múltipla: se existir interface Policial : Filme {attribute string arma}
interface Cartoon-policial : Cartoon, Policial {};
herda dos dois lados, mas para uma classe acessível por mais do que
um caminho só herda uma vez (Filme que é superclasse duplamente)
Modelo de objectos - 21
Download

Modelo de objectos 2