Escolar Documentos
Profissional Documentos
Cultura Documentos
OBJETOS
INTRODUÇÃO
2
3
RELEMBRANDO...
PROJETO DE UM SISTEMA
▪ É uma atividade de modelagem do processo de
software que define como o sistema será
implementado, levando-se em conta os requisitos
não-funcionais (tais como desempenho, segurança
contra acessos indevidos, contra perdas, dentre
outros).
Denise F. Togneri
RELEMBRANDO... 4
PROJETO DE UM SISTEMA
▪ De forma geral, independente de paradigma, 4
grandes subatividades devem ser desenvolvidas:
▪ Projeto de Arquitetura do Sistema e do Software
▪ Projeto de Interface (com o usuários, com outros
sistemas, entre os módulos do sistema)
▪ Projeto de Dados
▪ Projeto de Componentes
▪ para sistemas OO, o Projeto de Componentes consiste
em: Projeto da Arquitetura OO do Sistema e Projeto
de Objetos, que serão vistos a seguir.
Denise F. Togneri
4
5
PROJETO ORIENTADO A OBJETOS
INTRODUÇÃO
▪ ANÁLISE OO
▪ Tecnologia “perfeita” disponível;
▪ Ênfase no que o sistema deve fazer;
▪ Identifica e define classes que refletem diretamente o domínio do
problema e as responsabilidades do sistema dentro dele.
▪ PROJETO OO
▪ Sabe-se que o sistema será construído em uma plataforma de
implementação (HW, SO, SGBD, linguagem de programação, ...);
▪ Ênfase em como os requisitos serão implementados;
▪ Transforma o modelo de análise em um modelo de projeto que serve de
base para a construção do software;
▪ Identifica e define classes adicionais, refletindo requisitos de
implementação.
Denise F. Togneri
6
PROJETO ORIENTADO A OBJETOS -
É DEPENDENTE DE:
▪ Características da linguagem de programação a ser utilizada
▪ Qual tipo de linguagem ? Orientada a objetos, a eventos, convencional, .... ?
▪ Se for uma LPOO qual o nível de herança suportado (simples, múltipla) ?
▪ Quais os mecanismos de acesso a atributos e operações ?
▪ Modelo de Persistência de Objetos
▪ SGBDOO, SGBDR, SGBD NoSQL, arquivos, persistência no ambiente da
própria linguagem de programação?
▪ Características da Plataforma de Implementação
▪ A plataforma é multi-processada, a arquitetura é three-tier, C/S ?
▪ O sistema é distribuído ?
▪ Características da Interface com o usuário
▪ Qual tipo ? Interfaces para aplicativos móveis, para sistemas Web,
Interfaces gráficas padrão Windows, orientadas a caracter, .... ?
Denise F. Togneri
6
PROJETO ORIENTADO A OBJETOS 7
INTRODUÇÃO
Denise F. Togneri
INTRODUÇÃO
▪ Entretanto, a perspectiva de implementação existente no projeto demanda
extensões à notação da análise para permitir representar
▪ visibilidade
▪ persistência
▪ concorrência
▪ exceções
▪ restrições.
Denise F. Togneri
8
PROJETO DE
COMPONENTES
ORIENTADO A OBJETOS
10
PROJETO DOS COMPONENTES ORIENTADO A
OBJETOS - INTRODUÇÃO
▪ De modo geral, dois grandes passos do processo de projeto
OO podem ser identificados (apesar dos diferentes métodos de
projeto OO) no Projeto de Componentes OO (PRESSMAN,
2016):
▪ Projeto da Arquitetura OO do Sistema: descreve cada
um dos subsistemas, de um modo passível de
implementação, e as comunicações entre eles;
▪ Projeto de Objetos: descreve aspectos de implementação
de cada uma das classes do sistema, incluindo o projeto
procedural de cada operação, a definição de classes internas
e o projeto de estruturas de dados para os atributos das
classes.
Denise F. Togneri
10
PROJETO DA ARQUITETURA OO DE UM 11
SISTEMA
▪ É a primeira tarefa a ser realizada em um projeto OO.
Denise F. Togneri
11
PROJETO ARQUITETURAL OO 12
Denise F. Togneri
12
PROJETO ARQUITETURAL OO 13
1º PRINCÍPIO: PRODUÇÃO DO SW EM
CAMADAS
▪ Uma boa arquitetura de software OO deve ser pensada em termos dos
componentes que deverão compor o software.
Denise F. Togneri
13
PROJETO ARQUITETURAL OO 14
Denise F. Togneri
14
PROJETO ARQUITETURAL OO 15
Redes e
Comunicação
Domínio do
Sistemas Problema
Operacionais
Isolando o Domínio do
Banco de Dados
Problema, se fosse
necessário trocar o SGBD, Criar objetos nesta
não precisaria jogar fora interface para fazer a
Gerência de Tarefa Gerência de Tarefa
o domínio do problema.
15
16
PROJETO ARQUITETURAL OO
Denise F. Togneri
16
17
PROJETO ARQUITETURAL OO
▪ PONTO DE PARTIDA PARA DEFINIÇÃO DA ARQUITETURA
▪ Os Diagramas de Casos de Uso
▪ A Organização das Classes em Pacotes
Denise F. Togneri
17
PROJETO ARQUITETURAL OO 18
▪ Não podemos ter uma classe com dois estereótipos, uma vez
que ela possuiria duas responsabilidades distintas, o que
deveria levar a duas classes distintas (MAGELA, 1998).
Denise F. Togneri
18
PROJETO ARQUITETURAL OO 19
Denise F. Togneri
19
PROJETO ARQUITETURAL OO 20
20
PROJETO ARQUITETURAL OO 21
21
PROJETO ARQUITETURAL OO 22
COMPONENTES DE PROJETO
▪ Comunidade de Smalltalk: desenvolveu uma metáfora simples,
para uma arquitetura de projeto, conhecida como Modelo MVC
- “Modelo-Visão-Controlador” (Model-View-Controller)
22
PROJETO ARQUITETURAL OO 23
COMPONENTES DE PROJETO
▪ Durante o projeto da arquitetura OO do sistema, um engenheiro
de software deve considerar quatro (e não apenas três)
componentes básicos (COAD; YOURDON, 1993):
▪ Componente do Domínio do Problema: corresponde aos
subsistemas responsáveis por implementar diretamente os
requisitos dos usuários; o modelo de análise suporta este
componente.
▪ Componente de Interação Humana: corresponde aos
subsistemas que implementam as interfaces com o usuário;
▪ Componente de Gerência de Tarefa: corresponde aos
subsistemas responsáveis por controlar e coordenar tarefas;
▪ Componente de Gerência de Dados: corresponde aos
subsistemas responsáveis pelo armazenamento e recuperação
de objetos (persistência dos objetos).
Denise F. Togneri
23
PROJETO ARQUITETURAL OO 24
COMPONENTES DE PROJETO
M V C P
(model) (view) (controller) (persistent)
Denise F. Togneri
24
PROJETO ARQUITETURAL OO 25
COMPONENTES DE PROJETO
RELAÇÃO ENTRE OS COMPONENTES
Entre a CIH e a CGT: deve-se decidir no projeto qual
componente toma a iniciativa de solicitar os serviços !
Componente 1 Componente
Interacao Humana Gerencia Tarefas
permitido somente
para montagem 2
da interface
Componente 3 Componente
Gerencia Dados Dominio Problema
CDP solicita
serviços ao CGD
Denise F. Togneri
25
PROJETO ARQUITETURAL OO 26
COMPONENTES DE PROJETO
Denise F. Togneri
26
PROJETO ARQUITETURAL OO 27
COMPONENTES DE PROJETO
Camada de Interface
com Usuário
Camada de Gerência
de Tarefa
Sistemas Camada de Comunicação
Operacionais Domínio de de Dados
Problema
Camada de Gerência
▪ Produção de software de Dados
em camadas
▪ Separação entre
interface e
implementação
27
PROJETO ARQUITETURAL OO 28
COMPONENTES DE PROJETO
▪ FILOSOFIA DE PROJETO POR DETRÁS DESSA ARQUITETURA
▪ Sugere que as classes centrais, orientadas à aplicação no CDP, não
devem estar cientes do “mundo exterior” e não têm de saber como
interagir com tal mundo.
▪ Sem uma atenção consciente a esta filosofia, podemos chegar a uma
arquitetura na qual cada classe:
▪ sabe como interagir com o usuário final
▪ sabe como ler e escrever seus dados permanentes em arquivos
de disco.
▪ Uma abordagem assim poderia funcionar (quem sabe até de
maneira mais rápida), mas seria muito suscetível a mudanças na
interface com o usuário ou no modelo de persistência.
▪ Além disto, tornaria a estrutura interna das classes mais complexa do
que se tivessem de estar cientes apenas de seus detalhes essenciais,
ligados ao domínio da aplicação.
Denise F. Togneri
28
29
PROJETO ARQUITETURAL OO
COMPONENTES DE PROJETO
▪ PRODUTO
▪ Diagrama de Pacotes
29
PROJETO ARQUITETURAL OO
EXEMPLO DE ORGANIZ. DE CLASSES POR
DOMÍNIO DO PROBLEMA E POR ESTEREÓTIPOS
Projeto de Arquitetura do Software
Diagrama de Classes Principal de Projeto
Atendimento ControleAcervo
Cliente
Utilitario
30
PROJETO ARQUITETURAL OO
EXEMPLO DE ORGANIZ. DE CLASSES POR
DOMÍNIO DO PROBLEMA E POR ESTEREÓTIPOS
Projeto de Arquitetura do Software
Diagrama de Classes – Pacote ControleAcervo
UtilitarioPessoa GT_Controle
(from Utilitario) Acervo
31
PROJETO DE UM SISTEMA
▪ De forma geral, independente de paradigma, 4 grandes sub-atividades
devem ser desenvolvidas:
▪ Projeto de Arquitetura do Sistema e do Software
▪ Projeto de Interface (com o usuários, com outros sistemas, entre os
módulos do sistema)
▪ Projeto de Dados (Modelo Lógico dos Dados)
▪ Projeto de Componentes → projeto das classes!
▪ Projeto da Arquitetura OO do Sistema
▪ Componente de Interação Humana (CIH)
▪ Componente de Gerência de Tarefas (CGT)
▪ Componente de Domínio do Problema (CDP)
▪ Componente de Gerência de Dados (CGD)
▪ Projeto de Objetos
▪ Projeto dos atributos (tipo de dado e visibilidade)
▪ Projeto dos Métodos
Denise F. Togneri
32
COMPONENTE DE DOMÍNIO
DO PROBLEMA
33
PROJETO ARQUITETURAL OO 34
34
35
PROJETO ARQUITETURAL OO
ALTERAÇÕES NO CDP
Reutilização de projetos anteriores e classes já programadas
Denise F. Togneri
35
PROJETO ARQUITETURAL OO
ALTERAÇÕES NO CDP
Reutilização de projetos anteriores e classes já programadas
36
PROJETO ARQUITETURAL OO
ALTERAÇÕES NO CDP
Ajuste do modelo ao nível de herança suportado pela linguagem
de programação
37
PROJETO ARQUITETURAL OO
ALTERAÇÕES NO CDP
Ajuste do modelo ao nível de herança suportado pela linguagem
de programação
38
PROJETO ARQUITETURAL OO 39
ALTERAÇÕES NO CDP
Denise F. Togneri
39
PROJETO ARQUITETURAL OO
ALTERAÇÕES NO CDP
Ajuste do modelo para facilitar o projeto de interface com o
usuário
40
PROJ. ARQUIT. OO - ALTERAÇÕES NO CDP 41
TRADUÇÃO DE RELACIONAMENTOS
NAVEGABILIDADE DAS ASSOCIAÇÕES
41
TRADUÇÃO DE RELACIONAMENTOS
NAVEGABILIDADE UNIDIRECIONAL DAS ASSOCIAÇÕES 1:N - NOTAÇÃO
ClasseA 1 * ClasseB
ClasseA 1 * ClasseB
<
42
PROJ. ARQUIT. OO - ALTERAÇÕES NO CDP 43
TRADUÇÃO DE RELACIONAMENTOS
NAVEGABILIDADE UNIDIRECIONAL DAS ASSOCIAÇÕES 1:N
NOTAÇÃO
ClasseA 1 * ClasseB
>
Atributo b
multivalorado
>
43
TRADUÇÃO DE RELACIONAMENTOS
NAVEGABILIDADE BIDIRECIONAL DAS ASSOCIAÇÕES
NOTAÇÃO
Denise F. Togneri
44
PROJ. ARQUIT. OO - ALTERAÇÕES NO CDP 45
TRADUÇÃO DE RELACIONAMENTOS
NAVEGABILIDADE BIDIRECIONAL DAS ASSOCIAÇÕES 1:N
NOTAÇÃO
DIAGRAMA DE CLASSES DE PROJETO
REPRESENTAÇÃO DA NAVEGABILIDADE BIDIRECIONAL
ClasseA 1 * ClasseB
Denise F. Togneri
45
TRADUÇÃO DE RELACIONAMENTOS
NAVEGABILIDADE UNIDIRECIONAL DAS ASSOCIAÇÕES N:N - NOTAÇÃO
ClasseA * * ClasseB
<
46
PROJ. ARQUIT. OO - ALTERAÇÕES NO CDP 47
TRADUÇÃO DE RELACIONAMENTOS
NAVEGABILIDADE BIDIRECIONAL DAS ASSOCIAÇÕES N:N - NOTAÇÃO
TRADUÇÃO DE RELACIONAMENTOS
NAVEGABILIDADE UNIDIRECIONAL DAS ASSOCIAÇÕES 1:1 - NOTAÇÃO
1 - DIAGRAMA DE CLASSES DE ANÁLISE
<
48
PROJ. ARQUIT. OO - ALTERAÇÕES NO CDP 49
TRADUÇÃO DE RELACIONAMENTOS
NAVEGABILIDADE BIDIRECIONAL DAS ASSOCIAÇÕES 1:1
NOTAÇÃO
NÃO USAR!
DESEMPENHO
MUITO
RUIM!
49
Denise F. Togneri
50
PROJ. ARQUIT. OO - ALTERAÇÕES NO CDP 51
TRADUÇÃO DE RELACIONAMENTOS
GUIA PARA ESCOLHA DA NAVEGABILIDADE DAS ASSOCIAÇÕES
51
TRADUÇÃO DE RELACIONAMENTOS
GUIA PARA ESCOLHA DA NAVEGABILIDADE DAS ASSOCIAÇÕES
52
PROJ. ARQUIT. OO - ALTERAÇÕES NO CDP 53
TRADUÇÃO DE RELACIONAMENTOS
GUIA PARA ESCOLHA DA NAVEGABILIDADE DAS ASSOCIAÇÕES
Denise F. Togneri
53
Denise F. Togneri
54
PROJ. ARQUIT. OO - ALTERAÇÕES NO CDP 55
Denise F. Togneri
55
1 – D. CLASSES DE ANÁLISE
▪ A classe de associação é uma abstração de análise que deve ser traduzida na
atividade de projeto, de forma a poder ser implementada.
Denise F. Togneri
56
PROJ. ARQUIT. OO - ALTERAÇÕES NO CDP 57
Denise F. Togneri
57
58
RESUMINDO ...
PARA MODELAR O CDP É NECESSÁRIO:
▪ Resolver Herança Múltipla
▪ Reutilizar classes existentes
▪ Atender questões de desempenho (acumuladores, totalizadores...)
▪ Resolver itens de grupo (ex: endereço)
▪ Resolver atributos multivalorados (ex: telefone*)
▪ Navegabilidade
▪ Criar novas classes para atender requisitos de interface
▪ Classes de associação(traduzir criando dois relacionamentos 1:N)
Denise F. Togneri
58
59
PROJETO ARQUITETURAL OO
COMPONENTE DE DOMÍNIO DO PROBLEMA
▪ PRODUTOS
▪ Diagrama de Classes, Diagramas de Interação, de
Estados e Atividades (em nível de Projeto)
Denise F. Togneri
59
COMPONENTE DE
INTERAÇÃO HUMANA
60
PROJETO ARQUITETURAL OO 61
▪ PREMISSA FUNDAMENTAL
▪ a porção do sistema que lida com a interface com o usuário deve
ser mantida tão independente e separada do resto da arquitetura do
software quanto possível.
▪ Utilização de prototipação.
Denise F. Togneri
61
62
PROJETO ARQUITETURAL OO
COMPONENTE DE INTERAÇÃO HUMANA
▪ PONTO DE PARTIDA PARA O PROJETO DA CIH
▪ casos de uso e seus cenários
▪ descrições de atores
▪ Com base nos casos de uso, devemos projetar uma hierarquia de
comandos, definindo barras de menu, menus drop-down, ícones, etc.,
que levem a ações quando acionados pelo usuário.
▪ Hierarquia de comandos: é um meio de apresentar ao usuário as
várias funcionalidades disponíveis no sistema, ou, olhando sob outro
ponto de vista, as várias mensagens que o usuário pode enviar para as
classes dentro do sistema.
▪ Todos os casos de uso devem ser implementados, através da
navegação nesta hierarquia.
▪ Uma vez definida a hierarquia de comandos, as interações detalhadas
entre o usuário e o sistema devem ser projetadas.
Denise F. Togneri
62
63
PROJETO ARQUITETURAL OO
COMPONENTE DE INTERAÇÃO HUMANA
▪ Normalmente, não é necessário projetar as classes básicas de interfaces
gráficas com o usuário.
Denise F. Togneri
63
PROJETO ARQUITETURAL OO
COMPONENTE DE INTERAÇÃO HUMANA
Exemplo: Pacote UtilitarioInterfaceGrafica
Frame Janela básica
do Java
JanCadastro
Pacote IU_AtendimentoCliente
JanCadastro
(from UtilitarioInterfaceGrafica)
JanEfetuarNovaLocacao JanEfetuarDevolucao
Denise F. Togneri
64
COMPONENTE DE
GERÊNCIA DE TAREFAS
65
PROJETO ARQUITETURAL OO 66
Denise F. Togneri
66
PROJETO ARQUITETURAL OO 67
Denise F. Togneri
67
PROJETO ARQUITETURAL OO 68
Denise F. Togneri
68
PROJETO ARQUITETURAL OO 69
69
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
PASSOS A SEREM SEGUIDOS
▪ Na fase de Análise OO, cada diagrama de seqüência é iniciado por um ator
executando um método de uma classe genérica chamada Aplicação. No
exemplo, IncluirPedidoCompra é um método da classe Aplicação.
incluir(Cliente, dtPedido)
Denise F. Togneri
70
71
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
PASSOS A SEREM SEGUIDOS
▪ A classe Aplicação da Análise OO fará parte do CGT.
▪ Estudar, a seguir, se a classe Aplicação continuará sendo única ou se serão
criadas mais de uma classe.
▪ Fazer o estudo referente a Modelo de Tarefas.
▪ ERRO COMUM
▪ Muitos projetistas OO não criam o CGT. Eles “traduzem” a classe
Aplicação da Análise OO pelo Componente de Interação Humana
(CIH), ou seja, as validações/críticas e comandos de inclusão, por
exemplo, são projetadas na própria window.
▪ Não se deve colocar o comportamento de um caso de uso dentro da
interface; isto causa muitos problemas, pois se a interface mudar tem-se
que reprogramar estas coisas.
Denise F. Togneri
71
PROJETO ARQUITETURAL OO 72
Denise F. Togneri
72
PROJETO ARQUITETURAL OO 73
73
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
1ª SOLUÇÃO: ATRIBUIR UM GERENCIADOR DE TAREFA
PARA CADA CASO DE USO
- consultarTituloPorNome
- consultarTituloporAtor
- consultarTituloPorDiretor
- consultarTituloporNacionalidade
- consultarTituloPorNomeOriginal
ConsultarTitulo
Cliente
74
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
1ª SOLUÇÃO: ATRIBUIR UM GERENCIADOR DE TAREFA
PARA CADA CASO DE USO
- efetuarNovaReserva
- alterarDadosReserva
- consultarReserva
- cancelarReserva
- cancelarReservaAutomaticamente
EfetuarReserva - notificarCliente
Funcionario
- consultarTituloPorNome
- consultarTituloporAtor
- consultarTituloPorDiretor
- consultarTituloporNacionalidade
- consultarTituloPorNomeOriginal
ConsultarTitulo
Cliente
75
PROJETO ARQUITETURAL OO 76
COMPONENTE DE GERÊNCIA DE
TAREFAS
SOLUÇÃO
▪ Os subsistemas CadastrarCliente, EfetuarReserva e ConsultarTitulo do
Diagrama de Casos de Uso são transformados nas classes gerenciadoras de
tarefas AplCadastrarCliente, AplEfetuarReserva e AplConsultarTitulo
respectivamente, conforme slide a seguir.
▪ Os casos de uso executáveis de cada subsistema são transformados em
métodos pertencentes às classes gerenciadoras de tarefa correspondentes
aos seus subsistemas.
Denise F. Togneri
76
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
1ª SOLUÇÃO: ATRIBUIR UM GERENCIADOR DE TAREFA
PARA CADA CASO DE USO
AplFuncionario AplCliente
77
PROJETO ARQUITETURAL OO 78
▪ Neste caso, deve ser criado um método (uma operação) para cada caso de
uso de nível mínimo. Cada um destes métodos vai conter toda a seqüência
de execução do caso de uso. Exemplo:
Denise F. Togneri
78
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
79
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
3ª SOLUÇÃO: UMA SOLUÇÃO INTERMEDIÁRIA ENTRE AS
DUAS ANTERIORES
Exemplo 1:
inclui
EfetuarLocacao
inclui
Funcionario EfetuarPagamento
81
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
3ª SOLUÇÃO: UMA SOLUÇÃO INTERMEDIÁRIA ENTRE AS
DUAS ANTERIORES
82
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
3ª SOLUÇÃO: UMA SOLUÇÃO INTERMEDIÁRIA ENTRE AS
DUAS ANTERIORES
Exemplo 2:
Diagrama de Caso de Uso: ControlarAcervo
CadastrarTitulo CadastrarClasse
Funcionario
CadastrarFita CadastrarDistribuidor
83
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
3ª SOLUÇÃO: UMA SOLUÇÃO INTERMEDIÁRIA ENTRE AS
DUAS ANTERIORES
Exemplo 2:
A classe
AplControlarTitulo
trata do caso de uso
CadastrarTitulo e
dos casos de uso
fortemente
relacionados a ele:
CadastrarAtor e Fonte: Falbo, 2003.
CadastrarDiretor.
A classe
AplControleAcervo
dá forma à aplicação
Controle de Acervo
como um executável.
Fonte: Falbo, 2003.
84
85
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
Denise F. Togneri
85
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
▪ O levantamento das tarefas do sistema também é uma atividade que pode ser
iniciada na fase de análise. Utilizar Modelo de Tarefas.
▪ Conceito de Tarefa: Conjunto de atividades essenciais e tecnológicas
agrupadas em uma unidade de execução. Ex: um arquivo executável (.EXE) em
um ambiente DOS seria uma tarefa. Em um ambiente multitarefa, uma tarefa
pode ser disparada de várias estações/terminais (Xavier e Portilho, 1995).
QUADRO DE ALOCAÇÃO EM TAREFA (QAT)
86
PROJETO ARQUITETURAL OO 87
87
88
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
Camada de Interface
com Usuário
Camada de Gerência
de Tarefa
Sistemas Camada de Comunicação
Operacionais Domínio de de Dados
Problema
Camada de Gerência
de Dados
Denise F. Togneri
88
89
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE TAREFAS
▪ Toda vez que for necessário estabelecer mecanismos de comunicação
(com outro software, linguagem de programação, com o sistema
operacional) deve-se fazer isto via CGT.
▪ O CGT deve envolver o CDP para não polui-lo com coisas técnicas.
▪ ASPECTO IMPORTANTE
▪ A idéia de se trabalhar com software em camadas é isolar o sistema
dos impactos tecnológicos.
Denise F. Togneri
89
COMPONENTE DE
GERÊNCIA DE DADOS
90
PROJETO ARQUITETURAL OO 91
▪ QUESTÃO PRIMORDIAL
▪ Como tornar persistentes os objetos do sistema?
Denise F. Togneri
91
PROJETO ARQUITETURAL OO 92
▪ USO DE ARQUIVOS
▪ Neste caso, é necessário estabelecer uma estratégia para escrita e
leitura de uma série de objetos em um arquivo simples.
Denise F. Togneri
92
PROJETO ARQUITETURAL OO 93
Denise F. Togneri
93
PROJETO ARQUITETURAL OO 94
Denise F. Togneri
94
PROJETO ARQUITETURAL OO 95
▪ O2 (O2 Technology)
▪ ObjectStore
▪ Objectivity
▪ ONTOS (Ontologic)
▪ Versant
▪ Jasmine (Computer Associates)
▪ POET (Poet Software)
▪ GemStone
▪ OpenOBD (da HP)
Denise F. Togneri
95
96
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE DADOS
SUPORTE À PERSISTÊNCIA DE OBJETOS
▪ BANCOS DE DADOS RELACIONAIS
▪ Ainda que haja diferenças entre a abordagem relacional e o
paradigma de objetos, os bancos de dados relacionais têm sido
utilizados pela maioria dos desenvolvedores OO para armazenar
objetos (Ambler, 1998).
Denise F. Togneri
96
97
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE DADOS
SUPORTE À PERSISTÊNCIA DE OBJETOS
▪ BANCOS DE DADOS RELACIONAIS
▪ Caso o ambiente encapsule totalmente o banco de dados relacional,
o projeto pode ser muito semelhante ao projeto usando um banco
de dados OO;
▪ Caso contrário, o projetista deve efetuar um projeto de bases de
dados relacionais, definindo suas tabelas, para só então poder
utilizá-las no projeto OO do CGD.
▪ Utilizando SGBDs relacionais, geralmente, o processo de projeto
começa pela tradução das classes no modelo orientado a objetos
para a terceira forma normal padrão.
▪ Para cada tabela em terceira forma normal, derivada deste processo
de “normalização de objetos”, uma tabela na base de dados é
definida.
Denise F. Togneri
97
PROJETO ARQUITETURAL OO 98
98
PROJETO ARQUITETURAL OO 99
▪ Fazer com que apenas uma parte da arquitetura de software fique ciente da
tecnologia de persistência adotada, no caso o CGD.
▪ Essa parte, o CGD, serve como uma camada intermediária para as classes
de objetos persistentes, tipicamente do CDP, estabelecendo um protocolo
para a persistência dos objetos.
▪ Via conexões de mensagem, o CGD lê e escreve dados, estabelecendo
uma comunicação entre a base de dados e os objetos do sistema.
▪ O preço a ser pago por este tipo de “ocultamento de informação” é o
desempenho: cada requisição para ler ou escrever um objeto envolve não
apenas os comandos físicos de leitura/gravação, mas também uma troca de
dados (via parâmetros de mensagem) entre o CGD e o objeto no sistema
(Yourdon, 1994).
Denise F. Togneri
99
100
PROJETO ARQUITETURAL OO 101
ConsultarFuncionario
Usuario Denise F. Togneri
101
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE DADOS
CLASSES PARA SUPORTE À PERSISTÊNCIA
JanConsultarFunc : AplControlarFunc : : Funcionario : FuncionarioP FuncionarioConsultado
: Usuario JanConsultarFunc AplControlarFunc : Funcionario
consultarFuncionario(matricula)
obter(matricula)
obter(matricula)
obterNome():nome
obterEndereco():endereco
obterCpf():cpf
O método obter(matricula) da classe FuncionarioP possui o comando SQL select que consulta a tabela
FUNC para obter a linha/objeto desejado, como no exemplo abaixo:
public void obter(int matricula) throws ClassNotFoundException, SQLException {
if (validateConn()) {PreparedStatement stt = _conn.prepareStatement(
"select nm_func, ds_end, no_cpf from FUNC where no_func_matr = ?");
stt.setInt(1,this.matricula);
ResultSet rs = stt.executeQuery();
102
PROJETO ARQUITETURAL OO 103
COMPONENTE DE GERÊNCIA DE DADOS
CLASSES PARA
SUPORTE À PERSISTÊNCIA
Classe Funcionario do CDP
103
Denise F. Togneri
104
PROJETO ARQUITETURAL OO
COMPONENTE DE GERÊNCIA DE DADOS
CLASSES PARA SUPORTE À PERSISTÊNCIA
2ª ALTERNATIVA: MAIS
ELEGANTE
2.3 - Prover alguma solução híbrida
entre as duas abordagens
105