Orientacao A Objetos Da Teoria A Pratica Em Java
'D 7HRULD j 3UiWLFD HP -DYD
CCUEC/Unicamp
outubro/99
Roteiro
5HXWLOL]DomR GH 3URMHWR H 6RIWZDUH
✦ Design Patterns (Padrões de Projeto)
✦ Frameworks
✦ Componentes
✦ RMI (Remote Method Invocation)
Reutilização de Projeto
✦ 'HVLJQ 3DWWHUQV - padrões de projeto e análise
✦ )UDPHZRUNV orientados a objetos
Padrões de Projeto e Análise
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
Padrões de Projeto e Análise
Descrição padrão de um “design pattern”
✔
✔
✔
✔
✔
✔
✔
✔
✔
objetivo motivação aplicabilidade estrutura participantes colaborações conseqüências implementação exemplo de codificação
Padrões de Projeto
2EVHUYHU
Suponhamos uma aplicação de Administração de Solicitação de Serviços (ASS) de uma empresa prestadora de serviços, onde serviços-objeto devem ser sempre comunicados a respeito da alteração do estado do funcionário-objeto responsável pela sua execução.
Como modelar a estrutura de dados e os métodos das classes Serviço e Funcionário para atender esse requisito?
Padrões de Projeto
2EVHUYHU: define uma dependência de um para muitos entre objetos de tal forma que quando um objeto muda de estado, todos os seus dependentes são 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()
Padrões de Projeto
6WDWH
Suponhamos que na nossa aplicação ASS, serviços-objeto, dependendo do estado em que se encontram (espera, parado, em andamento, finalizado), tenham comportamentos