58
Bancos de Dados Orientados a Objeto 1 SGBDOO Abril 2008 Prof. Ricardo Ramos CEFET-PI Pós-graduação Lato Sensu Especialização em Banco de Dados

Material Bd Orientado a Obj 2

Embed Size (px)

DESCRIPTION

OO

Citation preview

  • Bancos de Dados Orientados a Objeto

    1SGBDOO Abril 2008

    Prof. Ricardo Ramos

    CEFET-PI

    Ps-graduao Lato Sensu

    Especializao em Banco de Dados

  • Introduo

    2

    Entretanto, os modelos e sistemas de dados convencionais apresentam algumas deficincias quando aplicaes de bancos de dados mais complexas precisam ser projetadas e implementadas.

    Modelos e sistemas de dados convencionais, como o sistema relacional, de rede e hierrquico, vm sendo muito bem-sucedidos para aplicaes convencionais de bancos de dados comerciais.

  • Introduo

    3

    - projetos de engenharia e arquitetura;

    Exemplos de aplicaes mais complexas:

    - experincias cientficas;

    - telecomunicaes;

    - sistemas de informaes geogrficas (SIG);

    - multimdia.

  • Introduo

    4

    - estruturas mais complexas para objetos;

    Caractersticas de aplicaes mais complexas:

    - transaes de durao mais longa;

    - novos tipos de dados para armazenar imagens ou grandes itens de texto;

    - necessidade de definir operaes especficas de aplicaes no-padronizadas.

  • Introduo

    5

    A soluo para essas aplicaes mais complexas so os bancos de dados orientados a objetos (BDOO).

    Caracterstica chave dos BDOO:

    - pode-se especificar tanto a estruturaestruturaestruturaestrutura de objetos complexos;

    - como as operaesoperaesoperaesoperaes que podem ser aplicadas a esses objetos.

  • Introduo

    6

    Outra razo para criao de BDOO:

    - uso crescente de linguagens de programao orientadas a objetos no desenvolvimento de aplicaes de software.

    BDOOs so projetados de forma que possam ser diretamente ou de maneira unificada integrados com software que seja desenvolvido com o uso de linguagens de programao orientada a objetos.

  • Introduo

    7

    Alguns sistemas comerciais so:

    - GEMSTONE/OPAL da Gemstone Systems;

    - ONTOS da Ontos;

    - Objectivity da Objectivity Inc.;

    - Versant da Versant Object Technology;

    - ObjectStore da Object Design;

    - ARDENT da ARDENT Software;

    - Ozone e db4odb4odb4odb4o (Open source);

  • Viso Geral de OO

    8

    O termo orientado a objetos abreviado OO, tem suas origens nas linguagens de programao OO ou LPOOs.

    As LPOOs possuem suas razes na linguagem SIMULA, que foi proposta ao final dos anos 1960.

    Em SIMULA, o conceito de uma classeclasseclasseclasse agrupa a estrutura interna de dados de um objeto numa declarao de classe.

  • Viso Geral de OO

    9

    Em SIMULA, pesquisadores propuseram o conceito de tipo abstrato de dados, tipo abstrato de dados, tipo abstrato de dados, tipo abstrato de dados, que esconde as estruturas internas de dados, dados, dados, dados, e especifica todas as possveis operaesoperaesoperaesoperaes externas que podem ser aplicadas a um objeto, levando ao conceito de encapsulamentoencapsulamentoencapsulamentoencapsulamento.

    A linguagem de programao SMALLTALK, desenvolvida na Xerox PARC nos anos 1970, foi uma das primeiras linguagens a explicitamente incorporar conceitos OO adicionais como heranaheranaheranaheranae transmisso de mensagensmensagensmensagensmensagens.

  • Viso Geral de OO

    10

    SMALLTALK, uma linguagem de programao pura, pura, pura, pura, isto , foi explicitamente projetada para ser orientada a objetos.

    LPOOs hbridas hbridas hbridas hbridas incorporam conceitos OO a uma linguagem j existente.

    Exemplo de LPOO hbrida: C++, que incorpora conceitos OO linguagem de programao C.

  • Viso Geral de OO

    11

    Um objeto geralmente possui dois componentes: estado (valorvalorvalorvalor) e comportamento (operaesoperaesoperaesoperaes).

    Uma operao definida em duas partes:

    - assinaturaassinaturaassinaturaassinatura ou interfaceinterfaceinterfaceinterface que especifica o nome e os argumentos (ou parmetros);

    - mtodomtodomtodomtodo ou corpocorpocorpocorpo que especifica a sua implementao.

  • Viso Geral de OO

    12

    Operaes podem ser invocadas passando uma mensagemmensagemmensagemmensagem para um objeto que inclua o nome e os parmetros da operao.

    O encapsulamento permite a modificao da estrutura interna de um objeto, bem como a implementao de suas operaes, sem a necessidade de atrapalhar os programas externos que invoquem essas operaes.

  • Viso Geral de OO

    13

    O encapsulamento serve como uma forma de independncia de dadosindependncia de dadosindependncia de dadosindependncia de dados e operaesoperaesoperaesoperaes.

    Um objeto semelhante a uma varivel de programa numa linguagem de programao, exceto pelo fato de que geralmente ter uma estrutura de dados complexa, bem como operaes especficas definidas pelo programador.

  • Viso Geral de OO

    14

    Objetos transientesObjetos transientesObjetos transientesObjetos transientes so objetos numa LPOO que existem somente durante a execuo de um programa.

    BDOOs armazenam objetos persistentesobjetos persistentesobjetos persistentesobjetos persistentes, que so objetos armazenados permanentemente e, portanto, os objetos persistem aps a terminao do programa e podem ser posteriormente recuperados e compartilhados com outros programas.

  • Viso Geral de OO

    15

    Um objetivo dos BDOOs:

    Soluo: BDOOs fornecem um identificador de identificador de identificador de identificador de objeto (OID)objeto (OID)objeto (OID)objeto (OID) gerado pelo sistema, individual para cada objeto.

    - manter uma correspondncia direta entre objetos do mundo real e objetos do banco de dados, de forma que os objetos no percam sua integridade e identidade, e possam facilmente ser identificados e operados.

  • Viso Geral de OO

    16

    Um conceito-chave em sistemas OO herana, herana, herana, herana, que permite a especificao de novos tipos e classes que herdam grande parte de suas estruturas e operaes de tipos ou classes previamente definidos.

    Um outro conceito OO o polimorfismopolimorfismopolimorfismopolimorfismo do operador, que representa a capacidade de uma operao de ser aplicada a diferentes tipos de objetos; em tal situao, um nome de operao pode se referir a vrias implementaes distintas, dependendo do tipo de objetos aos quais aplicada.

  • Identidade do Objeto

    17

    Um sistema de banco de dados OO fornece uma identidade nica para cada objeto independente armazenado no banco de dados.

    Essa identidade nica geralmente implementada atravs de identificador de objetoidentificador de objetoidentificador de objetoidentificador de objeto, ou OIDOIDOIDOID nico, gerado pelo sistema.

    O valor de um OID no visvel para o usurio externo, mas utilizado internamente pelo sistema para identificar cada objeto univocamente e para criar e gerenciar referncias interobjeto.

  • Identidade do Objeto

    18

    Principal propriedade de OID:

    Um sistema de BDOO deve possuir algum mecanismo para gerar OIDs e preservar a propriedade de imutabilidade.

    - imutabilidadeimutabilidadeimutabilidadeimutabilidade, isto , o valor do OID para um determinado objeto no deve se alterar.

    desejvel que cada OID seja utilizado apenas uma vez, ou seja, mesmo se um objeto for removido do banco de dados, seu OID no deve ser atribudo a outro objeto.

  • Estrutura do Objeto

    19

    Em BDOOs, o estado (valor corrente) de um objeto complexo pode ser construdo a partir de outros objetos utilizando certos construtores de construtores de construtores de construtores de tipotipotipotipo.

    Uma maneira formal de representar tais objetos visualizar cada objeto como um trio (iiii, cccc, vvvv) onde:

    - i, i, i, i, um OID nico;- c, c, c, c, um construtor de tipo;

    - v, v, v, v, o estado ou valor do objeto.

  • Estrutura do Objeto

    20

    Os construtores de tipo mais bsicos so:

    - atomatomatomatom(tomo), , , , valores atmicos bsicos, como nmeros inteiros, reais, string de caracteres, booleanos, etc;

    - tuplatuplatuplatupla, , , , o estado v v v v uma tupla da forma onde cada aj um nome de atributo e cada ij um OID;

    - setsetsetset(conjunto), , , , o estado v v v v um conjunto de identificadores de objeto {i1, i2, ... , in} que so os OIDs para um conjunto de objetos que so tipicamente do mesmo tipo.

  • Estrutura do Objeto

    21

    Outros construtores geralmente utilizados incluem:

    - listlistlistlist(lista), , , , o valor v v v v uma lista ordenada {i1, i2, ... , in} de OIDs de objetos do mesmo tipo;

    ObservaoObservaoObservaoObservao: Uma lista semelhante a um conjunto exceto pelo fato que os OIDs esto ordenados, e por conseguinte, podemos nos referir ao primeiro, segundo ou j-simo objeto da lista.

  • Estrutura do Objeto

    22

    - arrayarrayarrayarray, , , , o estado do objeto uma disposio (array) unidimensional de OIDs;

    ObservaoObservaoObservaoObservao: A principal diferena entre lista e array que uma lista pode possuir um nmero arbitrrio de elementos, enquanto um arraygeralmente possui um tamanho mximo.

    - bagbagbagbag, , , , semelhante a um conjunto, porm pode possuir elementos duplicados.

    ObservaoObservaoObservaoObservao: Em um conjunto todos os elementos devem ser diferentes.

  • Estrutura do Objeto

    23

    Os construtores de tipoconstrutores de tipoconstrutores de tipoconstrutores de tipo set, list, array e bag so chamados tipos de coleo, para distingui-los de tipos bsicos e tuplas.

    Exemplo 1: Exemplo 1: Exemplo 1: Exemplo 1: Um objeto complexo.

    Um objeto definido atravs de:

    - um trio (OID, construtor de tipo, estado), ou melhor (i, c, v);

    - onde c = atom, set, tupla;

  • Estrutura do Objeto

    24

    - e i1, i2, i3, ... para representar OIDs gerados pelo sistema.

    o1 = (i1, atom, Teresina)

    o2 = (i2, atom, Fortaleza)

    o3 = (i3, atom, 5)

    o4 = (i4, set, { i1, i2 })

    o5 = (i5, tupla,

  • Estrutura do Objeto

    25

    Diz-se que objetos possuem estados idnticosestados idnticosestados idnticosestados idnticosse os grficos representando seus estados forem idnticos em todos os aspectos, incluindo OIDs em cada nvel.

    Dois objetos possuem estados iguaisestados iguaisestados iguaisestados iguais quando as estruturas de grficos devem ser as mesmas, e todos os valores atmicos correspondentes no grfico tambm devem ser os mesmos. Entretanto, alguns ns internos correspondentes nos dois grficos podem possuir objetos com OIDsdiferentes.

  • Estrutura do Objeto

    26

    Exemplo 2: Exemplo 2: Exemplo 2: Exemplo 2: Objetos idnticos x Objetos iguais

    o1 = (i1, tupla, < a1: i4, a2: i6 >)

    o2 = (i2, tupla, < a1: i5, a2: i6 >)

    o3 = (i3, tupla, < a1: i4, a2: i6 >)

    o4 = (i4, atom, 10)

    o5 = (i5, atom, 10)

    o6 = (i6, atom, 20)

    1) o1 e o3 so ?

    Resp. Objetos iguais

    2) o1 e o2 so ?

    Resp. Objetos iguais

    3) o4 e o5 so ?

    Resp. Objetos iguais

  • Construtores de Tipo

    27

    Uma linguagem de definio de objetolinguagem de definio de objetolinguagem de definio de objetolinguagem de definio de objeto (ODL) que incorpora os construtores de tipos citados anteriormente pode ser utilizada para definir os tipos de objetostipos de objetostipos de objetostipos de objetos para uma determinada aplicao de banco de dados.

    O exemplo a seguir especifica os tipos de objeto Empregado, Data e Departamento, utilizando construtores de tipo.

  • Construtores de Tipo

    28

    Exemplo 3Exemplo 3Exemplo 3Exemplo 3

    define type EmpregadoEmpregadoEmpregadoEmpregado: tuple(nome: string;identidade: integer;datadenascimento: DataDataDataData;supervisor: EmpregadoEmpregadoEmpregadoEmpregado;departamento: DepartamentoDepartamentoDepartamentoDepartamento;);

    define type DepartamentoDepartamentoDepartamentoDepartamento: tuple(nomed: string;numerodep: integer;ger: tuple ( gerente: EmpregadoEmpregadoEmpregadoEmpregado, datainicio: DataDataDataData;);empregados: set(EmpregadoEmpregadoEmpregadoEmpregado);localizaes: set(string); );

    define type DataDataDataData: tuple(ano: integer;ms: integer;dia: integer; );

  • Construtores de Tipo

    29

    Atributos que se referem a outros objetos tais como o departamentodepartamentodepartamentodepartamento de empregado (um OID) ou empregadosempregadosempregadosempregados de Departamento (um conjunto de OIDs) so basicamente referncias a outros objetos e, portanto, servem para representar relacionamentos entre os tipos de objeto.

  • Comportamento de Objetos

    30

    Os conceitos de ocultao e encapsulamento de informaes podem ser aplicados a objetos do banco de dados. A idia principal definir o comportamentocomportamentocomportamentocomportamento de um tipo de objeto baseado nas operaesoperaesoperaesoperaes que podem ser externamente aplicadas aos objetos daquele tipo.

    A estrutura interna do objeto fica oculta e o objeto somente se torna acessvel atravs de uma srie de operaes predefinidas.

  • Comportamento de Objetos

    31

    Os usurios externos do objeto se tornam cientes apenas da interfaceinterfaceinterfaceinterface do tipo de objeto, que define os nomes e argumentos (parmetros) de cada operao.

    A implementao fica oculta para usurios externos; ela inclui a definio das estruturas de dados internas do objeto e a implementao das operaes que acessam essas estruturas.

  • Comportamento de Objetos

    32

    Na terminologia OO, a parte de interface de cada operao chamada de assinaturaassinaturaassinaturaassinatura, e a implementao da operao chamada de mtodomtodomtodomtodo.

    Geralmente, um mtodo invocado enviando-se uma mensagemmensagemmensagemmensagem para o objeto, para que seja executado o mtodo correspondente.

    O termo classeclasseclasseclasse geralmente utilizado para fazer referncia a uma definio de tipo de objeto, juntamente com as definies das operaes para aquele tipo.

  • Comportamento de Objetos

    33

    Exemplo 4Exemplo 4Exemplo 4Exemplo 4

    define class EmpregadoEmpregadoEmpregadoEmpregado: typetypetypetype tupletupletupletuple(nome: string;identidade: integer;datadenascimento: Data;supervisor: Empregado;departamento: Departamento;); operationsoperationsoperationsoperationsidade: integer;criaremp: Empregado;destruiremp: boolean;endendendend Empregado;

  • Comportamento de Objetos

    34

    Exemplo 4 (cont)Exemplo 4 (cont)Exemplo 4 (cont)Exemplo 4 (cont)

    define class DepartamentoDepartamentoDepartamentoDepartamento: typetypetypetype tupletupletupletuple(nomed: string;numerodep: integer;ger: tuple ( gerente: EmpregadoEmpregadoEmpregadoEmpregado, datainicio: DataDataDataData;);empregados: set(EmpregadoEmpregadoEmpregadoEmpregado);localizaes: set(string); ); operationsoperationsoperationsoperationsnumeroemp: integer;criardep: Departamento;destruirdep: boolean;endendendend Departamento;

  • Persistncia de Objetos

    35

    Os mecanismos usuais para tornar objetos persistentes so a nomeaonomeaonomeaonomeao e a acessibilidadeacessibilidadeacessibilidadeacessibilidade.

    O mecanismo de nomeaonomeaonomeaonomeao envolve dar a um objeto um nome persistente nico, atravs do qual ele possa ser recuperado por aquele ou outros programas.

    Obviamente, no prtico dar nomes a todos os objetos num grande banco de dados que inclua milhares de objetos.

  • Persistncia de Objetos

    36

    A maioria dos objetos se torna persistente atravs da utilizao do mecanismo de acessibilidadeacessibilidadeacessibilidadeacessibilidade. O mecanismo de acessibilidade opera tornando o objeto acessvel a partir de algum objeto persistente.

    Se primeiramente criarmos um objeto N chamado persistente, cujo valor seja um conjunto ou lista de objetos de alguma classe C, podemos tornar os objetos de C persistentes, adicionando-os ao conjunto (set) ou lista (list), e dessa maneira tornando-os acessveis de N.

  • Hierarquias de Tipo e Herana

    37

    Na maioria das aplicaes de banco de dados, existem inmeros objetos do mesmo tipo ou classe. BDOO permitem a definio de novos tipos baseados em outros tipos predefinidos, conduzindo a uma hierarquia de tipohierarquia de tipohierarquia de tipohierarquia de tipo.

    Geralmente, um tipo definido designando a ele um nomenomenomenome e estabelecendo ento um nmero de atributos atributos atributos atributos (variveis de instncia) e operaesoperaesoperaesoperaes(mtodos) para o tipo.

  • Hierarquias de Tipo e Herana

    38

    Um tipo, em sua forma mais simples, pode ser definido dando-se ao mesmo um nome de tipo e depois listar os nomes de suas funes (atributos e operaes) como visveis (pblicas).

    Exemplo 5: Exemplo 5: Exemplo 5: Exemplo 5: Um tipo que descreve as caractersticas de uma pessoa.

    pessoa: : : : nome, endereco, datadenascimento, idade

    nome do tipo operao (mtodo)atributos

  • Hierarquias de Tipo e Herana

    39

    O conceito de subtiposubtiposubtiposubtipo til quando o projetista ou o usurio precisam criar um novo tipo que seja semelhante, mas no idntico a um tipo j definido. O subtipo herda todas as funes do tipo predefinido, que chamaremos de supertiposupertiposupertiposupertipo.

    Exemplo 6: Exemplo 6: Exemplo 6: Exemplo 6: Subtipo de pessoa

    empregado: : : : nome, endereco, datadenascimento, idade, salario, datacontratacao, temposervico

    empregado subtypesubtypesubtypesubtype----ofofofof pessoa: : : : salario, datacontratacao, temposervico

  • Hierarquias de Tipo e Herana

    40

    Em geral, um subtipo inclui todas as funes que so definidas por seu supertipo. Alm de algumas funes que so especficas somente para o subtipo.

    Portanto possvel gerar uma hierarquia de tipo para mostrar os relacionamentos supertipo/subtipo entre todos os tipos declarados no sistema.

  • Hierarquias de Tipo e Herana

    41

    Exemplo 7: Exemplo 7: Exemplo 7: Exemplo 7:

    objeto_geometrico: : : : formato, areaareaareaarea, pontodereferencia

    retangulo subtypesubtypesubtypesubtype----ofofofof objeto_geometrico: : : : largura, altura

    circulo subtypesubtypesubtypesubtype----ofofofof objeto_geometrico: : : : raio

  • Objetos Complexos

    42

    Uma motivao principal que levou ao desenvolvimento de sistemas OO foi o desejo de representar objetos complexos.

    Existem dois tipos principais de objetos complexos:

    - estruturadosestruturadosestruturadosestruturados, que constitudo de componentes e definido atravs da aplicao dos construtores de tipo disponveis, de maneira recursiva em vrios nveis;

  • Objetos Complexos

    43

    - nononono----estruturadoestruturadoestruturadoestruturado, geralmente, um tipo de dado que requer um grande volume de armazenamento, tal como um tipo de dado que representa uma imagem ou um grande objeto de texto.

  • Objetos Complexos No-Estruturados

    44

    Uma facilidade de objeto complexo no-estruturado oferecida por um SGBD permite o armazenamento e recuperao de grandes objetos que so necessrios para a aplicao do banco de dados.

    Exemplos tpicos de tais objetos so imagens bitmap e strings de texto longo; tambm so conhecidos como binarybinarybinarybinary largelargelargelarge objectsobjectsobjectsobjects ou BLOBsBLOBsBLOBsBLOBs....

  • Objetos Complexos No-Estruturados

    45

    Esses objetos so no estruturados, o que significa que o SGBD no conhece a sua estrutura somente a aplicao que os utiliza pode interpretar seus significados.

    Os objetos so considerados complexos porque requerem uma grande rea de armazenamento e no so parte dos tipos de dados padres fornecidos pelos SGBDs convencionais. Uma vez que o objeto muito grande, um SGBD pode recuperar uma parte do objeto e fornec-lo ao programa da aplicao antes que o objeto seja recuperado por inteiro.

  • 46

    Um objeto complexo estruturado difere de um objeto complexo no-estruturado no sentido de que a estrutura do objeto definida atravs da aplicao repetida dos construtores de tipo oferecidos pelo SGBDOO.

    No Exemplo 3, podemos considerar os atributos nomednomednomednomed, numerodepnumerodepnumerodepnumerodep e localizaes localizaes localizaes localizaes como sendo propriedades de Departamento, Departamento, Departamento, Departamento, este relacionamento do tipo ----parteparteparteparte----de de de de ou ----componentecomponentecomponentecomponente----dededede....

    Objetos Complexos Estruturados

  • 47

    O relacionamento ----parteparteparteparte----dededede (semntica de semntica de semntica de semntica de propriedadepropriedadepropriedadepropriedade) para construir objetos complexos tem a propriedade de que os objetos componentes so encapsulados dentro do objeto complexoobjeto complexoobjeto complexoobjeto complexo e so considerados parte do estado do objeto interno.

    Eles no precisam possuir OIDs e somente podem ser acessados por mtodos daquele objeto. Eles so excludos se o prprio objeto for excludo.

    Objetos Complexos Estruturados

  • 48

    No Exemplo 3, o atributo empregadosempregadosempregadosempregados de Departamento Departamento Departamento Departamento uma referncia uma vez que referencia objetos independentes, este relacionamento do tipo ----associadoassociadoassociadoassociado----aaaa.

    O relacionamento ----associadoassociadoassociadoassociado----a a a a descreve uma associao de igualdade entre dois objetos independentes (semntica de refernciasemntica de refernciasemntica de refernciasemntica de referncia).

    Objetos Complexos Estruturados

  • 49

    Um objeto complexo cujos componentes sejam referenciados considerado como sendo constitudo de objetos independentes que podem possuir suas prprias identidades e mtodos.

    Quando um objeto complexo precisa acessar seus componentes referenciados, deve faz-lo invocando os mtodos apropriados dos componentes, uma vez que eles no so encapsulados dentro do objeto complexo.

    Objetos Complexos Estruturados

  • 50

    Portanto, a semntica de referncia representa relacionamentos entre objetos independentes.

    Alm disso, um objeto componente referenciado pode ser referenciado por mais de um objeto complexo e, dessa forma, no ser automaticamente excludo quando o objeto complexo for excludo.

    Objetos Complexos Estruturados

  • 51

    Uma outra caracterstica de sistemas OO que eles esto preparados para o polimorfismo de operaes, que tambm s vezes chamado de sobrecarga de operador.

    Este conceito permite que o mesmo smbolo ou nome do operador seja ligado a duas ou mais diferentes implementaes do operador, dependendo do tipo de objetos aos quais o operador seja aplicado.

    Polimorfismo (Sobrecarga de Operador)

  • 52

    Se os operandos de + forem do tipo:

    Polimorfismo (Sobrecarga de Operador)

    Exemplo 8: Exemplo 8: Exemplo 8: Exemplo 8: Operador +

    - inteirointeirointeirointeiro, a operao invocada a soma de nmeros inteiros;

    - ponto flutuanteponto flutuanteponto flutuanteponto flutuante, a operao invocada a soma de pontos flutuantes;

    - setsetsetset (conjunto), a operao invocada a unio de conjuntos.

  • 53

    Em SGBDOO uma situao semelhante ao Exemplo 7 pode ocorrer. O SGBDOO deve agora selecionar o mtodo apropriado para a funo rea, rea, rea, rea, com base no tipo de objeto geomtrico ao qual aplicado.

    Em sistemas fortemente tipados, isso pode ser feito em tempo de compilao, uma vez que os tipos de objetos devem ser conhecidos (staticstaticstaticstaticbindingbindingbindingbinding ou ligao estticaligao estticaligao estticaligao esttica).

    Polimorfismo (Sobrecarga de Operador)

  • 54

    Entretanto, em sistemas fracamente tipados, o tipo do objeto ao qual a funo aplicada pode no ser conhecido em tempo de compilao. Nesse caso, a funo deve verificar o tipo de objeto em tempo de execuo e ento invocar o mtodo apropriado (dynamicdynamicdynamicdynamic bindingbindingbindingbinding ou ligao ligao ligao ligao dinmicadinmicadinmicadinmica).

    Polimorfismo (Sobrecarga de Operador)

  • 55

    Uma herana mltipla em uma hierarquia de tipo ocorre quando um certo subtipo um subtipo de dois ou mais supertipos, e assim sendo, herda as funes (atributos e mtodos) de ambos os supertipos.

    Herana Mltipla e Herana Seletiva

    Por exemplo, podemos criar um subtipo gerente_de_engenhariagerente_de_engenhariagerente_de_engenhariagerente_de_engenharia que um subtipo de gerentegerentegerentegerente e engenheiro. engenheiro. engenheiro. engenheiro.

    Isso leva criao de uma grade de tipograde de tipograde de tipograde de tipo, em vez de hierarquia de tipo.

  • 56

    Um problema que pode ocorrer com a herana mltipla que os supertipos dos quais o subtipo tem herana podem ter funes distintas com o mesmo nome, criando uma ambiguidade (por exemplo, uma funo salriosalriosalriosalrio).

    Herana Mltipla e Herana Seletiva

    Uma herana seletivaherana seletivaherana seletivaherana seletiva ocorre quando um subtipo herda somente algumas das funes de um supertipo (clusula EXCEPT, EXCEPT, EXCEPT, EXCEPT, funes do supertipo que no devem ser herdadas).

  • 57

    PortabilidadePortabilidadePortabilidadePortabilidade geralmente se define como a capacidade de executar um determinado programa de aplicao em diferentes sistemas, com o mnimo de modificaes no programa em si.

    Padres de BDOO

    No campo de BDOO, a portabilidade permitiria a um programa acessar os SGBDOOs ObjectStore e O2 (agora chamado ARDENT), contanto que ambos suportem fidedignamente o padro.

    Isso importante para usurios de bancos de dados, que geralmente se sentem temerosos de investir em uma nova tecnologia se diferentes fabricantes no aderirem a um padro.

  • 58

    Uma das razes para o sucesso de SGBDsrelacionais comerciais o padro SQL.

    Padres de BDOO

    A falta de um padro para SGBDOO at tempos recentes pode ter inibido alguns usurios de se converterem a essa nova tecnologia.

    Um consrcio de vendedores de SGBDs, chamado ODMG (Object Data Management Group), props um padro (http://en.wikipedia.org/wiki/ODMG).