Bancos de Dados
Orientados a Objetos
UFPA
Informática
Prof. Benedito Ferreira
1
2
UFPA
Informática
Estrutura de
objetos e
construtores
2
Identidade de objetos:
Um SGBDOO provê um identificador único
(IDO) para cada objeto independente
armazenado no BD.
UFPA
Informática
Propriedade essencial: ser imutável.
Propriedade desejável: um IDO não deve
ser reutilizado.
Então... IDOs não podem depender de
valores de atributos dos objetos.
3
Objetos versus valores
A maioria dos SGBDOO permite a
representação de objetos e valores:
UFPA
Informática
- Objetos possuem identificador único
- Valores não possuem IDO. São
armazenados no interior de objetos e
não podem ser referenciados por outros
objetos.
4
Construtores de tipos:
Definem operações básicas de
estruturação de dados, que podem ser
combinadas para formar estruturas
complexas.
UFPA
Informática
Construtores básicos: átomo, tupla,
conjunto.
Outros: lista, bolsa (bag), array.
5
Ortogonalidade dos construtores
UFPA
Informática
Construtores ortogonais significa que
qualquer um deles pode ser aplicado a
qualquer objeto, seja ele atômico ou
resultante de aplicação anterior de
outro construtor.
6
UFPA
Informática
Ortogonalidade dos construtores
7
Estrutura de objetos
Formalmente, um objeto pode ser representado por um trio (triple) (i,c,v), onde:
UFPA
Informática
i: IDO
c: construtor de tipo
v: estado (ou valor) do objeto
8
UFPA
Informática
Exemplo:
o1=(i1,atom, ‘Houston’)
o2=(i2,atom, ‘Bellaire’)
o3=(i3,atom, ‘Sugarland’)
o4=(i4,atom, 5)
o5=(i5,atom, ‘Research’)
o6=(i6,atom, ‘1988-05-22’)
o7=(i7,set, {i1,i2,i3})
o8=(i8,tuple, <DNAME:i5, DNUMBER:i4, MGR:i9,
LOCATIONS:i7, EMPLOYEES:i10, PROJECT:i11>)
o9=(i9,tuple,<MANAGER:i12, MGR_START_DATE:i6>)
o10=(i10,set,{i12,i13,i14})
o11=(i11,set{i15,i16,i17})
o12=(i12,tuple,<FNAME:i18,LNAME:i20,SSN:I21, . . . ,
SALARY:i26,SUPERVISOR:i27,DEPTO:i8>)
...
9
Objetos como grafos...
Um objeto pode ser representado como um
grafo, construído pela aplicação recursiva de
construtores.
O grafo representando um objeto oi terá:
UFPA
Informática
- Um nó para oi (IDO + construtor)
- Um nó para cada valor atômico
10
Objetos como grafos...
UFPA
Informática
 Se o objeto oi possui um valor atômico,
cria-se um arco dirigido do nó que
representa oi até o nó que representa seu
valor.
 Se o valor do objeto é estruturado, criase um arco dirigido do nó que representa
oi até o nó que representa o valor
estruturado.
11
UFPA
Informática
Igualdade versus
Identidade de objetos:
Dois objetos são ditos idênticos se os grafos
que representam seus estados são idênticos
em todos os aspectos, incluindo os IDO em
cada nível.
Ex: o1 = (i1,tuple, <a1:i4,a2:i6>)
o2 = (i2,tuple, <a1:i5,a2:i6>)
o3 = (i3,tuple, <a1:i4,a2:i6>)
o4 = (i4,atom,10)
o5 = (i5,atom,10)
o6 = (i6,atom,20)
 o1 e o2 são iguais (assim como o2 e o3)
 o1 e o3 são idênticos: igualdade profunda12
A construção de tipos
Construtores de tipos são empregados para
definir estruturas de dados para um
esquema de BD OO.
UFPA
Informática
Atributos que referem-se a outros objeto
são referências a outros objetos, servindo
para representar relacionamentos entre
tipos de objetos.
13
UFPA
Informática
Exemplo:
define type Empregado
tuple (
nome:
string;
snome:
string;
cpf:
string;
datanasc:
Data;
endereco:
string;
sexo:
char;
salario:
float;
supervisor: Empregado;
dept:
Departamento;
)
14
Exemplo(cont.):
UFPA
Informática
define type Data
tuple (
ano:
mes:
dia:
integer;
integer;
integer;
)
define type Departamento
tuple (
nomed:
string;
numd:
integer;
gerente:
tuple ( ger: Empregado;
datainic: Data; );
localiz:
set(string);
empregados: set(Empregado);
projetos:
set(Projeto);
)
15
Encapsulamento de operações
Em SBD tradicionais, a estrutura do BD é
visível aos usuários e programas externos.
Um conjunto de operações padrão é
aplicado a objetos de qualquer tipo.
UFPA
Informática
Ex (relacional): seleção, projeção,
inserção, etc.
16
Encapsulamento de operações
Nos SBDOO...
UFPA
Informática
É possível definir o comportamento de um
tipo de objetos, através das operações que
podem ser aplicadas externamente aos
objetos daquele tipo.
 A estrutura interna do objeto
permanece escondida, e o acesso ao
mesmo se dá somente através das
operações definidas.
17
Encapsulamento de operações
Operações mais comuns:
UFPA
Informática
-
criar um objeto
destruir um objeto
atualizar seu estado
recuperar dados do objeto
efetuar algum cálculo
 Em geral, a implementação de uma
operação pode ser especificada em uma
LPPG.
18
Encapsulamento de operações
O usuário externo de um objeto estará
ciente apenas da interface do objeto:
nome e lista de parâmetros (assinatura) de
cada operação.
UFPA
Informática
 A estrutura de dados interna e as implementações das operações (métodos)
estarão ocultas.
 O usuário poderá invocar determinada operação através do envio das mensagens apropriadas.
19
Relaxando o encapsulamento...
Para aplicações de BD, o encapsulamento
absoluto pode ser bastante limitante.
UFPA
Informática
Uma forma de relaxar esse princípio seria
dividir a estrutura de um objeto em duas
partes:
 Atributos visíveis
 Atributos escondidos
Em geral, aos atributos visíveis podese ter acesso direto para leitura, via
linguagens de consulta de alto nível.
20
Alterações permanecem encapsuladas...
Em geral, operações que atualizam o estado de objetos devem ser encapsuladas.
UFPA
Informática
 Essa é uma forma de definir a semântica de atualizacão dos objetos (restrições de integridade são programadas nos
métodos)
21
UFPA
Informática
Especificando comportamento
dos objetos
define class Empregado:
type tuple ( nome:
snome:
cpf:
datanasc:
endereco:
sexo:
salario:
supervisor:
depto:
operations idade:
criar_emp:
excluir_emp
end Empregado;
string;
string;
string;
Data;
string;
char;
float;
Empregado;
Departamento;
integer;
Empregado;
boolean;
)
22
UFPA
Informática
Especificando comportamento
dos objetos
define type Departamento
type tuple( nomed:
string;
numd:
integer;
gerente:
tuple ( ger: Empregado;
datainic: Data; );
localiz:
set(string);
empregados: set(Empregado);
projetos:
set(Projeto);
);
operations num_empr integer;
criar_depto Departamento;
excluir_dept boolean;
associar_emp(e:Empregado): boolean;
remover_emp (e:Empregado): boolean;
end Departamento;
23
Especificando persistência de
objetos
Nem todos os objetos são armazenados
permanentemente no BD
UFPA
Informática
Objetos transientes: existem durante a
execução de um programa.
Objetos persistentes: são armazenados no
BD.
24
Especificando persistência de
objetos
Os dois mecanismos típicos para tornar um
objeto persistente são:
Nomeação (naming)
UFPA
Informática
Alcançabilidade (reachability)
25
Nomeação
Atribuição de um nome ao objeto,
através do qual ele poderá ser
recuperado futuramente.
UFPA
Informática
 O nome deve ser único para um certo BD.
 Os objetos persistentes nomeados
funcionam como pontos de entrada para o
BD.
26
Alcançabilidade
Este mecanismo torna persistentes todos
os objetos aos quais se possa chegar a
partir de outros objetos persistentes.
(persistência inferida)
UFPA
Informática
Ou seja...
Se a partir de um objeto persistente A,
por uma seqüência de referências, podese chegar ao objeto B, então B é
persistente.
27
UFPA
Informática
Exemplo...
define class ConjDepart:
type set (Departamento);
operations incluir_depto(d: Departamento) : boolean;
remover_depto(d: Departamento) : boolean;
criar_conj_depto: ConjDepart;
destruir_conj_depto: boolean;
end ConjDepartamentos;
...
Persistent name TodosDepart: ConjDepart;
...
d := criar_depto;
b := TodosDepart.incluir_depto(d);
 O objeto TodosDepart é denominado
extensão (extent) da classe Departamento. 28
Hierarquia de tipos e herança
Nos SBDOO, é possível a definição de novos
tipos a partir de outros tipos predefinidos.
UFPA
Informática
O conceito de subtipo é útil quando se
pretende criar um novo tipo que possui
similaridade com algum outro já existente.
O novo tipo herdará todas as funções
(atributos e operações) do primeiro, que
chamamos de supertipo.
29
Hierarquia de tipos (exemplo 1)
PESSOA: Nome, Endereço, DataNasc, Idade, CPF
EMPREGADO subtype-of PESSOA: Salario, DataContrat
UFPA
Informática
ESTUDANTE subtype-of PESSOA: CG, Curso
 Em geral, um subtipo inclui todas as
funções definidas para seu supertipo, e
algumas funções adicionais, específicas (ou
locais) ao subtipo.
30
Hierarquia de tipos (exemplo 2)
FIGURA_GEOM: Forma, Area, PontoReferencia
RETANGULO subtype-of FIGURA_GEOM: Larg, Alt
TRIANGULO subtype-of FIGURA_GEOM: Lado1, Lado2,
Angulo
UFPA
Informática
CIRCULO subtype-of FIGURA_GEOM: Raio
 A operação Area pode ser implementada
por diferentes métodos para cada subtipo.
 O atributo PontoReferencia pode ter
diferentes significados para cada subtipo.
31
Estabelecendo uma restrição para um
subtipo...
FIGURA_GEOM: Forma, Area, PontoReferencia
RETANGULO subtype-of FIGURA_GEOM (Forma =
‘retângulo’): Larg, Alt
TRIANGULO subtype-of FIGURA_GEOM (Forma =
‘triângulo’): Lado1, Lado2, Angulo
UFPA
Informática
CIRCULO subtype-of FIGURA_GEOM (Forma =
‘círculo’): Raio
32
Observações...
 A definição de tipos descreve objetos,
mas não os cria.
UFPA
Informática
 Um objeto pertencente a um subtipo
qualquer também pertencerá ao(s) seu(s)
supertipo(s)
o  t1  t2  ...
 Em uma aplicação de BDOO, um objeto,
tipicamente, pertencerá a uma ou mais
coleção de objetos persistentes (ou
extensão).
33
Observações...
Considera-se que um SGBDOO possui um
sistema de tipos extensível:
UFPA
Informática
 Pode-se criar bibliotecas de novos tipos,
com sua estrutura e comportamento.
 Outras aplicações podem usar esses
tipos e modificá-los pela criação de
subtipos.
34
Objetos Complexos
O interesse pela representação de objetos
complexos é a principal motivação para o
desenvolvimento de sistemas OO.
UFPA
Informática
Objetos complexos podem ser de dois tipos:
 Estruturados
 Não-estruturados
35
Objetos Complexos
não-estruturados
São tipos de dados que requerem grande
quantidade de memória, como imagens ou
longos objetos textuais (documentos).
UFPA
Informática
Também conhecidos como BLOB’s (binary
large objects)
São não-estruturados no sentido de que o
SGBD não conhece sua estrutura (somente
a aplicação que deles faz uso pode
interpretar seu significado)
36
Objetos Complexos estruturados
Possuem uma estrutura definida pela
repetida aplicação dos construtores de tipo
providos pelo SGBDOO.
UFPA
Informática
Diferentemente dos não-estruturados, sua
estrutura é definida e conhecida do SGBD.
37
UFPA
Informática
Exemplo...
define type Departamento
type tuple( nomed:
string;
numd:
integer;
gerente:
tuple ( ger: Empregado;
datainic: Data; );
localiz:
set(string);
empregados: set(Empregado);
projetos:
set(Projeto);
);
operations num_empr integer;
criar_depto Departamento;
excluir_dept boolean;
associar_emp(e:Empregado): boolean;
remover_emp (e:Empregado): boolean;
end Departamento;
38
Referências Semânticas
Há dois tipos de referências semânticas entre
objetos complexos e seus componentes:
- pertencimento (ownership): sub-objetos são
considerados parte do objeto complexo.
UFPA
Informática
- referência: representa relacionamentos entre
objetos independentes.
39
Polimorfismo
O mesmo nome de operação pode ser vinculado a
diferentes implementações, dependendo do objeto.
UFPA
Informática
Em hierarquias de tipos, pode-se definir um método
genérico para o supertipo, e versões otimizadas
para os subtipos.
Em sistemas não fortemente tipados,
poderemos ter amarração tardia (late binding)
40
Herança múltipla
Ocorre quando um certo tipo é subtipo de
dois (ou mais) outros, herdando atributos e
métodos de todos os supertipos.
UFPA
Informática
Com a herança múltipla, temos, não só
uma hierarquia, mas uma grade (lattice) de
tipos: maior flexibilidade.
Ex: ENGENHEIRO_GERENTE pode ser subtipo
de ENGENHEIRO e de GERENTE.
41
Problema típico
Ambiguidade: os vários supertipos podem
ter funções distintas com o mesmo nome.
UFPA
Informática
Supertipo comum: se os dois supertipos
têm, por sua vez, um supertipo comum, e
dele herdaram a função, então não há
ambiguidade.
42
Resolução de conflitos
1- Na criação do subtipo, se houver
conflito, o usuário deverá explicitar sua
escolha.
UFPA
Informática
2- Adoção de uma solução padrão (default).
Ex: em caso de ambiguidade assumir a
função do primeiro supertipo listado.
3- Proibir herança múltipla se ocorrer
ambiguidade de nomes de funções (forçar
o usuário a ajustar os nomes)
43
Versões
Muitas aplicações demandam a existência de
várias versões de um mesmo objeto.
UFPA
Informática
Ex: uma aplicação de eng. de software pode
requerer a manutenção de versões para:
- módulos de projeto;
- código fonte;
- informações de configuração;
- massa de teste, etc.
Enquanto novas versões não forem completamente validadas, as antigas são mantidas.
44
Versões
Um SGBDOO dever ser capaz de
armazenar e gerenciar múltiplas versões
do mesmo objeto conceitual (alguns
mantêm um grafo de versões).
UFPA
Informática
Em geral, o SGBD oferece meios para
referência explícita para as várias versões.
Questões mais complexas (juntar e
conciliar várias versões, etc.) ficam
para os programas da aplicação.
45
Download

Estruturas complexas e Construtores de tipos