Professional Documents
Culture Documents
CCUEC/Unicamp outubro/99
Roteiro
5HXWLOL]DomR GH 3URMHWR H 6RIWZDUH
3 Design Patterns (Padres de Projeto)
Reutilizao de Projeto
3 'HVLJQ 3DWWHUQV - padres de projeto e anlise 3 )UDPHZRUNV orientados a objetos
Padres de Projeto
2EVHUYHU Suponhamos uma aplicao de Administrao de Solicitao de Servios (ASS) de uma empresa prestadora de servios, onde servios-objeto devem ser sempre comunicados a respeito da alterao do estado do funcionrio-objeto responsvel pela sua execuo. Como modelar a estrutura de dados e os mtodos das classes Servio e Funcionrio para atender esse requisito?
Padres de Projeto
2EVHUYHU: define uma dependncia de um para muitos entre objetos de tal forma
que quando um objeto muda de estado, todos os seus dependentes so notificados e atualizados automaticamente
Subject Attach(Observer) Detach(Observer) Notify() observers Observer for all o in observers{ o .Update()} Update()
observerState= subject.GetState()
Padres de Projeto
6WDWH Suponhamos que na nossa aplicao ASS, servios-objeto, dependendo do estado em que se encontram (espera, parado, em andamento, finalizado), tenham comportamentos diferentes, ou seja, reajem diferentemente mesma mensagem. Por exemplo: calculaValor() Como modelar a estrutura de dados e os mtodos da classe Servio para atender a esse requisito?
Padres de Projeto
6WDWH: permite um objeto alterar seu comportamento quando seu estado
interno se altera. Parecer que o objeto mudou de classe.
state State Handle()
Context Request()
State
Handle()
ConcreteStateA Handle()
ConcreteStateB Handle()
Padres de Projeto
&RPSRVLWH Na nossa aplicao ASS, um servio pode ser um servio de rede, de produo, de suporte ou de desenvolvimento de sistemas. Este ltimo na verdade uma composio de servios que devem ser executados pela rea de desenvolvimento e pelas outras especialidades mencionadas acima. Quando um objeto-servio receber a mensagem descrever(), no queremos nos preocupar com o tipo de servio que est recebendo a mensagem. Como estruturar a classe Servio de forma a permitir essa facilidade?
Padres de Projeto
&RPSRVLWH
Client Component Operation() Add(Component) Remove(Component) GetChild(int) Representa hierarquias do tipo parte-todo Clientes ignoram a diferena entre composies de objetos e objetos individuais
children
Leaf Operation()
Padres de Projeto
Padres de Projeto
&RPR XVDU SDGU}HV GH IRUPD HILFD]
Estude os padres aos quais voc j tenha acesso Procure por conceitos bsicos similares Aplique o padro No espere que tudo possa ser resolvido pelos padres
Padres de Projeto
9DQWDJHQV
Aumentam a produtividade dos desenvolvedores Aumentam a consistncia entre as aplicaes So potencialmente melhores do que os cdigos reutilizveis Podem ser utilizados em combinao para resolverem problemas difceis Existem novos padres sendo desenvolvidos todos os dias
'HVYDQWDJHQV
Precisamos aprender um grande nmero de padres Alguns desenvolvedores no esto abertos a aceitar o trabalho dos outros Os padres no so cdigos
Frameworks
Classes abstratas funcionam como um molde para as suas subclasses. Da mesma forma, um projeto constitudo por classes abstratas funciona como um molde para aplicaes. Um projeto constitudo por classes abstratas denominado IUDPHZRUN GH DSOLFDo}HV RULHQWDGR D REMHWRV
Um framework pode ser considerado como uma infra-estrutura de classes que provem o comportamento necessrio para implementar aplicaes dentro de um domnio atravs dos mecanismos de especializao e composio de objetos, tpicos das linguagens orientadas a objetos
)UDPHZRUN
Chamadas a operaes implementadas pelo framework
$SOLFDomR HVSHFtILFD
Classes especficas implementadas pelo usurio
Frameworks - Exemplo
09& 0RGHO9LHZ&RQWUROOHU
Modelo: contm os dados da aplicao junto com a lgica dos negcios
que define como alterar e acessar os dados; o modelo pode ser compartilhado entre vrios objetos, vises e controladores.
Framework MVC
Mudei !
0RGHOR
Por favor, me passe os dados
Mudei!
9LVmR
&RQWURODGRU
Framework MVC
0RGHOR
Altere dados
9LVmR
Altere apresentao
&RQWURODGRU
O usurio interage
MVC - Exemplo
MVC - Model/View/Controller
0RGHOR Viso Viso Controlador
&DWHJRULD 9DORU
Controlador Controlador
Reutilizao de Software
3 3DFRWHV 3DFNDJHV 3 &RPSRQHQWHV
3 :UDSSHUV
Packages
3DFNDJHV so conjuntos de classes relacionadas entre si de forma que ofeream facilidades uma s outras. Java traz uma grande quantidade de classes agrupadas em pacotes que esto prontas para serem utilizadas pelo programador.
Packages
$OJXQV H[HPSORV GH 3DFNDJHV HP -DYD
MDYDODQJ - base da linguagem Java (Boolean, Character, Double, Float, Integer, Long, math, Object, String,..) MDYDLR - pacote que permite manipulao de streams lendo ou gravando em arquivos (DataInputStream, FileInputStream, FileOutputStream, PrintScreen) MDYDXWLO - pacote que prov uma miscelnea de classes teis incluindo estrutura de dados, time, date, gerao de nmeros randmicos, etc.. MDYDDZW - pacote que prov um conjunto de manipulaes de interface para o usurio tais como windows, caixas de dilogo, botes, cores, checkboxes.. MDYDDSSOHW - pacote que habilita a criao de applets atravs da classe Applet e tambm prov recursos de udio
Packages - Exemplo
import java.applet.*; import java.awt.*; import java.util.Date; public class 'LJLWDO&ORFN extends java.applet.Applet implements Runnable { Font theFont = new Font(TimesRoman, Font.BOLD, 24); Date theDate; Thread runner; public void VWDUW () { if ( runner == null ) { runner = new Thread(this); runner.start();} } public void VWRS () { if (runner != null) { runner.stop(); runner = null;} }
Packages - Exemplo
public void UXQ () { while (true) { theDate = new Date(); repaint(); try { Thread.sleep(1000);} catch (InterruptedException e) {} } } public void SDLQW (Graphics g) { g.setFont(theFont); g.drawString(theDate.toString(), 10, 50); } }
Componentes
Um componente um pedao de cdigo encapsulado e acessvel apenas a partir de sua interface Um componente possui:
seu FRPSRUWDPHQWR H[WHUQR (o que ele faz) que definido na sua especificao suas RSHUDo}HV LQWHUQDV (como ele faz o que se prope a fazer) que est escondido do mundo externo e pode ser entendido apenas se examinarmos seu cdigo fonte seu H[HFXWiYHO (runtime binrio .exe .dll)
Componentes
Componentes de negcio so essencialmente REMHWRV Cada componente implementa a OyJLFD GH QHJyFLR e as propriedades relativas a uma entidade do mundo real. O que os distingue dos objetos tradicionais a capacidade de ser utilizados por aplicaes produzidas em GLIHUHQWHV OLQJXDJHQV H WHFQRORJLDV, rodando sobre diferentes sistemas operacionais. A tecnologia de componentes altera radicalmente a forma como os sistemas de informao so desenvolvidos. Os componentes podem ser considerados como blocos bsicos de construo. 3DUD FULDU XP QRYR VLVWHPD RV GHVHQYROYHGRUHV DSHQDV FRPELQDP FRPSRQHQWHV
0iTXLQD 6HUYLGRUD
1
RMI Registry
7
Server Interface
&OLHQW
6 Security Manager 9 8 5
Register 4 Server
6HUYHU
8 8 9
3 Security Manager
Stub
Skeleton
Metodologia de Desenvolvimento
3 3 3 3 3 3 Viso geral - metodologias e UML Tcnicas de Anlise Projeto: Objetos, Interface e Sistema Mtodo Integrado Consideraes Gerais Java Studio
Metodologia
Coleo de WpFQLFDV H GLUHWUL]HV para construo, manuteno e melhoria em produtos de software. Fornece uma base de comunicao, um conjunto de tcnicas e uma base para engenharia de software.
Fases Clssicas
$QiOLVH GH 5HTXLVLWRV ,PSOHPHQWDomR Teste de Unidades Teste do Sistema Teste de Aceitao
$QiOLVH
7HVWH
3URMHWR
Modelo Espiral
3ODQHMDPHQWR
Anlise de requisitos Planejamento baseado nos requisitos do usurio
$QiOLVH GH 5LVFRV
$YDOLDomR GR XVXiULR
(QJHQKDULD
(processo de desenvolvimento)
Metodologia OO
2 TXH ID] FRP TXH XPD PHWRGRORJLD GH GHVHQYROYLPHQWR GH VLVWHPDV VHMD FRQVLGHUDGD 2ULHQWDGD D 2EMHWRV"
Metodologia OO
Uma metodologia de desenvolvimento de sistemas considerada Orientada a Objetos se ela orienta a construo de sistemas a partir do entendimento do mundo real como um conjunto de objetos que comunicam-se entre si de forma coordenada
Metodologia OO
4XDLV VmR DV SULQFLSDLV DWLYLGDGHV "
Entender quais so os REMHWRV envolvidos no domnio do problema Entender como se FRPXQLFDP no mundo real 3URMHWDU a forma como devem ser LPSOHPHQWDGRV
Metodologia OO
4XDLV DV SULQFLSDLV WpFQLFDV XWLOL]DGDV"
Entendimento do mundo real - Reviso de processos, Use cases Objetos e seus relacionamentos - Modelo de Objetos, CRC, DTE, DI Projeto - Padres de projeto, frameworks, componentes Implementao - ambientes de desenvolvimento, middleware (RMI), banco de dados
Mtodos de Desenvolvimento OO
%RRFK - Object-Oriented Design with Applications :LUIV%URFN - Designing Object-Oriented Software (&5&) 5XPEDXJK - Object-Oriented Modeling and Design (207) &RDG<RXUGRQ - Object-Oriented Analysis -DFREVRQ - OO Software Engineering - A 8VH &DVH Driven Approach 6KODHU0HOORU - Object /LIHF\FOHV-Modeling the World in States &ROHPDQ et al: Fusion - OO Development: The )XVLRQ Method
Mtodos de Desenvolvimento OO
(VWUDWpJLD
Escolher um Mtodo como sendo o mtodo SULQFLSDO para ser seguido e ater-se sua notao para todo o ciclo de vida. Usar WpFQLFDV GH RXWURV PpWRGRV para dar suporte aos esforos de modelagem e desenvolvimento.
Shlaer-Mellor
(ciclo de vida)
80/
(condies pr e ps)
Harel
(diag. de estado)
Gamma et al
(Frameworks, padres)
Fusion
(desc.operaes, numerao de mensagens)
Wirfs-Brock (responsabilidades)
Usurio Gerente
Consulta s solicitao
Curso bsico de ao: 1) cliente informa nome, e-mail, telefone,.... 2) cliente informa rea destino dentro do CPD 3) cliente escolhe produto na lista de produtos existentes 4) o sistema gera um nmero de solicitao 5) apresentar opo de vincular solicitao a outra j existente 6) avisar rea destino que existe uma nova solicitao para ela
responsvel
trabalha chefia
Anlise - CRC
Classes/responsabilidades/colaboradores
&ODVVH 6HUYLoR 6XSHUFODVVH 5HVSRQVDELOLGDGHV &RODERUDGRUHV
$incluir $obter o no. de servios ativos $obter no. solic por servio Solicitao obter identificao obter data previso inicio .... obter usurios por produto Solicitao obter rea responsvel rea tcnica
DEULU
$JXDUGDQGR
desalocar(recurso) (recurso no suficiente)
(P FXUVR
Modelo de Classes
DTE
CRC
DI
Anlise
No final da anlise, j sabemos quais os objetos do negcio envolvidos e como eles devem interagir de forma geral, atravs do modelo de classes e do diagrama de interao
Projeto
6HUi TXH DV FODVVHV GH QHJyFLR VmR VXILFLHQWHV SDUD D LPSOHPHQWDomR GR VLVWHPD " 3 O modelo de objetos pode ser otimizado ? 3 Como o usurio vai interagir com o sistema ? 3 Quem ir controlar o fluxo de mensagens ? 3 Quem vai interagir com o banco de dados ?
Projeto
Tanto o domnio do problema, como o domnio da soluo devem ser entendidos como um conjunto de classes de objetos &ODVVHV GH LQWHUIDFH - interao com o usurio &ODVVHV GH FRQWUROH - seqncia das mensagens &ODVVHV GH EDQFR GH GDGRV - persistncia dos dados &ODVVHV GH QHJyFLR - relacionadas no modelo de anlise
Projeto
3ULQFLSDLV DWLYLGDGHV GH SURMHWR 3URMHWR GH 2EMHWRV Otimizao e refinamento do modelo de classes da anlise
Converso para o modelo relacional de banco de dados
3URMHWR GH ,QWHUIDFH
Define a forma de interao dos usurios com a aplicao sendo construda
3URMHWR GH 6LVWHPD
Produz uma arquitetura de aplicao a qual inclui decises sobre a organizao do sistema e a alocao de mdulos em componentes de hardware e software
Projeto
7HFQRORJLDV GH DSRLR 3URMHWR GH 2EMHWRV Design Patterns (padres de projeto)
Packages
3URMHWR GH ,QWHUIDFH
Utilizao segundo um Guia de Estilo que oriente a utilizao correta de recursos grficos (GUIs), formulrios, frames e outros, considerando o ambiente de implementao (por exemplo, Web)
3URMHWR GH 6LVWHPD
Arquiteturas de aplicao , frameworks, componentes
Projeto de Interface
Etapas principais
3 3 3 3 3 3 3 Anlise de usurios e tarefas Projeto inicial da interface Avaliao da interface sem o usurio Teste da interface com os usurios Construo da interface Acompanhar a utilizao da interface pelos usurios Adaptar o projeto de interface
Projeto de Interface
Princpios bsicos
3 Transparncia
3 3 3 3
Projeto de Interface
Princpios bsicos (cont)
3 Controle
3 3 3 3
Projeto de Objetos
Etapas bsicas
3 3 3 3 3 3 3 Projetar algoritmos para implementar os mtodos Otimizar caminhos de acesso aos dados Implementar controle para interaes externas Ajustar a estrutura de classes para aumentar a herana Projetar associaes Determinar a representao de objetos Empacotar classes e associaes em mdulos
Projeto de Objetos
Exemplo de refinamento do modelo de classes da anlise
AreaTecnica responsvel Produto ObterAreaTecnica()
AreaTecnica
Associaes de mo nica so atravessadas apenas em uma direo Regra Geral: implementada como atributos de ponteiro
Projeto de Objetos
Exemplo de refinamento do modelo de classes da anlise
Area Tcnica adicionarSolicita(so) executa Solicitao
no nulo
Associao bidirecional: execuo bem-sucedida de QHZ 6ROLFLWDomR requer execuo bem-sucedida de FRQHFWDUBDUHD de maneira a ter um vnculo bidirecional consistente
Projeto de Sistemas
Questes bsicas para a Arquitetura da Aplicao
3 3 3 3 3 3 3 Organizao geral e estrutura de controle global Atribuio de funcionalidade aos mdulos Composio dos mdulos Distribuio fsica dos mdulos Protocolos para comunicao Sincronizao e acesso aos dados Expanso e desempenho
Tecnologias de Implementao
3 Linguagens Orientadas a Objetos
Java, C++, Smalltalk
3 Ambientes de Desenvolvimento
VisualAge for Java(IBM) Visual Caf (Symantec) Jbuilder 3 (Borland)
Mtodo Integrado
Fase 2 Implementao do Processo 4P Projeto do Processo Gerenciamento do Processo 5P
Fase 1
Entendimento do Negcio Anlise do Processo
2 4S
3
Requisitos Anlise B
Projeto
Implem
5S
Viso Geral
6S
Fase 3
7S
Aprendizado
,PSOHPHQWDomR GH XPD PHWRGRORJLD 22
3 Mudana de paradigma - treinamento intensivo 3 Prottipos sem compromissos 3 Primeiros sistemas devem ser livres... 3 Grupo formal de metodologia - proposta e treinamento 3 Acerto do ambiente de desenvolvimento - suporte, padres 3 Administrao de classes/objetos - Biblioteca de Classes 3 Ferramenta CASE
Orientao a Objetos
Benefcios
3 Reaproveitamento 3 Estabilidade 3 Projetista pensa em termos de comportamento dos objetos e no em detalhes de baixo nvel 3 Construo de objetos cada vez mais complexos 3 Confiabilidade 3 Verificao de preciso 3 Novos mercados de software 3 Desenvolvimento acelerado 3 Integridade
Orientao a Objetos
Benefcios
3 Programao facilitada 3 Manuteno facilitada 3 Ciclo de vida dinmico 3 Refinamento durante a construo 3 Modelagem mais realista 3 Melhor comunicao entre profissionais de sistema e clientes 3 Interoperabilidade 3 Processamento cliente-servidor 3 Processamento distribudo e em paralelo 3 Bibliotecas de classes industrializadas e corporativas
Java Studio
8P DPELHQWH GH GHVHQYROYLPHQWR 2ULHQWDGR D 2EMHWRV
Referncias
(1) Anlise e Projeto Orientados a Objetos Scott W. Ambler (IBPI Press) (2) Modelagem e Projetos Baseados em Objetos J. Rumbaugh et. al (Campus) (3) Princpios de Anlise e Projeto Baseados em Objetos James Martin (Campus) (4) Design Patterns - Elements os Reusable Object-Oriented Software Erich Gamma et. al (Addison-Wesley) (5) Manual do Visual Age for Java (6) Software Engineering - A Practitioners Approach Roger S. Pressman