Você está na página 1de 71

2ULHQWDomRD2EMHWRV

'D7HRULDj3UiWLFDHP-DYD
CCUEC/Unicamp
outubro/99

Roteiro
5HXWLOL]DomRGH3URMHWRH6RIWZDUH
Design Patterns (Padres de Projeto)

Frameworks
Componentes
RMI (Remote Method Invocation)

Reutilizao de Projeto
'HVLJQ3DWWHUQV - padres de projeto e anlise
)UDPHZRUNV orientados a objetos

Padres de Projeto e Anlise


3DGU}HVGHRUJDQL]DomRGHKLHUDUTXLDVGH
FODVVHVSURWRFRORVHGLVWULEXLomRGHUHVSRQVDELOLGDGHVHQWUHFODVVHV
TXHFDUDFWHUL]DPFRQVWUXo}HVHOHPHQWDUHVGH
SURMHWRRULHQWDGRDREMHWRV
8PSDGUmRGHSURMHWRpXPHVWUXWXUDTXHDSDUHFHUHSHWLGDPHQWH
QRVSURMHWRVRULHQWDGRVDREMHWRVSDUDUHVROYHUXPGHWHUPLQDGR
SUREOHPDGHIRUPDIOH[tYHOHDGDSWiYHOGLQDPLFDPHQWH

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

ConcreteSubject
GetState()
SetState()

observers
Observer
for all o in observers{
o .Update()}

subject

Update()

ConcreteObserver
Update()

return subjectState
observerState

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

Context

state
State
Handle()

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

5HFRQKHFLPHQWRGHXPSDGUmRGHSURMHWR

Padres de Projeto
&RPRXVDUSDGU}HVGHIRUPDHILFD]
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

&RPRGHVFREULUQRYRVSDGU}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
IUDPHZRUNGHDSOLFDo}HVRULHQWDGRDREMHWRV
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
usurio

Chamadas a operaes
implementadas pelo framework

$SOLFDomRHVSHFtILFD
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 !

9LVmR

0RGHOR
Por favor,
me passe os
dados

Mudei!

&RQWURODGRU

Framework MVC
0RGHOR
Altere dados

9LVmR

&RQWURODGRU
Altere apresentao

O usurio interage

MVC - Exemplo
MVC - Model/View/Controller
0RGHOR
Viso
Viso

Controlador

&DWHJRULD
9DORU
Controlador

Controlador

Reutilizao de Software
3DFRWHV 3DFNDJHV
&RPSRQHQWHV
: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
$OJXQVH[HPSORVGH3DFNDJHVHP-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 voidVWDUW ()
{ 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 FRPSRUWDPHQWRH[WHUQR (o que ele faz) que definido
na sua especificao
suas RSHUDo}HVLQWHUQDV (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 OyJLFDGHQHJyFLR 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 GLIHUHQWHVOLQJXDJHQVHWHFQRORJLDV, 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.
3DUDFULDUXPQRYRVLVWHPDRVGHVHQYROYHGRUHVDSHQDVFRPELQDP
FRPSRQHQWHV

Java Beans - Componentes Java


Arquitetura Java de FRPSRQHQWHVUHXWLOL]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 aplicaesOHJDF\.
Um ZUDSSHU pode ser utilizado para eliminar as dependncias
entre os sistemas atuais e fornecer a funcionalidade das
aplicaesOHJDF\ 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
REMHWRVGLVWULEXtGRV

RMI - Ambiente de Execuo


0iTXLQD&OLHQWH

0iTXLQD6HUYLGRUD
1

RMI Registry

Lookup
Server

Register
4
Server

&OLHQW

Security
Manager
9

Server
Interface

6HUYHU

3
Security
Manager

Stub

Skeleton

Metodologia de Desenvolvimento

Viso geral - metodologias e UML


Tcnicas de Anlise
Projeto: Objetos, Interface e Sistema
Mtodo Integrado
Consideraes Gerais
Java Studio

Metodologia
Coleo de WpFQLFDVHGLUHWUL]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
$QiOLVHGH
5HTXLVLWRV

,PSOHPHQWDomR

$QiOLVH

Teste de Unidades
Teste do Sistema
Teste de Aceitao

7HVWH

3URMHWR

,PSODQWDomR
FRQYHUVmR
Estratgia Paralela
Estudo Piloto
Abordagem Faseada

Modelo Espiral
3ODQHMDPHQWR

$QiOLVHGH5LVFRV

Anlise de
requisitos
Planejamento
baseado nos
requisitos do
usurio

continua ou no ?

$YDOLDomR
GRXVXiULR

(QJHQKDULD

(PGLUHomRDR
VLVWHPDFRPSOHWR

(processo de desenvolvimento)

Metodologia OO

2TXHID]FRPTXHXPDPHWRGRORJLDGHGHVHQYROYLPHQWRGH
VLVWHPDVVHMDFRQVLGHUDGD2ULHQWDGDD2EMHWRV"

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
4XDLVVmRDVSULQFLSDLVDWLYLGDGHV"
Entender quais so os REMHWRVenvolvidos no domnio do problema
Entender como se FRPXQLFDP no mundo real
3URMHWDU a forma como devem ser LPSOHPHQWDGRV

Metodologia OO
4XDLVDVSULQFLSDLVWpFQLFDVXWLOL]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 WpFQLFDVGHRXWURVPpWRGRV para dar suporte aos
esforos de modelagem e desenvolvimento.

UML - Unified Modeling Language


Booch

Rumbaugh
Jacobson

Odell
(classificao)

Meyer

80/

Shlaer-Mellor
(ciclo de vida)

(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

'LDJUDPDGR8VH&DVH'HVFULomRGR8VH&DVH

Anlise - Modelo de Classes


Solicitao

gera

data solicitao
usurio
descrio
justificativa

Servio

descrio
data-incio
data-final
recebe
executa
autoriza

executado

Funcionrio
nome
funo
e-mail

responsvel

rea Tcnica

trabalha
chefia

nome
objetivo

'LDJUDPDGHFODVVHVH[WUDtGRDSDUWLUGDDQiOLVHGRV8VH&DVHV

Anlise - CRC
Classes/responsabilidades/colaboradores
&ODVVH6HUYLoR
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


)HHGEDFNSDUDYDOLGDURVPpWRGRVGDFODVVH

Anlise - Diagrama de Interao (DI)


5HJLVWUDU6ROLFLWDomRQRVLVWHPD SHORXVXiULR
Cliente

rea tcnica

Servio

E-mail
rea receptora
Produto/servio
Dados da solicitao
Vincular(sol)

receber(sol)

Solicitao

Solicitao

reaTcnica

Anlise - Diagrama Transio de Estado


alocar(recurso)
(recurso no suficiente)
alocar(recurso)
(recurso suficiente)

DEULU

$JXDUGDQGR

(PFXUVR
desalocar(recurso)
(recurso no suficiente)
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
6HUiTXHDVFODVVHVGHQHJyFLRVmRVXILFLHQWHVSDUDD
LPSOHPHQWDomRGRVLVWHPD"
O modelo de objetos pode ser otimizado ?
Como o usurio vai interagir com o sistema ?
Quem ir controlar o fluxo de mensagens ?
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
&ODVVHVGHLQWHUIDFH - interao com o usurio
&ODVVHVGHFRQWUROH - seqncia das mensagens
&ODVVHVGHEDQFRGHGDGRV - persistncia dos dados
&ODVVHVGHQHJyFLR - relacionadas no modelo de anlise

Projeto
3ULQFLSDLVDWLYLGDGHVGHSURMHWR
3URMHWRGH2EMHWRV
Otimizao e refinamento do modelo de classes da anlise
Converso para o modelo relacional de banco de dados

3URMHWRGH,QWHUIDFH
Define a forma de interao dos usurios com a aplicao
sendo construda

3URMHWRGH6LVWHPD
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
7HFQRORJLDVGHDSRLR
3URMHWRGH2EMHWRV
Design Patterns (padres de projeto)
Packages

3URMHWRGH,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)

3URMHWRGH6LVWHPD
Arquiteturas de aplicao , frameworks, componentes

Projeto de Interface
Etapas principais

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
Transparncia

Robustez
Orientao
Produtividade
Integridade

Projeto de Interface
Princpios bsicos (cont)
Controle

Clusterizao
Visibilidade
Consistncia Inteligente
Utilizao de cores como complemento

Projeto de Objetos
Etapas bsicas

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

executa

Solicitao

adicionarSolicita(so)

Area Tcnica
sol: set Solicitacao
adicionarSolicita(so)

no nulo

Solicitao
area: AreaTecnica
conectar_area(area)

Associao bidirecional: execuo bem-sucedida de QHZ6ROLFLWDomR requer


execuo bem-sucedida de FRQHFWDUBDUHD de maneira a ter um vnculo
bidirecional consistente

Projeto de Sistemas
Questes bsicas para a Arquitetura da Aplicao

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
Linguagens Orientadas a Objetos
Java, C++, Smalltalk

Ambientes de Desenvolvimento
VisualAge for Java(IBM)
Visual Caf (Symantec)
Jbuilder 3 (Borland)

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

Fase 1
Entendimento
do Negcio

Anlise do
Processo

Gerenciamento
do Processo
5P

Projeto do
Processo

Requisitos

Anlise

4S

5S

Projeto

Implem

6S

7S

Viso Geral

Fase 3

Aprendizado
,PSOHPHQWDomRGHXPDPHWRGRORJLD22
Mudana de paradigma - treinamento intensivo
Prottipos sem compromissos
Primeiros sistemas devem ser livres...
Grupo formal de metodologia - proposta e treinamento
Acerto do ambiente de desenvolvimento - suporte, padres
Administrao de classes/objetos - Biblioteca de Classes
Ferramenta CASE

Orientao a Objetos
Benefcios
Reaproveitamento
Estabilidade
Projetista pensa em termos de comportamento dos objetos e
no em detalhes de baixo nvel
Construo de objetos cada vez mais complexos
Confiabilidade
Verificao de preciso
Novos mercados de software
Desenvolvimento acelerado
Integridade

Orientao a Objetos
Benefcios
Programao facilitada
Manuteno facilitada
Ciclo de vida dinmico
Refinamento durante a construo
Modelagem mais realista
Melhor comunicao entre profissionais de sistema e clientes
Interoperabilidade
Processamento cliente-servidor
Processamento distribudo e em paralelo
Bibliotecas de classes industrializadas e corporativas

Java Studio
8PDPELHQWHGHGHVHQYROYLPHQWR2ULHQWDGRD2EMHWRV

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

Você também pode gostar