Você está na página 1de 146

AnliseeProjetodeSistemas comUML

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

TransiesInternas.Emcertassituaes necessrioexecutaraesduranteasetapasdeum estado:


Entrada:aoentraremumestado Sada:aosairdeumestado Permanncia:enquantoestiveremumestado

Pacman:Estados

7)Atividades
Descreveadinmicadeumsistema,os fluxos,concorrnciasedesvios Semelhanteaumfluxograma Podeserusadoparaesclarecercasosdeuso complexosouinteraesentreeles Descrevemofluxoentreatividades

Atividades:Componentes
Estadosinicial(obrigatrioenico)efinais (opcional) Transies
SeparaoeUnio Desvios

Estadosdeatividadeeestadosdeao Objetos Raias

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

Você também pode gostar