You are on page 1of 71

2ULHQWDomR D 2EMHWRV 'D 7HRULD j 3UiWLFD HP -DYD

CCUEC/Unicamp outubro/99

Roteiro
5HXWLOL]DomR GH 3URMHWR H 6RIWZDUH
3 Design Patterns (Padres de Projeto)

3 Frameworks 3 Componentes 3 RMI (Remote Method Invocation)

Reutilizao de Projeto
3 'HVLJQ 3DWWHUQV - padres de projeto e anlise 3 )UDPHZRUNV orientados a objetos

Padres de Projeto e Anlise


3DGU}HV GH RUJDQL]DomR GH KLHUDUTXLDV GH FODVVHV SURWRFRORV H GLVWULEXLomR GH UHVSRQVDELOLGDGHV HQWUH FODVVHV TXH FDUDFWHUL]DP FRQVWUXo}HV HOHPHQWDUHV GH SURMHWR RULHQWDGR D REMHWRV 8P SDGUmR GH SURMHWR p XP HVWUXWXUD TXH DSDUHFH UHSHWLGDPHQWH QRV SURMHWRV RULHQWDGRV D REMHWRV SDUD UHVROYHU XP GHWHUPLQDGR SUREOHPD GH IRUPD IOH[tYHO H DGDSWiYHO GLQDPLFDPHQWH

Padres de Projeto e Anlise


Descrio padro de um design pattern
objetivo motivao aplicabilidade estrutura participantes colaboraes conseqncias implementao exemplo de codificao

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()

ConcreteSubject GetState() SetState() subjectState

subject return subjectState

ConcreteObserver Update() observerState

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()

Composite Operation() Add(component) Remove(Component) GetChild(int) Forall g in children g.Operation();

Padres de Projeto

5HFRQKHFLPHQWR GH XP SDGUmR GH SURMHWR

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

&RPR GHVFREULU QRYRV SDGU}HV


 O padro pode ser utilizado em outros lugares?  Utilize o padro vrias vezes  Espere fazer mudanas em seu diagrama de classes

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

Frameworks - Viso Conceitual


Estrutura de controle Classes abstratas

)UDPHZRUN
Chamadas a operaes implementadas pelo framework

Chamadas a operaes implementadas pelo usurio

$SOLFDomR HVSHFtILFD
Classes especficas implementadas pelo usurio

Viso conceitual da estrutura de um framework

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.

Viso: a forma de apresentao dos dados do modelo para o mundo externo,


pode ser na forma de GUI, fala, som, listagens ou mesmo em uma sada no orientada a usurios, como ligar um ar condicionado.

Controlador: a forma de tratar a entrada do usurio ou outro meio e dar


feedback para o modelo, normalmente alterando alguns de seus dados.

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

Java Beans - Componentes Java


Arquitetura Java de FRPSRQHQWHV UHXWLOL]iYHLV independente de plataforma. Um -DYD%HDQ um componente de software reutilizvel que pode ser manipulado visualmente em uma ferramenta de construo
(construtor de pginas Web, construtor visual de aplicaes, construtor de GUIs)

Projeto SanFrancisco - IBM

Wrappers - legacy systems


Um ZUDSSHU um componente que fornece servios implementados por aplicaes OHJDF\. Um ZUDSSHU pode ser utilizado para eliminar as dependncias entre os sistemas atuais e fornecer a funcionalidade das aplicaes OHJDF\ para novas solues baseadas em componentes.

Objetos Distribudos em Java


O sistema RMI (Remote Method Invocation) permite que um objeto rodando em uma mquina virtual Java (JVM) chame mtodos de um objeto que esteja rodando em outra JVM. RMI permite a comunicao remota entre programas escritos em Java. RMI prov um mecanismo atravs do qual o servidor e o cliente se comunicam e passam informaes. Estas aplicaes so chamadas de aplicaes de REMHWRV GLVWULEXtGRV

RMI - Ambiente de Execuo


0iTXLQD &OLHQWH
Lookup Server

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

,PSODQWDomR FRQYHUVmR Estratgia Paralela Estudo Piloto Abordagem Faseada

Modelo Espiral
3ODQHMDPHQWR
Anlise de requisitos Planejamento baseado nos requisitos do usurio

$QiOLVH GH 5LVFRV

continua ou no ? (P GLUHomR DR VLVWHPD FRPSOHWR

$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.

UML - Unified Modeling Language


Booch Odell
(classificao)

Rumbaugh Jacobson Meyer

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)

Anlise Orientada a Objetos

Anlise Dinmica vs Anlise Esttica


A $QiOLVH (VWiWLFD descreve a estruturas e os relacionamentos entre os objetos do domnio do problema (Modelo de Classes de Objetos) A $QiOLVH 'LQkPLFD descreve o comportamento dos objetos em termos de suas mudanas ao longo do tempo (DTE, DI)

Anlise - Use Case


Ator: Usurio Atividade: Registrar solicitao no sistema Evento: necessidade de execuo de um servio
Registrar Solicitao

Ler nova solicitao

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

'LDJUDPD GR 8VH &DVH

'HVFULomR GR 8VH &DVH

Anlise - Modelo de Classes


Solicitao data solicitao usurio descrio justificativa recebe executa autoriza gera Servio executado Funcionrio nome funo e-mail

descrio data-incio data-final

responsvel

rea Tcnica nome objetivo

trabalha chefia

'LDJUDPD GH FODVVHV H[WUDtGR D SDUWLU GD DQiOLVH GRV 8VH &DVHV

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 

)HHGEDFN SDUD YDOLGDU RV PpWRGRV GD FODVVH

Anlise - Diagrama de Interao (DI)


5HJLVWUDU 6ROLFLWDomR QR VLVWHPD SHOR XVXiULR
Cliente E-mail rea receptora Produto/servio Dados da solicitao Vincular(sol) receber(sol) rea tcnica Servio Solicitao Solicitao reaTcnica

Anlise - Diagrama Transio de Estado


alocar(recurso) (recurso no suficiente)

DEULU

alocar(recurso) (recurso suficiente)

$JXDUGDQGR
desalocar(recurso) (recurso no suficiente)

(P FXUVR

desalocar(recurso) (recurso suficiente)

Relacionamento entre as Tcnicas de Anlise


Use case

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 Orientado a Objetos

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

Robustez Orientao Produtividade Integridade

Projeto de Interface
Princpios bsicos (cont)
3 Controle

3 3 3 3

Clusterizao Visibilidade Consistncia Inteligente Utilizao de cores como complemento

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

Produto area:AreaTecnica ObterAreaTecnica()

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

Area Tcnica sol: set Solicitacao adicionarSolicita(so)

no nulo

Solicitao area: AreaTecnica conectar_area(area)

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)

3 Banco de Dados Orientado a Objetos


O2 (O2 Technology) Objectstore (Object Design Inc.) Gemstone (Servio Logic) Jasmine (Computer Associates)

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

You might also like