25

T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

Embed Size (px)

Citation preview

Page 1: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��������������

��������������������������

Page 2: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������

��������������������������

� Novas áreas de aplicação� Envolvem dados complexos, designados objectos� Envolvem operações complexas sobre esses objectos

� Bases de dados relacionais� Para suportar o conceito de objecto obrigam a uma decomposição pouco

natural, de forma a que os objectos possam ser armazenados em tabelas� Um objecto complexo, normalmente, tem uma estrutura hierárquica que

não se coaduna a uma representação do tipo tuplo� Os objectos complexos quando suportados por bases de dados

relacionais, provocam um grave problema de desempenho dada a sua reconstrução só ser possível pela junção de tabelas

� As linguagens de programação não fornecem as facilidades necessárias para o processamento eficiente de grandes volumes de dados – os dados na memória central só existem durante a execução do programa

� As linguagens de programação OO incorporam mecanismos para representação e manipulação de dados complexos.

Page 3: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��������������������������

� O modelo Object-Oriented de bases de dados combina conceitos provenientes de três áreas:

� Linguagens de Programação Object-oriented – objectos, classes, métodos, encapsulamento, etc

� Bases de Dados – segurança, integridade, controlo da concorrência, etc

� Modelos de Dados Semânticos – generalização, agregação, etc

� Ainda que inspiradas nas LPOO (smaltalk, C++) as BDOO fornecem facilidades para representação de dados complexos.� Os objectos das LPOO apenas existem durante a execução do programa – são

objectos transientes;� os objectos das BDOO existem para além do programa que os criou – são objectos

persistentes.

Page 4: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��������������������������

� Características das Bases de Dados Object-OrientedA tecnologia das BD’s Orientadas a Objectos tem em conjunto os conceitos das BD’s e o conceito da programação orientada a objectos.

e é esta combinação de conceitos que dá às BDOO as vantagens de tratarem dados complexos.

Page 5: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��������������������������

Abordagem tradicional Abordagem object-oriented

Page 6: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������

��������������������������

� Orientação ao objecto, o que significa?� Construção de sistemas a partir de colecções cooperativas de objectos� Os objectos cooperam (comunicam) passando mensagens às quais os

outros objectos reagem� Os objectos estão organizados em classes, que são membros de uma

hierarquia de classes unidas através de relações de herança� As classes têm comportamento idêntico, mas objectos da mesma classe

podem guardar informação diferente

� Princípios básicos� Uma boa análise e modelização são aspectos essenciais no

desenvolvimento de software, seja qual for o paradigma usado, ou seja, antes de começar a escrever programas temos que decidir sobre o que escrever

� No paradigma object-oriented, grande parte do trabalho consiste em decidir quais são os objectos do sistema. O analista tem de decidir:� Como dividir o sistema num conjunto de objectos interactuantes, ou seja, quais as

classes que permitem resolver o sistema� Qual o comportamento de cada objecto deve ter� Qual a interface que cada objecto deve ter� Como é que os objectos se relacionam com outros objectos

Page 7: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��������������������������

� Object-oriented� (analysis) Análise “object-oriented”� (design) Modelização “object-oriented”� (programming) Programação “object-oriented”

� Object-oriented analysis� Identificação do problema a resolver.� Quais são os requisitos do sistema?� Quais são os objectos (classes) necessários e quais são

as suas responsabilidades?� Como interagem uns com os outros?� Identificar quando usar herança e quando usar composição

na definição das classes

Page 8: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��������������������������

� Object-oriented design� Refinamento das classes identificadas na fase de análise� Especificação dos atributos e métodos de cada classe� Decidir que estruturas de dados e algoritmos usar

� Object-oriented programming� Um objecto é uma instância de uma classe� Tudo são objectos� Um programa é um conjunto de objectos dizendo uns aos

outros o que fazer através do envio de mensagens� Todos os objectos de uma classe em particular podem

receber as mesmas mensagens

Page 9: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��������������������������

� Modelo Object-oriented – Conceitos básicos� Classe� Objecto� Atributo� Operação� Método

� Modelo Object-oriented - Elementos� Abstracção� Encapsulamento� Modularidade� Hierarquia

Page 10: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ ��

����������� ��������������������������

� Classe� Estrutura lógica que representa um conjunto de objectos que

partilham a mesma estrutura e o mesmo comportamento� Objecto

� Instância de uma classe, mantendo a mesma estrutura de dados e de operações, mas contendo valores de dados próprios

� Atributo� Valor de um item de informação guardado pelos objectos de uma

classe� Operação

� Função ou transformação que pode ser aplicada aos objectos, ou por estes a outros objectos

� Método� Implementação de uma operação para uma classe

Page 11: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ ��

��!������� ��������������������������

� Abstracção� A abstracção denota as características

essenciais de um objecto que o distinguem de todos ou outros tipos de objectos e desta forma constitui fronteiras conceptuais bem definidas, relativamente à perspectiva do observador

� Incide sobre a visão externa do objecto, e desta forma permite separar o comportamento essencial de um objecto da sua implementação

� Os sistemas são naturalmente complexos, e por isso:� Agregamos as coisas que têm algo em comum

que seja significante, ignorando diferenças triviais� Como decidimos abstrair vai depender daquilo

que consideramos ser significante

Page 12: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��!������� ��������������������������

� Encapsulamento� Encapsulamento significa a inclusão de algo dentro de

algo, de tal forma que aquilo que foi incluído não évisível

� No contexto object-oriented, encapsulamento significa a inclusão dentro de um objecto, de todos os recursos necessários para o objecto funcionar (dados e métodos)

� Os objectos publicam as suas interfaces, e os outros objectos fazem uso dessas interfaces sem se preocuparem como o objecto as implementa

� A idéia base é: “Não quero saber como fazes, faz!”� O encapsulamento permite:

� Esconder todos os detalhes (e implementação) que não contribuam para as características essenciais de uma classe

� Separar a interface de uma abstracção da sua implementação

� Pode mudar-se a implementação sem alterar a interface� Quem usa o objecto não necessita de saber detalhes sobre

a implementação

Page 13: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ ��

��!������� ��������������������������

� Modularidade� É a propriedade de um sistema que foi decomposto num conjunto de

módulos coesos (agrupando abstracções logicamente relacionadas) e fracamente agrupados (minimizando a dependência entre módulos)

Exemplo:� Em C/C++ a convenção é criar dois ficheiros para cada classe. Um header file (sufixo

.h) para a interface da classe e um ficheiro de implementação (sufixo .c, .cp, …) para o código da classe

� Em C++ as dependências entre ficheiros são “declaradas” usando a macro #include.

// gplan.h#ifndef _GPLAN_H#define _GPLAN_H 1#include “gtypes.h”#include “except.h”#include “actions.h”class GrowingPlan …class GrainGrowingPlan ……#endif

Page 14: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ ��

��!������� ��������������������������

� Hierarquia� Mecanismo para expressar a similaridade entre classes, simplificando a

definição de classes iguais a outras que já foram definidas (reutilização de código). É uma forma de organizar as abstracções (classes)

� As hierarquias mais importantes num sistema são a estrutura das classes (hierarquia ‘is a’) e a estrutura através de agregação (hierarquia ‘part of’)

� generalização/especialização � ‘is a’� À medida que formamos a hierarquia das classes

colocamos os estados e comportamento comuns ao nível das classes superiores.

� As classes de topo são mais genéricas (abstractas) e as classes de níveis inferiores são mais específicas (concretas)

� Normalmente apenas instanciamos as classes do nível inferior

� agregação � ‘part of’� Os objectos seriam demasiado extensos se não fosse possível agregá-los.� Por exemplo, um objecto da classe Grafo naturalmente que contém uma Lista de nós.

Sem a possibilidade de agregação a classe Lista teria de ser duplicada no grafo

Page 15: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ ��

����������"����!�������# ������$$

� Identidade� Um objecto distingue-se dos outros pelo simples facto de existir� A sua identidade é independente dos valores dos seus atributos. Podemos

ter dois objectos idênticos, com todos os atributos iguais, que mesmo assim são dois objectos independentes

� Ao alocarmos dois objectos na memória do computador, embora possam ter todos os atributos iguais, os seus endereços de memória são diferentes

� Herança� Representa generalização e especialização� Torna explícitos os atributos e métodos comuns numa hierarquia de classes� Corresponde à transferência de propriedades estruturais e de

comportamento, de uma classe para as suas subclasses� Mensagem

� São a forma mais usada para a activação de métodos� Polimorfismo

� Capacidade de uma mesma mensagem ser entendida e executada de forma diferente por objectos distintos

� Também permite manipular objectos mais especializados como se fossem mais genéricos. Por exemplo, se a mensagem está definida numa especialização de uma classe, por herança estará definida na generalização

Page 16: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

%�����"���&'����������&'��������������� 1ºEtapa – Identificação e descrição dos objectos

� Pessoas, lugares ou coisas� São os objectos mais fáceis de observar pois são físicos. Mesmo se

forem entidades abstractas, pelo próprio estudo do processo de negócio são facilmente detectados

� Exemplo: pessoa, carro, disciplina, país, …� Momentos ou intervalos

� São eventos que ocorrem no processo real e que devem ser registados� Exemplo: uma venda, um depósito, …

� Papéis� As pessoas, lugares ou coisas participam nos eventos desempenhando

algum tipo de papel específico� Exemplo: pessoa participa numa venda como vendedor ou comprador…

� Descrições� Quando algo possui uma descrição razoavelmente constante, essa

descrição pode ficar desagregada do objecto real e ser reutilizada por outros objectos

� Exemplo: um carro pode ter uma descrição geral (nºde portas, potência, etc.) que pode ser reutilizada por diversos carros do mesmo modelo

Page 17: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ ��

����(�������������!���&'��������������

� Uma vez identificados os objectos há a necessidade de decidir quais os que vão ser incluídos no modelo de objectos.

� Codd e Yourdon sugeriram os seguintes critérios:� Necessidade de recordar alguma coisa

� Para o objecto Disciplina, o sistema tem de recordar atributos como o nome, nºde créditos, precedências, etc.

� Métodos necessários� Para o objecto Disciplina, o sistema esperará manter informação sobre o

regente num determinado ano lectivo� Mais do que um atributo

� Se um objecto candidato só tem um atributo, verificar se há a possibilidade de ter mais, ou então tentar integrá-lo noutro objecto

� Atributos comuns� Haverá um conjunto de atributos que se aplicam a cada ocorrência do

objecto?� Se alguns dos atributos só se aplicam a algumas ocorrências, isso

indicia a existência de uma hierarquia

Page 18: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ ��

���������������������

� A um objecto estão associados:� Um conjunto de atributos que contêm a informação sobre o objecto� Um conjunto de mensagens às quais o objecto responde� Um conjunto de métodos, cada um consistindo em código que implementa

uma mensagem; um método devolve um valor como resposta a uma mensagem

� A representação física de um objecto só está visível a quem implementou

� As mensagens (e respostas) são a única interface possível com o objecto

� Os métodos são programas com as seguintes características� Só se podem usar (directamente) variáveis do próprio objecto� Dados de outros objectos só podem ser acedidos pelo envio de mensagens� Podem ser read-only ou permitir actualizações

� Levado ao extremo, cada atributo tem de ser representado por umavariável (que guarda o valor) e dois métodos (um para ler o valor, e outro para o alterar)

Page 19: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ ��

%�����"���������������������

� Os identificadores dos objectos (OID) surgem da necessidade de distinguir os objectos entre si, quaisquer que sejam as suas características

� Cada objecto recebe, na altura da instanciação, um OID único e gerado pelo sistema

� Cada objecto tem apenas um OID, e o seu valor não seráreutilizado mesmo quando o objecto correspondente for eliminado do sistema

� No modelo OO, as referências entre objectos fazem-se utilizando os seus OID, pelo que é possível fazer qualquer alteração aos seus atributos, incluindo aqueles que conceptualmente são considerados chave

� Apesar disso, o conceito de chave pode continuar a desempenhar um papel importante ao nível da interface com os utilizadores, contudo, ao nível da base de dados OO esses atributos não têm qualquer estatuto especial

Page 20: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��)�����$�����������$�������2ª ETAPA – Identificação dos relacionamentos

LIGAÇÕES E ASSOCIAÇÕES – são meios para estabelecer relacionamentos entre objectos e classes

ligação opcional – 0-1

ligação obrigatória

ligação opcional – 0 – muitos

ligação obrigatória – 1- muitos

Page 21: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��)�����$�����������$�������� GENERALIZAÇÃO

Uma das características dos modelos de dados orientados a objectos é a que explicita as relações classe-subclasses.Generalização é o relacionamento entre uma classe e uma ou mais versões refinadas dela.A classe que estiver em processo de refinamento é chamada de super-classe e cada versão refinada é denominada de sub-classe.

A generalização hierárquica é um agrupamento hierárquico de objectos que têm em comum os mesmos atributos e métodos.

A generalização pode ser exaustiva O ou não exaustiva O

Page 22: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������

��)�����$�����������$�������� Exemplo

Generalização hierárquica simples, exaustiva e exclusiva

EMPLOYEE

HOURLY SALARIED CONSULTANT

Page 23: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��)�����$�����������$�������� HERANÇA

Significa que todas as propriedades (atributos e métodos) de uma classe de objectos se repercutem nas suas sub-classes.

Employee No.Name

AddressDate Hired

Date of Birth

Contract No.*Date Hired

Annual SalaryStock Option

Hourly Rate

EMPLOYEE

Hourly SALARIED CONSULTANT

CalculateAge

CalculateMonthlyWageAllocateToContractCalculateStockBenefit

Page 24: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��)�����$�����������$�������� Os atributos de EMPLOYEE aplicam-se a todas as três sub-classes.� Do mesmo modo o método de cálculo da idade – CalculateAge – se aplica atodos os

empregados – EMPLOYEE.� Propriedades únicas por cada sub-classe são assignadas a essa sub-classe.� Se um atributo se aplica a mais de uma sub-classe, mas não a todas, é assinalado na sub-

classe em que não se aplica com um * (ex., Date Hired)� No exemplo as sub-classes eram exclusivas (estrutura OR) . Mas podem não ser.

Estrutura AND

Page 25: T Aula 10 - Departamento de Engenharia Informáticancastro/Teoricas/TAula10.pdf · partilham a mesma estrutura e o mesmo comportamento Objecto Instância de uma classe, mantendo a

��������� ������ �

��)�����$�����������$�������� Outra situação é o facto das sub-classes não serem exaustivas, isto é, há outras

sub-classes não identificadas.

por exemplo, falta a sub-classe BICICLETA

VEÍCULO

AUTOMÓVEL AUTOCARRO MOTOCICLO