an´alise orientada a objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · an´alise...

77
An´ alise Orientada a Objetos A an´ alise OO foca no entendimento dos requisitos, conceitos e opera¸c˜ oes relacionados com o sistema. Enfatiza o que deve ser feito. Resultados produzidos: um diagrama de classes de an´ alise, que descreve os conceitos relevantes do sistema; e um conjunto de diagramas de intera¸ ao, que repre- sentam os processos aos quais o sistema deve dar suporte.

Upload: lythuy

Post on 12-Jan-2019

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Analise Orientada a Objetos

• A analise OO foca no entendimento dos requisitos,

conceitos e operacoes relacionados com o sistema.

• Enfatiza o que deve ser feito.

• Resultados produzidos:

– um diagrama de classes de analise, que descreve

os conceitos relevantes do sistema; e

– um conjunto de diagramas de interacao, que repre-

sentam os processos aos quais o sistema deve dar

suporte.

Page 2: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Papel Unificador dos Casos de Uso

Especificaçãode Requisitos

Análise Projeto Implementação Testes

Casos de Uso

Page 3: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Realizacoes dos Casos de Uso e Classes de

Analise

Modelo de Casos de Uso

Efetuar Saque Efetuar Saque

<< boundary >>

Terminal

<< control >>

CtlCaixa

<< entity >>

CaixaEletronico

<< entity >>

Conta

<< entity >>

Banco

<< boundary >>

FrtCadastroContas

<< boundary >>

FrtDispensadorNotas

<< entity >>

FichaCliente

.

.

.

.

.

.

..

Realizações dos Casos de Uso e Classes de Análise

Page 4: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Projeto Orientado a Objetos (I)

• O foco do desenvolvimento muda do domınio do prob-

lema para o domınio da solucao.

• Enfatiza a maneira como os requisitos serao satis-

feitos pelo sistema.

• Resultados produzidos:

– um diagrama de classes de projeto, similar ao dia-

grama de classes de analise, so que mais detalhado

e focado no domınio da solucao; e

– um conjunto de realizacoes de casos de uso, que

definem a maneira como as classes de projeto co-

laboram a fim de prover o comportamento especi-

ficado pelos casos de uso.

Page 5: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Projeto Orientado a Objetos (II)

• O projeto OO costuma ser dividido em duas etapas:

projeto arquitetural e projeto detalhado.

• O projeto arquitetural define a estrutura geral do sis-

tema, sua quebra em componentes, os relacionamen-

tos entre esses componentes e a maneira como inter-

agem.

• O projeto detalhado descreve as classes do sis-

tema, seus relacionamentos e as interacoes entre suas

instancias em tempo de execucao.

• Focaremos nossa atencao no projeto arquitetural.

Page 6: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Arquitetura de Software

• Reflete o conjunto de decisoes que devem ser tomadas

primeiro no projeto desse sistema; aquelas que sao

mais difıceis de mudar em etapas posteriores do de-

senvolvimento.

• Esta relacionada com a complexidade global do sis-

tema e com a integracao dos seus subsistemas.

• A elaboracao da arquitetura de software de um sis-

tema envolve decisoes relativas a: particionamento

do sistema em subsistemas menores, determinacao do

fluxo de controle interno da arquitetura, definicao de

camadas e protocolos de interacao entre as mesmas,

alocacao de software/hardware.

Page 7: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Propriedades Nao-Funcionais de

Arquiteturas de Software (I)

• Uma propriedade funcional lida com algum as-

pecto particular da funcionalidade do sistema e esta

usualmente relacionada a um requisito funcional es-

pecificado.

• Uma propriedade nao-funcional (ou administra-

tiva) denota uma caracterıstica de um sistema que

nao e coberta pela sua descricao funcional.

Page 8: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Propriedades Nao-Funcionais de

Arquiteturas de Software (I)

• Propriedades nao-funcionais tipicamente estao rela-

cionadas a aspectos como confiabilidade, adaptabil-

idade, interoperabilidade, usabilidade, persistencia,

manutenabilidade, distribuicao e seguranca.

• As decisoes de projeto que devem ser tomadas no de-

senvolvimento de uma arquitetura de software geral-

mente envolvem varios aspectos relacionados com as

suas propriedades nao-funcionais

Page 9: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Arquitetura de Software

• Representa o sistema em termos dos seus modulos e

das restricoes de comunicacao entre eles

• As estruturas basicas da arquitetura sao:

– Componentes - Entidades funcionais do sistema.

Implementam os requisitos especificados.

– Conectores - Entidades responsaveis pela ligacao

entre os componentes.

– Configuracao - Maneira como os componentes e

conectores se integram em uma determinada dis-

posicao.

Page 10: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Estilo Arquitetural

• Caracteriza uma famılia de sistemas que sao

relacionadas pelo compartilhamento de pro-

priedades estruturais e comportamentais

(semantica);

• Um estilo de arquitetura define um vocabulario

para os elementos da arquitetura: compo-

nentes e conectores;

• Alem disso, apresenta ainda regras e restricoes so-

bre a combinacao dos componentes arquiteturais;

Page 11: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Estilo Arquitetural Cliente-Servidor

• Possui dois modulos bem definidos:

– Modulo Cliente

– Modulo Servidor

MóduloCliente

MóduloServidor

Page 12: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Escalas de Arquiteturas de Software

• Nıvel da aplicacao: preocupa-se diretamente com

os requisitos funcionais da aplicacao.

• Nıvel do sistema: cuida das conexoes entre diver-

sas aplicacoes. Este nıvel fornece uma infraestrutura

de apoio para o nıvel de aplicacao.

• Nıvel de empresa: compreende varios sistemas,

onde cada sistema pode englobar diversas aplicacoes.

• Nıvel global: e a maior das escalas de arquite-

tura, podendo compreender diversas empresas. E re-

sponsavel pelas questoes de impacto de software que

atravessam as fronteiras entre empresas.

Page 13: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

As Visoes da Arquitetura de Software

• Surgiram em resposta a insistencia de alguns autores

em representar toda a arquitetura do sistema atraves

de uma unica representacao.

• Uma arquitetura de software deve ser representada

atraves de quatro visoes diferentes e ortogonais entre

si: (i) logica, (ii) de componentes, (iii) de processos e

(iv) de implantacao

• A visao de casos de uso faz a integracao entre as

outras quatro.

• Esse modelo para a representacao de arquiteturas e

conhecido como Modelo 4+1.

Page 14: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

O Modelo 4+1 para a Representacao de

Arquiteturas (I)

• Visao Logica: decompoe o sistema em um conjunto

de abstracoes, na forma de objetos ou classes que se

relacionam.

• Visao de Componentes ou Desenvolvi-

mento/Implementacao: foca na organizacao do

sistema em modulos de codigo

• Visao de Processos ou Concorrencia: lida com

a divisao do sistema em processos e processadores e

trata de aspectos relacionados a execucao concorrente

do sistema.

Page 15: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

O Modelo 4+1 para a Representacao de

Arquiteturas (II)

• Visao de Implantacao ou Fısica: representa o

sistema como um conjunto de elementos que se co-

municam e que sao capazes de realizar processamento

(como computadores e outros dispositios).

• Visao de Casos de Uso ou Cenarios: e re-

sponsavel por integrar as outras quatro e descreve a

funcionalidade provida pelo sistema aos seus atores.

Page 16: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

O Modelo 4+1 para a Representacao de

Arquiteturas (III)

Visão deCasos de Uso

VisãoLógica

Visão deProcessos

Visão deComponentes

Visão deImplantação

Page 17: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Resumo das Visoes do Modelo 4+1

Visao Requisito Principal Participante Principal

Visao Logica Grupos funcionais Usuario Final

Visao de Processo Desempenho Integrador do Sistema

Escalabilidade

Transferencia de dados

(taxa)

Visao de Desen-

volvimento

Topologia do sistema Engenheiro de Sistema

Comunicacao

Visao Fısica Gerenciamento do Soft-

ware

Programador

Distribuicao e instalacao

Visao de Casos de

Uso

Comportamento (fun-

cionalidades)

Analista de sistemas

Analista de testes

Page 18: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Atividades da Passagem da Analise ao

Projeto (I)

Estado Inicial

Modelar a estruturaestática do sistema

Modelar a estruturadinâmica do sistema

Diagrama de classes de análise(sem as operações das classes)

Especificação das operaçoesdas classes de análise

Refinar o diagrama de análise compadrões e particularidades da linguagem

Análise OO

Projeto OO

Estado Final

Page 19: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Atividades da Passagem da Analise ao

Projeto (II)

Estado Inicial

Particionar o sistema em módulos

Especificar a arquitetura do sistema

Especificar a arquitetura de cada módulo

Criar interfaces entre ascamadas do sistema

Mapear classes de análise para o projeto

Refinar com padrões de projeto

Estado Final

Page 20: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

1: Particionar o Sistema em Modulos

• O modelo de analise deve ser particionado em conjun-

tos, coesos e fracamente acoplados de classes.

• Esses conjuntos sao chamados subsistemas.

• Os componentes de um subsistema Eles podem es-

tar envolvidos na realizacao de um mesmo conjunto

de requisitos funcionais, residir dentro de um mesmo

produto de hardware ou gerenciar um mesmo tipo de

recurso.

• Subsistemas sao identificados pelos servicos definidos

por suas interfaces.

• Um subsistema prove servicos e utiliza servicos provi-

dos por outros subsistemas.

Page 21: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Criterios para Particionar um Sistema

• O subsistema deve ter uma interface bem definida

atraves da qual ocorre toda a comunicacao com o

resto do sistema.

• Com excecao de um pequeno numero de “classes de

comunicacao”, as classes em um subsistema devem

colaborar apenas com outras classes dentro do proprio

subsistema.

• O numero de subsistemas deve ser pequeno.

• Um subsistema pode ser particionado internamente a

fim de reduzir sua complexidade.

Page 22: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

2: Especificar a Arquitetura do Sistema

• Tres etapas:

1. Identificar os modulos funcionais que constituem o

sistema (componentes);

2. Estabelecer regras de interacoes entre esses com-

ponentes (conectores);

3. Especificar as associacoes entre os componentes

do sistema (configuracao);

• Para isso, pode-se consultar uma lista de padroes.

Page 23: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Padroes (I)

• Solucoes para problemas comuns encontrados durante

o desenvolvimento.

• Validadas atraves do uso em diversas circunstancias

distintas.

• Especificadas de uma maneira estruturada que de-

screve tanto a solucao quanto o problema que ela se

propoe a resolver.

• Associadas a um nome.

Page 24: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Padroes (II)

• Segundo Christopher Alexander:

“cada padrao descreve um problema que ocorre

recorrentemente em nosso ambiente e entao

descreve uma solucao para o problema, de tal

maneira que voce pode usar essa solucao um

milhao de vezes, sem nunca utiliza-la duas

vezes da mesma maneira”.

Page 25: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Padroes (III)

• Padroes sao encontrados em diversos “sabores” difer-

entes:

– Padroes para atribuicao de responsabilidades;

– Padroes de analise.

– Padroes arquiteturais;

– Padroes de projeto;

– Idioms, ou padroes de implementacao;

Page 26: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Estrutura de um Padrao

1. Nome;

2. Problema;

3. Solucao;

4. Consequencias;

5. Exemplos (opcional).

Page 27: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

A Escolha de Um Padrao Arquitetural

• Um padrao arquitetural relaciona um estilo arquitetu-

ral a um grupo de sistemas (ou requisitos funcionais)

que ele e indicado;

• A especificacao da arquitetura pode consistir na es-

colha de um padrao (ou estilo) arquitetural adequado

ao sistema;

• Seguir um determinado padrao arquitetural significa

adotar estrutura conhecida e adequada para o sistema

especıfico

• Sistemas de informacao (sistemas comerciais em

geral) possuem normalmente uma arquitetura em ca-

madas, onde as camadas correspondem aos seus com-

ponentes

Page 28: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Divisao em Camadas (I)

• Um sistema tambem deve ser particionado em ca-

madas.

• Essa divisao e ortogonal a divisao em subsistemas.

• Cada camada contem um ou mais subsistemas e e

responsavel por um conjunto de funcionalidades rela-

cionadas.

• Subsistemas localizados na camada n usam os servicos

providos pelos subsistemas da camada n+1 (abaixo) e

provem servicos para os subsistemas da camada n−1

(acima).

• As camadas n − 1 e n + 1 nao “enxergam” uma a

outra diretamente

Page 29: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Divisao em Camadas (II)

Camada 1

Camada 2

Camada 3

(Seta em um sentido único)

(Seta em um sentido único)

Exemplo: Arquitetura em tres camadas

Page 30: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Divisao em Camadas (III)

• Uma camada esconde detalhes das implementacoes

das camadas inferiores das camadas superiores.

• Uma estruturacao comum para a construcao de sis-

temas de informacao consiste em usar tres camadas,

com as seguintes responsabilidades:

(i) gerenciar a interacao entre o sistema e o usuario;

(ii) implementar as regras de negocio da aplicacao;

(iii) armazenar os dados da aplicacao.

• Uma arquitetura de software com essas divisoes e um

exemplo conhecido de uma Arquiteturas de Tres Ca-

madas

Page 31: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Divisao em Camadas (IV)

Interface com o Usuário

Regras de Negócio

Dados

Page 32: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Interfaces entre as Camadas

• Apos particionar as classes de analise entre subsis-

temas e definir as camadas, o arquiteto deve definir

as interfaces entre as camadas.

• O foco esta na maneira como a comunicacao entre os

subsistemas em camadas adjacentes ocorrera.

– Quais classes representarao os pontos de acesso as

camadas?

– Quais tecnologias serao usadas para mediar a co-

municacao entre elas?

• Se a interface entre duas camadas e muito complexa e

encapsula requisitos nao-funcionais (por exemplo, dis-

tribuicao), pode valer a pena criar uma nova camada.

Page 33: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Particionamento do Sistema de Caixa

Automatico (I)

• Tendo em vista os requisitos de distribuicao, foram

identificados dois modulos principais para o sistema

de Caixa Automatico:

1. Subsistema/Modulo Cliente: classes Terminal e

FronteiraDispensadorNotas.

2. Subsistema/Modulo Servidor: demais classes.

Page 34: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Particionamento do Sistema de Caixa

Automatico (II)

• O modulo servidor ainda pode ser particionado em

outros dois submodulos:

1. Submodulo de Negocio: classes Controlador-

Caixa, CaixaEletronico, Conta e DadosCliente.

2. SubModulo de Dados: classe FronteiraCadastro-

Contas.

Page 35: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Camadas do Sistema de Caixa Automatico

• Arquitetura em tres camadas

• Mapeamento direto das camadas de cada subsistema.

• Camadas: cliente, negocios e dados.

Page 36: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Regras de Negócio

Dados

Interface com o Usuário

Módulo Cliente

Módulo Servidor

Page 37: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Interfaces entre as Camadas no Sistema de

Caixa Automatico

• A comunicacao entre as camadas de cliente e negocios

podera ser distribuıda.

• Classes especiais, chamadas adaptadores, serao us-

adas para encapsular a distribuicao.

– A fim de materializar o aspecto “Cliente-Servidor”

do sistema

• As camadas de negocios e dados devem ser de-

sacopladas, de modo que esta ultima possa ser modi-

ficada sem afetar a primeira.

Page 38: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Mapeamento entre as Classes de Analise e

as de Projeto (I)

• Apos identificar a arquitetura do sistema e as in-

terfaces entre os seus componentes arquiteturais, e

possıvel refinar as classes de analise, a fim de adicionar

entidades relativas a implementacao do sistema

• Esse refinamento consiste basicamente na adicao de

novas classes a fim de materializar os requisitos de

comunicacao e baixo acoplamento entre as camadas

da arquitetura

Page 39: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Mapeamento entre as Classes de Analise e

as de Projeto (II)

<< control >>

ConrtoladorCaixa

<< entity >>

DadosCliente

<< entity >>

CaixaEletronico

<< entity >>

Conta

<< entity >>

Banco

<< boundary >>

FronteiraCadastroContas

<< boundary >>

Terminal

<< boundary >>

FronteiraDispensadorNotas

Terminal

AdaptadorCliente

AdaptadorServidor

ControladorCaixa

CaixaEletronico

Banco

Conta

DadosCliente

<< interface >>

IRepositorioDeContas

RepositorioDeContasBDRFronteiraDispensadornotas

Modelo de Projeto

Modelo de Análise

Page 40: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Divisao das Classes de Projeto entre as

Camadas da Arquitetura.

CaixaEletronicoFronteiraDispensadornotas

Banco

Terminal

Conta

AdaptadorCliente DadosCliente

AdaptadorServidor << interface >>

IRepositorioDeContas

ControladorCaixa RepositorioDeContasBDR

Page 41: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Diagrama de Sequencia da Analise

:FrtDispensadorDeNotasc:Conta :FrtCadastroContas :CaixaEletronico :CtlCaixa :Terminal :Cliente

Diagrama de Seqüência "Efetuar Saque"

1) .efetuarSaque[quant]

4)

2) .efetuarSaque[quant]

3)

.obterValorCaixa

.debitarValor[quant]

.debitarValor[quant]

.liberaDinheiro[quant]

.numConta = obterNumConta

.c = obterConta[numConta]

.obterStatus

.obterSaldo

Page 42: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Diagrama de Sequencia do Projeto

:Terminal :FrtDispensadorDeNotasc:Conta :FrtCadastroContas :CaixaEletronico :CtlCaixa :AdptServidor :AdptCliente

Diagrama de Seqüência de Projeto "Efetuar Saque"

2) .efetuarSaque[quant]

5)

3) .efetuarSaque[quant]

4)

.obterValorCaixa

.debitarValor[quant]

.debitarValor[quant]

.liberaDinheiro[quant]

.c = obterConta[numConta]

.obterStatus

.obterSaldo

1) .efetuarSaque[quant]

6)

.numConta = obterNumConta

Page 43: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Padroes de Projeto

Page 44: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

O Padrao de Projeto Singleton

• O padrao singleton busca garantir que uma classe

tenha sempre uma unica instancia que possa ser aces-

sada por varios clientes distintos.

• Esse padrao pode ser utilizado tambem para oferecer

um numero fixo de instancias (2,3,4, etc).

Page 45: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Problema

• Em algumas situacoes, e importante que as classes

garantam a existencia de apenas uma unica instancia

criada.

• Normalmente esse problema e resolvido utilizando

variaveis globais (uma para cada instancia desejada).

• Alem de aumentar a complexidade do sistema, essa

solucao e limitada no sentido de nao permitir alterar

facilmente o numero de instancias desejadas.

Page 46: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Solucao

• Uma solucao mais adequada e tornar a classe re-

sponsavel por si mesma, garantindo que haja somente

um numero estipulado de instancias.

• Por se tratar de um acesso centralizado, a classe pode

garantir que nenhuma outra instancia possa ser criada,

atraves da interceptacao de todas as requisicoes de

criacao de novas instancias.

• Dessa forma, e necessario definir uma operacao

de classe que seja a unica responsavel pela instan-

ciacao dos seus objetos.

• O construtor deve ser definido com visibilidade pri-

vada.

Page 47: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Estrutura do Padrao Singleton

Singleton

−uniqueInstance:Singleton

<< create >>−Singleton():Singleton

+uniqueInstance():Singleton

Única instânciaRedefiniçãodo construtor

Método de "fábrica"que retorna a únicainstância da classe.

Page 48: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Consequencias

• Acesso controlado a um numero estipulado de

instancias. O acesso centralizado possibilita um con-

trole estrito sobre como e quando essas referencias sao

acessadas pelos clientes.

• Reducao do espaco de nomes. O padrao Single-

ton apresenta vantagens em relacao a utilizacao de

variaveis globais, uma vez que evita a explosao do

numero dessas variaveis.

Page 49: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Visibilidade

• A implementacao do padrao singleton se baseia no

ocultamento de informacoes atraves do conceito de

visibilidade privada.

• Uma classe Singleton deve possuir uma operacao de

classe (“static”) que seja responsavel por controlar a

instanciacao dos seus objetos.

• Alem disso, a classe deve necessariamente definir o

seu construtir com visibilidade privada, a fim de im-

possibilitar o uso do construtor diretamente por um

cliente.

Page 50: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Exemplo

public class ControladorCaixa {

private static ControladorCaixa instancia;

// variavel que referencia

// a unica instancia da classe

private ControladorCaixa(); //vis. privada do

//construtor para impedir que a classe

//seja instanciada diretamente pelos clientes

public static ControladorCaixa obterInstancia(){

if (instancia == null) {

instancia = new ControladorCaixa();

}

return instancia;

}

...

}

Page 51: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

O Padrao de Projeto Composite

• Frequentemente, programadores desenvolvem sis-

temas onde os componentes podem ser objetos in-

dividuais ou podem representar uma colecao.

• As hierarquias de “parte-todo” por si so nao sao ade-

quadas para a representacao de estruturas de arvores,

onde alguns nos sao simples e outros sao compostos.

• Em resumo, uma composicao e uma colecao de ob-

jetos, podendo ser ums estruturacao recursiva, onde

uma composicao e composta de outras composicoes.

Page 52: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Problema

• O problema principal solucionado por esse padrao e

a dicotomia entre ter um unica interface para acessar

todos os elementos de uma composicao, sejam eles

simples ou compostos.

• Alem dessa interface unica, os objetos compostos de-

vem propagar informacoes para os seus “filhos”.

• O terceiro problema enfrentado e o aspecto dinamico

da composicao, isto e, um objeto simples pode pas-

sar a ser composto em um determinado ponto da ex-

ecucao.

Page 53: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Solucao

• Alguns autores sugerem a criacao de interfaces para

o gerenciamento das composicoes. Essas interfaces

devem possibilitar a adicao e remocao de “partes” nas

classes.

• Alem disso, um objeto deve possibilitar o acesso e a

listagem de suas partes (ou filhos).

Page 54: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Estrutura do Padrao Composite

Page 55: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Consequencias (I)

• Define dinamicamente uma hierarquia de classes

formada de objetos primitivos e compostos. Obje-

tos primitivos podem se tornar compostos ao adicionar

uma “parte”.

• Simplifica a implementacao. Clientes podem tratar

estruturas compostas e simples de uma maneira uni-

forme.

Page 56: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Consequencias (II)

• Facilita a evolucao do sistema. Nao sao necessarias

mudancas drasticas para utilizar classes simples ja ex-

istentes como componentes de outras classes.

• Torna o projeto “generico”. A principal desvan-

tagem desse padrao e a dificuldade em restringir os

tipos de classes que podem fazer parte das classes

componentes.

Page 57: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Figuras Graficas (I)

• Nesse sistema, um elemento grafico pode ser uma

linha, um retangulo ou uma figura.

• Porem, uma figura pode ser composta de varios ele-

mentos graficos, inclusive outras figuras.

• Esse e um caso tıpico de uso do padrao Composite.

Page 58: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Figuras Graficas (II)

Exemplo do Padrão Composite "Figuras Gráficas"

ElementoGrafico

+ desenhar ():void

Linha

+ desenhar ():void

Retangulo

+ desenhar ():void

Figura

+ getElemento (indice :int ):ElementoGrafico

+ desenhar ():void+ adicionar (eg:ElementoGrafico ):void+ remover (eg:ElementoGrafico ):void

Page 59: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (I)

• Referencia explıcita entre o “todo” e suas

“partes”. Essas referencias facilitam o gerenciamento

da estrutura.

• Compartilhamento de componentes. Omesmo ob-

jeto pode jazer parte de mais de um outro.

• Deve-se maximizar a interface comum dos com-

ponentes. A classe componente deve definir o

maximo de operacoes comuns.

Page 60: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (II)

public abstract class ElementoGrafico {

private String cor;

public ElementoGrafico(String cor){

this.cor = cor;

}

public abstract void desenhar();

}

Page 61: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (III)

public class Linha extends ElementoGrafico{

private int[] ponto1;

private int[] ponto2;

public Linha(String cor, int[] ponto1, int[] ponto2){

super(cor);

this.ponto1 = ponto1;

this.ponto2 = ponto2;

}

public void desenhar(){

//... desenhar a reta ‘‘ponto1 - ponto2’’

}

}

Page 62: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (IV)

public class Retangulo extends ElementoGrafico{

private int[] centro;

private int lado1;

private int lado2;

public Retangulo(String cor,

int[] centro, int lado1, int lado2){

super(cor);

this.centro = centro;

this.lado1 = lado1;

this.lado2 = lado2;

}

public void desenhar(){

//desenhar um retangulo

}}

Page 63: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (V)

public class Figura extends ElementoGrafico{

private ElementoGrafico[] elementos;

public Figura(String cor){

super(cor);

}

public void desenhar(){

para cada elemento{

elementoAtual.desenhar();}

}

public void adicionar(ElementoGrafico eg){...}

public void remover(ElementoGrafico eg){...}

public ElementoGrafico getElemento(int indice){

return elemento[indice];}

}

Page 64: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

O Padrao de Projeto Observer

• O Padrao Observer e utilizado para atualizar a ex-

ibicao de dados em diferentes visualizacoes.

• Mais especificamente, imaginemos uma situacao onde

um dado e exibido em forma de planilha e grafico

(simultaneamente).

• E desejavel que as duas visualizacoes se mantenham

consistentes durante a execucao do sistema.

Page 65: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Problema

• Atualmente, com o advento das janelas graficas, e

cada vez mais comum a neessidade de atualizacoes

multiplas de exibicoes que reflitam os mesmos dados.

• Por exemplo, pode ser necessario reresentar os dados

de uma planilha como um grafico de barras e como um

grafico de pizza, alem da propria tabela. Quando atu-

alizar a planilha, e desejavel que os graficos atualizem

automaticamente.

Page 66: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Solucao

• Ao implementar o padrao observer, normalmente refe-

rimos aos dados como o sujeito da acao e as suas

formas de exibicao como observadores (do ingles ob-

servers).

• Cada observador se registra com seus respectivos ob-

jetos de interesse a fim de serem notificados de al-

teracoes nos seus estados.

• Dessa forma, cada observador deve conhecer a inter-

face que o sujeito oferece para cadastro e para comu-

nicacao de mudancas.

Page 67: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Estrutura do Padrao Observer

Estrutura do Padrão Observer

Subject

+ associar (o:Observer ):void+ desassociar (o:Observer ):void#notificar ():void

Observer

+ atualizar (Subject sub :Subject sub ):void

ConcreteSubject

−estado :.

+ obterEstado ():int+ ajustarEstado (est :int ):void

ConcreteObserver

−estado :.

+ atualizar (sub :Subject ):void

NOTIFICAR: Para cada Observer: − atualizar(this);

AJUSTAR_ESTADO: executa "this.notificar()";

ATUALIZAR: executa "sub.obterEstado();"

Page 68: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Consequencias

• Acoplamento mınimo entre o sujeito e os obser-

vadores. Tudo que o sujeio sabe e que possui uma

lista de observadores que oferecem uma interface sim-

ples. Dessa forma, os sujeitos nao conhecem o tipo

concreto que materializa o observador.

• Suporte a disseminacao de mensagens (broad-

casting). A notificacao que o sujeito envia e au-

tomaticamente submetida para todos os seus obser-

vadores.

• Atualizacoes inesperadas. Devido aos observadores

nao se conhecerem, a mudanca coletiva se torna

“transparente”, bastando para isso que eles mudem

o sujeito.

Page 69: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Exemplo de Uso - Relogio Digital (I)

• Nesse exemplo, as horas de um relogio pode ser rep-

resentada de forma analogica e digital.

• Essas duas visualizacoes devem estar sincronizadas

com o valor real da hora (hora, minuto e segundo).

• Dessa forma, a mudanca nos dados da hora devem

influenciar as duas visualizacoes, cada uma represen-

tando da sua maneira.

Page 70: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Exemplo de Uso - Relogio Digital (II)

Exemplo do Padrão Observer "Relógio Digital"

Relogio

+ atualizar (marc :MarcadorHora ):void

RelogioAnalogico

−hora :int−minuto :int−segundo :int

+ atualizar (marc :MarcadorHora ):void

MarcadorHora

+ associar (o:Relogio ):void+ desassociar (o:Relogio ):void#notificar ():void

Hora

−hora :int−minuto :int−segundo :int

+ obterHora ():int+ obterMinuto ():int+ obterSegundo ():int+ atualizarHorario ():void

RelogioDigital

−hora :int−minuto :int−segundo :int

+ atualizar (marc :MarcadorHora ):void

Page 71: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (I)

• Os observadores pecisam conhecer o seu sujeito.

• Pode ser necessario que um observador possua mais

de um sujeito.

• O sujeito e seus observadores utilizam o mecanismo

de notificacao para manter a consistencia.

• A remocao de um sujeito nao deve produzir referencias

inconsistentes nos seus observadores. Para isso, o su-

jeito deve notificar seus observadores antes de ser re-

movido.

Page 72: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (II)

public class MarcadorHora {

private ‘‘Vetor de Relogio’’ observers;

public void associar (Relogio r){

observers.‘‘addLista(r)’’;

}

public void desassociar (Relogio r){

observers.‘‘removerLista(r)’’;

}

void notificar() {

‘‘Para cada observer’’(observers){

itemCorrente.atualizar(this);} //delegac~ao

}

}

Page 73: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (III)

public class Hora extends MarcadorHora {

private int hora;

private int minuto;

private int segundo;

public Hora(int hora, int minuto, int segundo){

this.hora = hora;

this.minuto = minuto;

this.segundo = segundo;

}

...obterHora(); obterMinuto(); obterSegundo()}

public class Relogio {

public abstract void atualizar(MarcadorHora marc);

}

Page 74: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (IV)

public class RelogioAnalogico extends Relogio {

private int hora; private int minuto;

private int segundo;

public RelogioAnalogico(MarcadorHora marc){

this.hora = marc.obterHora();

this.minuto = marc.obterMinuto();

this.segundo = marc.obterSegundo();

marc.adicionar(this);

}

public void atualizar(MarcadorHora s){

// redefinic~ao que utiliza ‘‘marc.obter*()’’

}

public void mostrarHora(){//mostrar hora analogico}

}

Page 75: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (V)

public class RelogioDigital extends Relogio {

private int hora; private int minuto;

private int segundo;

public RelogioDigital(MarcadorHora marc){

this.hora = marc.obterHora();

this.minuto = marc.obterMinuto();

this.segundo = marc.obterSegundo();

marc.adicionar(this);

}

public void atualizar(MarcadorHora s){

// redefinic~ao que utiliza ‘‘marc.obter*()’’

}

public void mostrarHora(){//mostrar hora digital}

}

Page 76: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (VI)

public class RelogioAnaDigi{

private RelogioAnalogico ra;

private RelogioDigital rd;

private MarcadorHora marc;

public Relogio(MarcadorHora marc){

this.marc = marc;

this.ra = new RelogioAnalogico(marc);

this.rd = new RelogioDigital(marc);

}

public void mostrarHora(){

ra.mostrarHora();

rd.mostrarHora();

}

...

Page 77: An´alise Orientada a Objetos - ic.unicamp.brariadne/mc436/1s2014/cap07-v3.pdf · An´alise Orientada a Objetos ... Análise Projeto Implementação Testes Casos de Uso. Realizac˜oes

Implementacao (VI)

...

public static void main(String args[]){

MarcadorHora marc = new Hora(12, 30, 00);

RelogioAnaDigi rel = new RelogioAnaDigi(marc);

rel.mostrarHora();

}

}