Академический Документы
Профессиональный Документы
Культура Документы
Prof.BrunoCrivelariSanches bcsanches@gmail.com
Estematerialnopodeserreproduzidoouutilizadosem autorizao.
Bibliografia
UMLBibleTomPender DesignPatternsHeadFirst UML:GuiadoUsurio,GradyBooch, JamesRumbaugh,IvarJacobson,Makron Books. UMLEssencial:umbreveguiaparaa linguagempadrodemodelagemde objetos.MartinFowlereKendallScott, Bookman.
Internet
www.uml.org www.umlforum.com www.staruml.org http://jude.changevision.com/jude web/product/community.html
FerramentasCase
Rational ArgoUML Poseidom JUDE Together VisualParadigm StarUML(OpenSource)
FundamentosUML
UMLUnifiedModelingLanguage AUMLumalinguagemparavisualizar, especificar,construiredocumentaros artefatosdeumsistemadesoftware umconjuntodeferramentasenouma metodologiadedesenvolvimento Flexvelegenrica,podeseraplicadaa vriostiposdesistemas
FundamentosUML
Mtodo=linguagem(UML)+Processo (RUP) ModeloConceitual:
Coisas Relacionamentos Diagramas
Coisas
Estruturais:nomesdosmodelos.Classes, casosdeuso,colaborao,componente, interface,n. Comportamentais:verbos.Interao, mquinadeestado, DeAgrupamento:organizao.Pacote, frameworks,subsistemas. DeAnotao:explicaes.Notas.
Relacionamentos
Dependncia:indicaquemudanasemuma coisapodemafetaroutra Associao:representaaligaoentreum todoesuaspartes Generalizao:relacionamentoentrepaise filhosnoqualosfilhoscompartilham estruturaecomportamentodospais. Realizao:especificaumcontrato
Diagramas
Visesdeumsistema:
CasodeUso Projeto Processo Implementao Implantao
Diagramas
Apresentaogrficadeumconjuntode elementos,geralmentemostradoscomoumgrafo conectadodevrtices(coisas)earcos (relacionamentos) Novediagramas:casosdeuso,classes,objetos, sequncia,colaborao,estados,atividades, componentes,execuo.
DiagramasUML
Seqncia Casos de Uso Objetos
...
Colaborao Ambiente Estados
...
Classes
Componentes
Atividades
Execuo
ProcessosdeDesenvolvimento
CiclodeVida
Tradicional Anlise Projeto Construo Testes Iterativo(RUP) ExtremeProgramming
RUP
RationalUnifiedProcess Processodedesenvolvimentodesistemas iterativoeincrementalquesugereUML comopadrodeuso.
RUP
RUP
Faseseseusprodutos:
Concepo:Cronograma,descrio,diagramade casosdeusogeral Elaborao:Prottipo,casosdeusodetalhados, diagramadeclasses,projetolgicodobancode dados Construo:definiodasverses,mdulos implementados,bancodedados Transio:versobeta,versofinal,manuais.
ExtremeProgramming(XP)
Processogildedesenvolvimento CriadoporKentBeck,WardCunningham, andRonJeffriesem2000 Objetivoprincipal:entregarosoftwarequeo clientequernomomentoemqueeleprecisa Menosformalizaoemaisdisciplina Sugereprticasparaalcanarvalores
ValoresdoXP
1. Comunicao
Maiorcomunicaoentremembrosdaequipe (presencial) Nolimitadaporprocessosformais Reduodacomplexidadedosistema Noprojetardemaneiragenrica:primeirooque necessrio Frequenteinversodasprticastradicionais
2. Simplicidade
ValoresdoXP
1. Feedback
Detecorpidadefalhas=economia Prazoscurtos Saberouvirecompreender Respeitarpontosdevistadiferentes Mudanaseerrossonaturais Jogarforaprticasquecausamproblemas
2. Respeito
3. Coragem
PrticasdoXP
AmbienteInformativo
Objetivo:aprimoraracomunicao Ferramentas:
Cartescomhistrias(mural) QuadroBranco Postit FlipChart GrficosnaParede
PrticasdoXP
BuilddeDezMinutos
Objetivo:Melhorarofeedback,evitaroacmulo deerros Deveserpossvelexecutarobuildeostestes automatizadosemdezminutos Ajudamareduziroestresseemmomentos crticos
PrticasdoXP
BuilddeDezMinutos
Dificildeseobtercomjogos Visual:precompiledheaders VisualExpress2008:Buildsparalelos
PrticasdoXP
DesenvolvimentoOrientadoaTestes
Testeprimeiro,programedepois Escrevertestesquenofuncionemcasosejam inseridoserrosbviosnocdigo Fazerotestefuncionarcomimplementaes bvias Refatorarmtodosetestes
PrticasdoXP
DesignIncremental
Aplicaodesenvolvidadeformaiterativae incremental Criarsoluessimplesacadaiterao
SentarseJunto
Trabalhoemconjunto Facilidadenacomunicao
PrticasdoXP
EquipeIntegral
Compostapelosdesenvolvedoresepelousurio
Trabalhoemconjunto
Facilidadenacomunicao
Reunioemp
PrticasdoXP
PadrodeCodificao(CodingStandard)
Parecequeumapessoafeztodoosistema
PosseColetiva(CollectiveOwnership)
Todossoresponsveis
IntegraoContnua(ContinuousIntegration)
Vriasvezesaodia
RitmoSustentvel(SustainablePace)
Prazosadequados
PrticasdoXP
ProgramaoemPar(PairProgramming)
Trocaealternncia
ProjetoSimples(SimpleDesign)
Apenasoquenecessrio
Refatoramento(Refactoring)
Melhoriacontnuadosoftware
Metfora(Metaphor)
Analogiaparafacilitarodesenvolvimento
Vantagens
Foconacodificao(programaspequenos) Envolvimentodousurio Trabalhoemequipeecomunicao Responsabilidadepelaqualidade Simplicidade Testesfrequentes Melhoriacontnua
FatoresCrticos
PadresdeCodificao TarefasPequenas Refatorao TestesAutomticos ProgramaoemPar
PadresdeCodificao
Facilitamacomunicaoeamanuteno Minimizamoconhecidoproblema:ningum entendeestecdigo Ferramentasautomticasparaformatao
TarefasPequenas
Identifiquefuncionalidadespequenasque nodemoremmaisdoquealgumashoras Implementeafuncionalidadetotalmente, incluindotestesedocumentao
Refatorao
Melhordedoismundos:
Resolvaoproblemaomaisrpidopossvel Melhoreoprograma/recursosacadanova iterao
Oprogramaestsemprefuncionando,no importaafasedoseudesenvolvimento
Refatorao
Encapsularcampos Extrairmtodos Extrairinterface(generalizartipo) Movermtododeumasubclasseparauma superclasse(PullUp) Movermtododeumasuperclasseparauma subclasse(PushDown) Renomearmtodos
TestesAutomticos
Testesnoservemapenasparavalidarocdigo!!! Testessousadosparacomunicarclaramentecomo ocdigodeveserusadoecomoeledevefuncionar Aautomatizaodetestesassemelhaseaoprocesso decompilaomoderno:
ProgramasemCartes=TestesManuais Compiladoresonthefly=TestesAutomticos
TestesAutomticos
Sistemasquenopossuemtestesautomticos somaisdifceisdemanter ObjetosMock
TestedeNovasFuncionalidades
Escrevaotesteparaafuncionalidade CodifiqueosobjetosMock Executeotesteunitrio Codifiqueanovafuncionalidade Executeotesteunitrio Executeoconjuntodetestes(TestSuite)
TestedeBugs
Escrevaumtestequefalheparaobug reportado Executeotesteeobserveafalha Corrijaobug Executeotesteeobserveosucesso
ProgramaoemParFunciona?
ProgramaoemPar
Podefuncionarbem(1+1<=2)quandoos programadorespossuemomesmonvelde conhecimento/experincia Adaptao:paraprogramadorescomgrande diferenadenvel/experinciafaapair programmingemtempoparcial
ProgramaoemPar
Reduodebugs Estudode viabilidade Pressodopar Disseminaodo conhecimento Confiana Velocidade
UmProcessoSimples
1. 2. 3. 4. 5. 6. 7. 8. DescriodoProblema IdentificaodasFuncionalidades AgrupamentodasFuncionalidades=CasosdeUso DescriodosCasosdeUso(textoouDiagrama deAtividades) DiagramadeClassesdoJogo DiagramadeClassesdaEngine DiagramasdeSequncia DiagramasdeEstado
Scrum
Reuniesdiriasrpidas(15minutosno mximo) Noomomentopararesolverproblemas Oquefoifeitoontem Oquevaiserfeitohoje Algumproblema? Nochegaratrasado!!!!
ScrumMaster
Responsvelporconduziregerenciara reunio Normalmentenodeveintervir,apenas procuramanterofocodareunio
Cronograma
Tarefasdivididasemhoras,nodias Exemplos(ruins):
Movimentaopersonagem:3dias Sistemadecoliso:2dias Carregarcenrio:4dias
Cronograma
Exemplos(bons):
Movimentaopersonagem
Definircomandos:1hora Lercomandosdoinputearmazenar:2horas Movimentaremlinhareta:1hora Virarparaoslados:1hora Colidircomcenrioesttico:3horas ...
Cronograma
Exemplos(bons):
CarregarCenrio
Carregararquivoparamemria:1hora IntegrarlibXML:3horas Factorydeobjetosdojogo:1hora Lernodeseinvocarfactory:1hora ...
Cronograma
Ocronogramaserveparaajudar Evitar:Oquevoufazerhoje? Ajudaamanterofoco Todossabemoquefazeratodomomento Praticamentesetornaumasegunda especificao
Cronograma
Umasimplesplanilhaexcel TaskCoach MozillaCalendar GoogleCalendar OpenWorkbench
Milestones
Foramaequipemanteroprazo Demosjogveis Umpoucodecrunchtime
Milestones
Umasimplesplanilhaexcel TaskCoach MozillaCalendar GoogleCalendar OpenWorkbench
Wiki
timoparadocumentao Todostemacesso,todospodematualizar ServidorWEB Controlededefeitos(bugs) Cronograma Milestones TiddlyWiki(http://www.tiddlywiki.com/)
ControledeVerso
CVS,SVN,SourceSafe Fundamentalparatrabalhoemequipe Backup
ControledeVerso
Branches Tags Histrico
ControledeVerso
Armazenartudo:
Cdigo Arte(fontesefinal) Documentos UML
ControledeVerso
Scriptdebuild
Fazcheckout Compila Rodatestes Copiaarte Gerainstalador Apenascomumboto
2)ExemploGeral
EsteexemplomostraosdiagramasUMLde algunsaspectosdojogoPacman.
Pacman:CasodeUsoGeral
Pacman:CasodeUsoAgentes
Pacman:Classes
Pacman:Sequncia
Pacman:Colaborao
Pacman:Estados
Pacman:Atividades
3)CasosdeUso
Descreveocomportamentodosistemado pontodevistadosatores Baseiasenainteraodosistemacomos atores Objetivos:
Oqueosistemadevefazer Quaisasresponsabilidades
CasosdeUso:Componentes
Ator:interagecomosistema.Tambmpodeserum agentequeestdentrodosistemamasqueinterage comalgumaparte. Comunicao:ligaoentreatoreprocesso Casodeuso:processoqueexecutaaao
CasosdeUso:Atores
Atorinteragecomosistema Representaumaregraouumpapel,nunca umusurioespecfico Onomedoatordeverefletiroseupapel Ummesmousuriopodeserrepresentado poratoresdiferentesquandoassumepapis diferentes
CasosdeUso:IdentificaodeAtores
Osatorespodemseridentificadospelas seguintesperguntas:
Quemirusarosistema? Quemiradministrarosistema? Quaisdispositivosdehardwareosistemair acessar? Osistemasecomunicarcomoutrossistemas? Osistemapossuiagentesqueinteragemcom suaspartes?
CasosdeUso:Atores
CasosdeUso:Definio
Casodeusoumasequnciadeaes executadasparaumdeterminadoobjetivo Oseunomedeveserumafrasequeindiquea aoqueelerealiza descritocomoumconjuntodepassosbem comosuasexcees Temincio,meioefimesempredevolve umaresposta
CasosdeUso:Definio
Normalmenteiniciadoapartirdeum estmulo(solicitao)deumator Conectamseaosatoresporassociaes1 para1semindicaodedireo Atoresativosiniciamumcasodeuso,atores passivosparticipamdocasodeusosem inicilo
CasosdeUso:Definio
CasosdeUso:Relacionamentos
Indicamaexistnciadeumacomunicao entreatoresoudealgumtipodeligaoentre casosdeuso Emgeralumacomunicaoidentificada comoumaligaosemdireo Umcasodeusopodeestarassociadoamais deumator
CasosdeUso:Relacionamentos
Herana:representaumageneralizaode atoresoucasosdeuso.onicoquepode serusadoentreatores Extenso:representafluxosopcionaisou anormais.representadopor<<extend>> Incluso:representafluxoscomplexose comunsavrioscasosdeuso.representado por<<include>>
CasosdeUso:Relacionamentos
CasosdeUso:Relacionamentos
CasosdeUso:Relacionamentos
CasosdeUso:Relacionamentos
CasosdeUso:Relacionamentos
CasosdeUso:Descrio
Nome Descrio Atores Situao ExtenseseIncluses Prepscondies Fluxoprincipalealternativos
CasosdeUso:Descrio
Nome:PassardeFase Descrio:Apresentaospassosnecessrios paraopacmanpassardefase Atores:Pacman Situao:Descriocompleta,verso1.0
CasosdeUso:Descrio
FluxoPrincipal:
1. Moverpacmanpelolabirintosemcolidircom fantasmas 2. Atualizarplacarcomospontosconseguidos porpegarpontinhos,frutinhasemonstrinhos 3. Repetirospasso1e2atquetodosos pontinhostenhamdesaparecido
CasosdeUso:Descrio
FluxoAlternativo1,Passo1:
1. Seencontrarplula
1. Mudaestadodopacmanparaarretado 2. Mudaestadodosfantasmasparafugindo 3. Iniciaverificaodetempo
CasosdeUso:Descrio
FluxoAlternativo2,Passo1:
1. Seencontrarmonstroenoestiverarretado
1. Mostraanimaodedesaparecimento 2. Perdeumavida 3. Seaindahouvervida,continuaapartirdaposio inicial 4. Casocontrriofinalizarjogo
CasosdeUso:Descrio
FluxoAlternativo3,Passo1:
1. Seencontrarmonstroeestiverarretado
1. Mudaestadodemonstroparamorto 2. Atualizaplacar
4)Classes
Diagramasdeclassemostramaestruturado sistema,identificandoasclasses, relacionamentosecardinalidade Classespodemseragrupadasempacotes paramelhoraralegibilidadedodiagrama Podemserusadosparamostrarobjetosno lugardeclasses
Classes:RepresentaodeClasses
Umaclasserepresentadaporumaclasse com3compartimentos:
Classes:Associaes
Representamorelacionamentoentreclasses Podemtermultiplicidadeepapis Dependncia:umaclassedependedeoutra,ouseja, chamamtodosdeoutraclasse Herana:umaclasseherdadeoutra Agregao:relacionamentotodoparte Composio:idemaoanteriormasaspartesno existemsemotodo
Classe:Associaes
Relaocommultiplicidade
Classe:Associaes
Herana
Classe:Associaes
Agregao
Classe:Associaes
Composio
5)Sequncia
Diagramasdesequncia/colaborao mostramadinmicadeumsistema,ouseja, asequnciaemqueastarefassoexecutadas Diagramasdesequnciaenfatizamo ordenamentotemporaldasaes Diagramasdecolaboraoenfatizamas trocasdemensagensentreobjetos Umpodesertransformadonooutrosem perdadeinformao
Sequncia:Caractersticas
Podemsercriadospararepresentarcasosde uso,processoeoperaes Normalmentesoutilizadosparaofluxo normal. Deciseserepetiesprejudicama legibilidadedodiagrama. melhorutilizardiagramasdiferentespara fluxosalternativos
Sequncia:Componentes
Atores Objetos Linhasdevida Caixasdeativao Mensagens Retornos Condies Destruiodeobjetos
Sequncia:Componentes
Colaborao
Diagramasdecolaboraotemamesma semnticaqueosdesequncia Identificamobjetoseatrocademensagens entreeles Asmensagenssoidentificadaspornmeros desequnciaquerepresentamaordemem queelassoenviadas
Colaborao
6)Estados
Representamosestadosqueumobjetopode assumirbemcomoastransiesentreeles Normalmenteutilizadoparaarepresentaode estadosdeobjetosdeumaclasse Componentes: Estado Transio(evento,ao,condiodeguarda) Incio Fim
Estados
Mquinasdeestados
Usandoumainterao,podesemodelaro comportamentodeumasociedadedeobjetosque trabalhamjuntos Usandoumamquinadeestados,podesemodelaro comportamentodeumobjetoindividual Umamquinadeestadosumprocedimentoque especificaseqnciasdeestadosqueumobjetoassume duranteseutempodevidaemdecorrnciadeeventos, bemcomosuasrespostasaesseseventos
Estados
Mquinasdeestados
Normalmente,especificamseinstnciasdeclasses,casos deusoousistemasinteiros Essasinstnciaspodemresponderaeventoscomosinais, operaesoupassagemdotempo Quandoocorreumevento,algumaatividadeser executadadependendodoestadocorrentedoobjeto Oestadodeumobjetoasituaoqueesseobjetopassa emsuavidaduranteaqualelesatisfazalgumacondio, realizaalgumaatividadeouesperaporalgumevento
Estados
Mquinasdeestados
Podesevisualizarumamquinadeestadosde duasmaneiras
Diagramadeatividades:enfatizandoofluxode controledeatividadeparaatividade Diagramadetransiodeestados:enfatizandoos estadospotenciaisdeumobjetoeastransiesentre essesestados
Estados
Mquinasdeestados
Navidadeumobjeto,elepodeexporseauma variedadedeeventos,taiscomo:umsinal,a invocaodeumaoperao,acriaoou destruiodoobjeto,apassagemdotempooua mudanadealgumacondio Emrespostaaesseseventosoobjetoreagecom algumasaes Umobjetopodereceberumevento,responder comumaaoeentomudarseuestado
Estado:Componentes
Estados
Mquinasdeestados
Umobjetopodereceberoutroeventoesua respostapodeserdiferente,emvirtudedoseu estadocorrente,quepodetersidomudadopelo eventoanterior Utilizasemquinadeestadosparamodelaro comportamentodequalquerelemento,emboraos maiscomunssejamclasse,casodeusoouo sistemacomoumtodo
Estados
Mquinasdeestados
Umestadotemdiversaspartes
Nome:podeserannimo Aesdeentradaesada:executadasnaentradaesadado estado,respectivamente Transiesinternas:sotratadassemcausarmudanadeestado Subestados:estruturaaninhada,envolvendosubestadosdisjuntos (ativadosseqencialmente)ouconcorrentes(ativados concorrentemente); Eventosadiados(deferred):umalistadeeventosquenoso tratadosnaqueleestado,masquesoenfileiradosparaserem tratadospeloobjetoquandoestiveremoutroestado
Estados:Transies
TiposdeTransies
Evento:causaamudanadeestado Ao:atividadequenopodeserinterrompida CondiodeGuarda:amudanasacontecersea condioforverdadeira
Pacman:Estados
7)Atividades
Descreveadinmicadeumsistema,os fluxos,concorrnciasedesvios Semelhanteaumfluxograma Podeserusadoparaesclarecercasosdeuso complexosouinteraesentreeles Descrevemofluxoentreatividades
Atividades:Componentes
Estadosinicial(obrigatrioenico)efinais (opcional) Transies
SeparaoeUnio Desvios
Atividades:Componentes
Pacman:Atividades
Exerccio7
Desenheumdiagramadeatividadeparaum doscasosdeusodoexerccio1
8)Componentes/Execuo
Diagramasdecomponentesmostramcomo diversossubsistemasformamaestruturatotal deumsoftware Diagramasdeexecuomostramcomoo hardwareeosoftwareseroconfigurados
Componentes
Partesdodiagramadecomponentes
Componente:asentidadesqueinteragementresi. Programasexecutveis,dlls,arquivos,etc. Classe/Interface/Objeto:semelhantesaos mesmossmbolosnosdiagramasdeclassese objetos Relacionamento/Associao:idemaosdiagramas declasseseobjetos
Componentes
Execuo
Partesdodiagramadeexecuo:
N:aentidadequeforneceoambientede execuoparaoscomponentesdeumsistema. Conexo:similaraorelacionamento/associao dosdiagramasdeclasse
Execuo
Componentes/Execuo:MMORPG
9)DesignPatterns
Sopadresparaaresoluodeproblemas comunsnodesenvolvimentodeaplicaes orientadasaobjetos compostodequatroelementosessenciais:
Nomedopadro Problema Soluo Consequncias
DesignPatterns
Podemserdivididosemtrscategorias:
Criao:soospadresutilizadosnacriaode objetos,tornandoumsistemaindependentedo tipoespecficodeobjetocriado Estrutura:identificamcomoosobjetospodem serligadosparaformarestruturasmaiores Comportamento:descrevempadresdeobjetose classesecomoocorreacomunicaoentreeles.
DesignPatterns:Criao
AbstractFactory:criaodefamliasde objetossemespecificarasclassesconcretas Builder:criaodeobjetoscomplexos independentesdesuarepresentao FactoryMethod:delegaacriaodeobjetos paraassubclasses Prototype:criaodeobjetosapartirdeuma cpiaoriginal Singleton:spodehaverum
DesignPatterns:Estrutura
Adapter:converteumaclasseestrangeira parafuncionaremumdeterminadoprocesso Bridge:separaaabstraodaimplementao Composite:defineestruturasdeobjetos simples/compostosrecursivamente Decorator:adicionacaractersticasaum objetodinamicamente
DesignPatterns:Estrutura
Facade:forneceumpontodecomunicao entreconjuntosdeobjetos Flyweight:compartilhamentodeobjetoscom oobjetivodeminimizarespaode armazenamento Proxy:controlaacessoaobjetospostergando suacriao
DesignPatterns:Comportamento
ChainofResponsibility:encadeiaobjetosque podemresponderarequisies Command:encapsularequisiesemobjetos Interpreter:definearepresentaodeuma gramticabemcomouminterpretador Iterator:mecanismoparaacessoaelementosdeum conjuntodeobjetossemexporsuarepresentao interna
DesignPatterns:Comportamento
Mediator:defineumobjetoqueencapsulao comportamentodecomunicaoentre objetos Memento:permitearestauraodeum objetoaumdeterminadoestado Observer:definecomoumobjetopodeavisar outrossobredeterminadasmudanas State:alteraseucomportamentoquandoseu estadointernomuda
DesignPatterns:Estrutura
Strategy:defineumafamliadealgoritmos tornandoosencapsuladosesubstituveis entresi TemplateMethod:defineabasedeum algoritmo,deixandoalgumasdecisespara assubclasses Visitor:permiteadefiniodenovas operaessemmudanasnaclasse
FactoryMethod
Descrio:
Defineumainterfaceparacriarumobjetomas deixaadecisosobrequalclasseutilizarparaas suassubclasses
Quandousar:
Nopossvel(ounopreciso)saberaqual classeumobjetopertencenacompilao
AbstractFactory
Descrio:permiteacriaodefamliasde objetosindependentedaimplementao Quandousar:
Necessidadedeindependnciadacriaoe representaodeobjetos Umsistemapodeserconfiguradocomumade vriasescolhasdeprodutos Restringirusodeobjetosemumafamlia Esconderimplementao
Builder
Descrio:Separaaconstruodeumobjeto complexodesuarepresentao,permitindo queomesmoprocessodeconstruoseja usadoparatodasasrepresentaes Quandousar:
Oalgoritmoparacriarumobjetocomplexodeve serindependentedesuaestrutura Oprocessodeconstruodevepermitir representaesdiferentes
Prototype
Descrio:Criaodeobjetosapartirda clonagemdeobjetosoriginais Quandousar:
Necessidadedeindependnciadacriaoe representaodeobjetos Paraevitarhierarquiasparalelasdeclasses (AbstractFactory)
Singleton
Descrio:Permiteacriaodeapenasuma instncia(objeto)deumaclasse Quandousar:
devehaverapenasumobjetodeumaclasse
Adapter
Descrio:convertechamadasdeumaclasse paraumainterfaceprdefinida Quandousar:
necessriousarumaclasseemumprocesso cominterfacediferente Criarumaclassereutilizvelquecooperacom outrasnocompatveis
Bridge
Descrio:separaaabstraooulgicade umsistemadesuaimplementaofsica Quandousar:
Evitarligaopermanenteentreabstraoe implementao Alteraesnaimplementaonodevemalterar aabstrao Esconderoucompartilharimplementao
Composite
Descrio:permiteousotransparentede objetossimplesecompostos Quandousar:
necessriotratarobjetossimplesecompostos damesmamaneiraemalgumprocesso Representarhierarquiadeobjetossimplese compostos
Decorator
Descrio:Permiteadicionardinamicamente novascaractersticasaumobjeto.umaboa alternativaaoprocessodecriaode subclasses Quandousar:
necessrioadicionarcaractersticasdemaneira dinmicaetransparente Paradiminuironmerodesubclasses
Facade
Descrio:forneceumainterfaceunificadaparaa comunicaocomumsubsistema Quandousar: Paraproverumainterfacesimplesparaum sistemacomplexo Quandoexisteumadependnciamuitogrande entreclasses Construirumsistemaemcamadas,ondeo patternFacaderepresentapontosdeentrada
Flyweight
Descrio:Compartilhaumgrandenmerode objetosdemaneiraeficiente Quandousar:
Quandoexisteumgrandenmerodeobjetosaumalto custo Amaiorpartedoestadodeumobjetopodeser externalizado Umgrandegrupodeobjetospodesersubstitudoporum nmeromenordeobjetoscompartilhados Aaplicaonodependedaidentidadedeumobjeto
Proxy
Descrio:permiteocontroledeacessoaum objeto Quandousar:
Proxyremoto:representaumobjetoemumlocal diferente Proxyvirtual:criaobjetossobdemanda Proxydeproteo:controladireitodeacesso SmartReference:umponteirocom processamentoadicional
ChainofResponsibility
Descrio:evitaaligaodiretaentreobjetosque enviamrequisieseobjetosqueasrespondem. Requisiessoenviadasparaumacadeiade objetosondetodospodemrespondlas Quandousar:
Maisdeumobjetopoderesponderaumarequisio necessrioenviarrequisiesparamltiplosobjetos semespecificaroreceptor Osreceptoresdevemseridentificadosdinamicamente
Command
Descrio:encapsulaumarequisiocomo umobjeto,flexibilizandooprocesso Quandousar:
Parametrizarobjetos(callback) Processarrequisies Realizarundo
Interpreter
Descrio:definearepresentaodeuma gramticabemcomoseuinterpretador Quandousar:
Agramticasimples Eficincianoumapreocupao
Iterator
Descrio:forneceacessosequenciala elementosdeumconjuntosemexporsua representao Quandousar:
Acessarconjuntodeobjetos Permitirvrioscaminhamentosemconjuntos Oferecerumainterfaceuniformeparaconjuntos diferentes
Mediator
Descrio:defineumpontocomumde comunicaoentrediversosobjetos Quandousar:
Quandoasrelaesentreobjetossocomplexas Areutilizaodeumobjetodifcilpoiselese comunicaereferenciamuitosoutros
Memento
Descrio:externalizaoestadodeumobjeto pararecuperaoposterior Quandousar:
necessrioguardarestadocorrentedeum objetoparausoposterior
Observer
Descrio:possibilitaqueumobjeto notifiqueoutrosquandooseuestadomudar Quandousar:
Umaabstraopossuiaspectosinterdependentes Amudanaemumobjetodevesercomunicada paraoutros
State
Descrio:permiteaumobjetoalterarseu comportamentoapartirdeumamudana interna Quandousar:
Ocomportamentodeumobjetodependedeseu estado Existemgrandesexpressescondicionaisque dependemdoestadodoobjeto
Strategy
Descrio:defineumafamliadealgoritmose permiteescolherdinamicamentequalusar Quandousar: Muitasclassesdiferemapenasno comportamento Sonecessriasmuitasvariantesdeumalgoritno Esconderestruturasdedadosespecficasdeum algoritmo Existeumaexpressocondicionalqueescolhe qualalgoritmoutilizar