modelo de objectos - 1 funções sgbd qpersistência qtransacções qcontrolo da concorrência...

21
Modelo de objectos - 1 Funções SGBD persistência transacções controlo da concorrência recuperação pesquisa versões integridade segurança desempenho Orientação por objectos tipos de dados abstractos herança identidade dos objectos Estratégias SGBDOO novos modelo e linguagem de dados SIM (Unysis) estender linguagem BD com capacidades OO Oracle, Informix, Ontos estender uma LP OO com capacidades BD Opal fornecer bibliotecas OO com funções de SGBD ObjectStore, Ontos, Versant embeber construções de BDOO em linguagem hospedeira O2 produtos para domínios específicos suportados por SGBDOO escritório inteligente

Upload: antonio-bergler-deluca

Post on 07-Apr-2016

217 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 1

FunçõesSGBD

persistência transacções controlo da concorrência recuperação pesquisa versões integridade segurança desempenho

Orientaçãopor objectos

tipos de dados abstractos herança identidade dos objectos

Estratégias

SGBDOO

novos modelo e linguagem de dados SIM (Unysis) estender linguagem BD com capacidades OO Oracle, Informix, Ontos estender uma LP OO com capacidades BD Opal fornecer bibliotecas OO com funções de SGBD ObjectStore, Ontos, Versant embeber construções de BDOO em linguagem hospedeira O2 produtos para domínios específicos suportados por SGBDOO escritório inteligente

Page 2: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 2

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

Page 3: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 3

Tipos, classes e objectos Exemplo: Banco

CLASS Conta= RECORDOF( nr : inteiro; balanço : real titular : REF Cliente)

CLASS Cliente= RECORDOF(nc : inteiro;

nome : string;

contas : SETOF(Conta))

Cliente nc nome contas

Contanr

balanço titular

...

...

...

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

Page 4: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 4

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

Page 5: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 5

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

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}]}

objectos atómicos 25, João, 1.3

conjunto {João, Maria, Susana}

tuplo [Nome:Pedro, Idade:25]

tuplo hierárquico [Nome:[Próprio: João, Apelido:Costa],Idade:25, Filhos: {Pedro, Paulo, Maria}]

Page 6: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 6

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

João

Nome Esposo

PróprioApelido

JoãoCosta

Filhos

António Joana

Endereço

MariaCidade RuaNo

Braga Direita 34

Próprio Apelido

Costa

João

Nome Esposo

PróprioApelido

Costa

Filhos

António Joana

Endereço

Cidade RuaNo

Braga Direita 34

Próprio Apelido

Costa

Maria

Maria

tuplo

conjunto

Page 7: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 7

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 ciclosi1

NomeEsposo

PróprioApelido

JoãoCosta

Filhos

Endereço

Maria

Cidade RuaNo

Braga Direita 34

Próprio Apelido

Costa

i2

i3

i4

i101Nome

i102

Page 8: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 8

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

Page 9: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 9

Estes objectos são iguais?

Pessoa1 = Pessoa2 ? Claro Pessoa1 = Pessoa3 ? Profundamente; não superficialmente Filhos1 = Filhos2 ? Profundamente e superficialmente

nome esposo

próprio apelido

João Costa

filhos endereço

cidade rua no

Braga Direita 34

próprio apelido

i2 i3 i4

i101nome

i102

esposo

i1

i201

i301 i401

i103

filhos

endereço

Pessoa1= i1

Pessoa2= i1

Pessoa3= i101

Filhos1= i3

Filhos2= i103

Page 10: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 10

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

Page 11: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 11

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

Page 12: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 12

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éciede barramento de dados

houve a preocupação de garantirque o modelo de objectos ODMGfosse um superconjunto do modelode objectos OMG

IDLIDLIDL

CORBA

Page 13: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 13

em ODL o Mundo é constituído por objectos, com identidade, agrupados em classes

uma classe agrupa objectos que correspondem a conceitos do mundo real semelhantes têm todos as mesmas propriedades

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

Linguagem de Definição de Objectos

Page 14: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 14

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, pretoBrancointerface Estrela {

attribute string nome;attribute Struct Morada {string rua, string cidade} endereco;

} neste exemplo existe um atributo composto, mas sem referência

Page 15: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 15

Associações Representar as participações de estrelas em filmes

acrescenta uma linha a Filme com um conjunto (Set) de referências para Estrelasrelationship 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;

nome tituloFilmeEstrela

moradarua

filmes

cidade

anocomprimento

estrelastipoFilme

Page 16: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 16

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.

Page 17: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 17

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

Page 18: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 18

Tipos em ODL Tipos atómicos integer, float, character, string, boolean, enumeration

enumerações são listas de constantes vistas como sinónimos dos inteiros 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 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

Page 19: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 19

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

Page 20: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 20

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){…}

Page 21: Modelo de objectos - 1 Funções SGBD qpersistência qtransacções qcontrolo da concorrência qrecuperação qpesquisa qversões qintegridade qsegurança qdesempenho

Modelo de objectos - 21

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