bancos de dados orientados a objetos

45
Informática UFPA B D O O 1 Bancos de Dados Bancos de Dados Orientados a Orientados a Objetos Objetos Prof. Benedito Ferreira

Upload: saxon

Post on 10-Feb-2016

43 views

Category:

Documents


0 download

DESCRIPTION

Bancos de Dados Orientados a Objetos. Prof. Benedito Ferreira. 2. Estrutura de objetos e construtores. Identidade de objetos:. Um SGBDOO provê um identificador único (IDO) para cada objeto independente armazenado no BD. Propriedade essencial: ser imutável. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

1

Bancos de DadosBancos de DadosOrientados a ObjetosOrientados a Objetos

Prof. Benedito Ferreira

Page 2: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

2

Estrutura de objetos e

construtores

2

Page 3: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

3

Identidade de objetos:

Um SGBDOO provê um identificador único (IDO) para cada objeto independente armazenado no BD.

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.

Page 4: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

4

Objetos versus valores

A maioria dos SGBDOO permite a representação de objetos e valores:

- 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.

Page 5: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

5

Construtores de tipos:

Definem operações básicas de estruturação de dados, que podem ser combinadas para formar estruturas complexas.

Construtores básicos: átomo, tupla, conjunto.Outros: lista, bolsa (bag), array.

Page 6: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

6

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.

Ortogonalidade dos construtores

Page 7: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

7

Ortogonalidade dos construtores

Page 8: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

8

Estrutura de objetos

Formalmente, um objeto pode ser represen-tado por um trio (triple) (i,c,v), onde:

i: IDOc: construtor de tipov: estado (ou valor) do objeto

Page 9: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

9

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>). . .

Page 10: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

10

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á:- Um nó para oi (IDO + construtor)- Um nó para cada valor atômico

Page 11: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

11

Objetos como grafos...

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, cria-se um arco dirigido do nó que representa oi até o nó que representa o valor estruturado.

Page 12: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

12

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 profunda

Page 13: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

13

A construção de tipos

Construtores de tipos são empregados para definir estruturas de dados para um esquema de BD OO.

Atributos que referem-se a outros objeto são referências a outros objetos, servindo para representar relacionamentos entre tipos de objetos.

Page 14: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

14

Exemplo:

define type Empregadotuple ( nome: string;

snome: string;cpf: string;datanasc: Data;endereco: string;sexo: char;salario: float;supervisor: Empregado;dept: Departamento; )

Page 15: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

15

Exemplo(cont.):

define type Data tuple ( ano: integer;

mes: integer;dia: integer; )

define type Departamento tuple ( nomed: string;

numd: integer;gerente: tuple ( ger: Empregado;

datainic: Data; );localiz: set(string);empregados: set(Empregado);projetos: set(Projeto); )

Page 16: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

16

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.

Ex (relacional): seleção, projeção, inserção, etc.

Page 17: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

17

Encapsulamento de operações

Nos SBDOO...

É 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.

Page 18: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

18

Encapsulamento de operações

Operações mais comuns:

- 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.

Page 19: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

19

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. A estrutura de dados interna e as im-plementações das operações (métodos) estarão ocultas. O usuário poderá invocar determina-da operação através do envio das men-sagens apropriadas.

Page 20: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

20

Relaxando o encapsulamento...

Para aplicações de BD, o encapsulamento absoluto pode ser bastante limitante. Uma forma de relaxar esse princípio seria dividir a estrutura de um objeto em duas partes:

Atributos visíveis Atributos escondidosEm geral, aos atributos visíveis pode-se ter acesso direto para leitura, via linguagens de consulta de alto nível.

Page 21: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

21

Alterações permanecem encapsuladas...

Em geral, operações que atualizam o es-tado de objetos devem ser encapsuladas.

Essa é uma forma de definir a semân-tica de atualizacão dos objetos (restri-ções de integridade são programadas nos métodos)

Page 22: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

22

define class Empregado: type tuple (nome: string; snome: string;

cpf: string;datanasc: Data;endereco: string;sexo: char;salario: float;supervisor: Empregado;depto: Departamento; )

operations idade: integer;criar_emp: Empregado;excluir_emp boolean;

end Empregado;

Especificando comportamento dos objetos

Page 23: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

23

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;

Especificando comportamento dos objetos

Page 24: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

24

Especificando persistência de objetos

Nem todos os objetos são armazenados permanentemente no BD

Objetos transientes: existem durante a execução de um programa.

Objetos persistentes: são armazenados no BD.

Page 25: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

25

Especificando persistência de objetos

Os dois mecanismos típicos para tornar um objeto persistente são:

Nomeação (naming)

Alcançabilidade (reachability)

Page 26: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

26

Atribuição de um nome ao objeto, através do qual ele poderá ser recuperado futuramente.

Nomeação

O nome deve ser único para um certo BD. Os objetos persistentes nomeados funcionam como pontos de entrada para o BD.

Page 27: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

27

Alcançabilidade

Este mecanismo torna persistentes todos os objetos aos quais se possa chegar a partir de outros objetos persistentes. (persistência inferida)

Ou seja...

Se a partir de um objeto persistente A, por uma seqüência de referências, pode-se chegar ao objeto B, então B é persistente.

Page 28: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

28

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;

O objeto TodosDepart é denominado extensão (extent) da classe Departamento.

. . .Persistent name TodosDepart: ConjDepart;. . . d := criar_depto;b := TodosDepart.incluir_depto(d);

Page 29: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

29

Hierarquia de tipos e herança

Nos SBDOO, é possível a definição de novos tipos a partir de outros tipos predefinidos.

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.

Page 30: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

30

Hierarquia de tipos (exemplo 1)

PESSOA: Nome, Endereço, DataNasc, Idade, CPF

EMPREGADO subtype-of PESSOA: Salario, DataContrat

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.

Page 31: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

31

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

A operação Area pode ser implementada por diferentes métodos para cada subtipo. O atributo PontoReferencia pode ter diferentes significados para cada subtipo.

CIRCULO subtype-of FIGURA_GEOM: Raio

Page 32: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

32

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

CIRCULO subtype-of FIGURA_GEOM (Forma = ‘círculo’): Raio

Page 33: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

33

Observações...

A definição de tipos descreve objetos, mas não os cria. 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).

Page 34: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

34

Observações...

Considera-se que um SGBDOO possui um sistema de tipos extensível: 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.

Page 35: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

35

Objetos Complexos

O interesse pela representação de objetos complexos é a principal motivação para o desenvolvimento de sistemas OO.

Objetos complexos podem ser de dois tipos:

Estruturados Não-estruturados

Page 36: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

36

Objetos Complexos não-estruturados

São tipos de dados que requerem grande quantidade de memória, como imagens ou longos objetos textuais (documentos).

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)

Page 37: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

37

Objetos Complexos estruturados

Possuem uma estrutura definida pela repetida aplicação dos construtores de tipo providos pelo SGBDOO.

Diferentemente dos não-estruturados, sua estrutura é definida e conhecida do SGBD.

Page 38: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

38

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;

Page 39: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

39

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.

- referência: representa relacionamentos entre objetos independentes.

Page 40: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

40

Polimorfismo

O mesmo nome de operação pode ser vinculado a diferentes implementações, dependendo do objeto.

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)

Page 41: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

41

Herança múltipla

Ocorre quando um certo tipo é subtipo de dois (ou mais) outros, herdando atributos e métodos de todos os supertipos.

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.

Page 42: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

42

Problema típico

Ambiguidade: os vários supertipos podem ter funções distintas com o mesmo nome.

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.

Page 43: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

43

Resolução de conflitos

1- Na criação do subtipo, se houver conflito, o usuário deverá explicitar sua escolha.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)

Page 44: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

44

Versões

Muitas aplicações demandam a existência de várias versões de um mesmo objeto.

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 completa-mente validadas, as antigas são mantidas.

Page 45: Bancos de Dados Orientados a Objetos

Info

rmát

ica

UFP

ABD

OO

45

VersõesUm SGBDOO dever ser capaz de armazenar e gerenciar múltiplas versões do mesmo objeto conceitual (alguns mantêm um grafo de versões).

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.