SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Introdu¸˜o
                               ca
          Funcamenta¸˜o Te´rica
                     ca      o
                Design Patterns
               Aplica¸˜o Pr´tica
                     ca      a
                       Conclus˜oa
                     Referˆncias
                           e




Design Pattern e a Reusabilidade de Software
          Trabalho de Conclus˜o de Curso
                             a


  Klevison de Barros Matias         Jos´ Ten´rio C. Costa
                                       e    o

                   Ciˆncia da Computa¸˜o
                     e               ca
            Faculdade Alagoana de Administra¸˜o
                                            ca


                     Setembro de 2009



                                                            1 / 27
Introdu¸˜o
                                         ca
                    Funcamenta¸˜o Te´rica
                               ca      o
                                              Introdu¸˜o aos Padr˜es de Projeto
                                                     ca          o
                          Design Patterns
                                              Contexto
                         Aplica¸˜o Pr´tica
                               ca      a
                                              Advento
                                 Conclus˜oa
                               Referˆncias
                                     e


Conte´do
     u
  1   Introdu¸˜o
              ca
         Introdu¸˜o aos Padr˜es de Projeto
                 ca         o
         Contexto
         Advento
  2   Funcamenta¸˜o Te´rica
                    ca   o
         Orienta¸˜o a Objetos
                 ca
         Reusabilidade de Software
  3   Design Patterns
         Introdu¸˜o
                 ca
         Conceito
         Motiva¸˜o
                ca
  4   Aplica¸˜o Pr´tica
             ca      a
         Patterns
  5   Conclus˜o
              a
         Conclus˜es Finais
                 o                                                                2 / 27
Introdu¸˜o
                                       ca
                  Funcamenta¸˜o Te´rica
                             ca      o
                                            Introdu¸˜o aos Padr˜es de Projeto
                                                   ca          o
                        Design Patterns
                                            Contexto
                       Aplica¸˜o Pr´tica
                             ca      a
                                            Advento
                               Conclus˜oa
                             Referˆncias
                                   e


Tema




 O presente trabalho visa abordar os principais conceitos relativos a
 reusabilidade e Padr˜es de Projeto de Software, os quais descrevem
                      o
 poss´ıveis solu¸˜es de problemas comuns encontrados em projetos
                co
 orientados a objetos (Meyer, 1997).




                                                                                3 / 27
Introdu¸˜o
                                        ca
                   Funcamenta¸˜o Te´rica
                              ca      o
                                             Introdu¸˜o aos Padr˜es de Projeto
                                                    ca          o
                         Design Patterns
                                             Contexto
                        Aplica¸˜o Pr´tica
                              ca      a
                                             Advento
                                Conclus˜oa
                              Referˆncias
                                    e


Reusabilidade




  A complexidade de desenvolvimento de software ´ cada vez mais
                                                  e
  crescente e o processo de desenvolvimento ´ ainda muito baseado
                                             e
  em empirismo e sujeito a erros (Gerber, 1999). Para diminuir essa
  complexidade, o conceito de padroniza¸˜o surgiu para atender a
                                         ca
  reutiliza¸˜o (no que tange ` produtividade).
           ca                a




                                                                                 4 / 27
Introdu¸˜o
                                       ca
                  Funcamenta¸˜o Te´rica
                             ca      o
                                            Introdu¸˜o aos Padr˜es de Projeto
                                                   ca          o
                        Design Patterns
                                            Contexto
                       Aplica¸˜o Pr´tica
                             ca      a
                                            Advento
                               Conclus˜oa
                             Referˆncias
                                   e


Design Patterns



  Ao se padronizar todo esse processo de desenvolvimento,
  permite-se que:
      conceitos adotados e desenvolvidos por programadores mais
      experientes sejam transmitidos de forma clara para os
      programadores novos no projeto ou inexperientes;
      haja facilidade na comunica¸˜o entre a equipe de
                                 ca
      desenvolvimento.




                                                                                5 / 27
Introdu¸˜o
                                        ca
                   Funcamenta¸˜o Te´rica
                              ca      o
                                             Introdu¸˜o aos Padr˜es de Projeto
                                                    ca          o
                         Design Patterns
                                             Contexto
                        Aplica¸˜o Pr´tica
                              ca      a
                                             Advento
                                Conclus˜oa
                              Referˆncias
                                    e


Conceito de Patterns


  Todo o conceito de Padr˜es de Projeto foi criado pelo engenheiro
                           o
  civil Cristopher Alexander. Em A Pattern Language: Towns,
  Buildings, Constructions, Alexander afirmou
      Um pattern descreve um problema que ocorre com
      frequˆncia em nosso ambiente, e ent˜o explica a essˆncia
           e                               a              e
      da solu¸˜o para este problema, de forma que tal solu¸˜o
             ca                                            ca
      possa ser utilizada milh˜es de outras vezes, sem ao
                              o
      menos repeti-la uma unica vez.
                           ´




                                                                                 6 / 27
Introdu¸˜o
                                        ca
                   Funcamenta¸˜o Te´rica
                              ca      o
                                             Introdu¸˜o aos Padr˜es de Projeto
                                                    ca          o
                         Design Patterns
                                             Contexto
                        Aplica¸˜o Pr´tica
                              ca      a
                                             Advento
                                Conclus˜oa
                              Referˆncias
                                    e


Conceito de Patterns




  Ao dizer isto Cristopher estava se referindo a padr˜es para
                                                     o
  constru¸˜es, como pr´dios, pontes, dentre outros. Apesar disso,
         co            e
  essas palavras podem ser perfeitamente utilizadas no contexto de
  engenharia de software (Oglio, 2007).




                                                                                 7 / 27
Introdu¸˜o
                                         ca
                    Funcamenta¸˜o Te´rica
                               ca      o
                          Design Patterns     Orienta¸˜o a Objetos
                                                     ca
                         Aplica¸˜o Pr´tica
                               ca      a      Reusabilidade de Software
                                 Conclus˜oa
                               Referˆncias
                                     e


Conte´do
     u
  1   Introdu¸˜o
              ca
         Introdu¸˜o aos Padr˜es de Projeto
                 ca         o
         Contexto
         Advento
  2   Funcamenta¸˜o Te´rica
                    ca   o
         Orienta¸˜o a Objetos
                 ca
         Reusabilidade de Software
  3   Design Patterns
         Introdu¸˜o
                 ca
         Conceito
         Motiva¸˜o
                ca
  4   Aplica¸˜o Pr´tica
             ca      a
         Patterns
  5   Conclus˜o
              a
         Conclus˜es Finais
                 o                                                        8 / 27
Introdu¸˜o
                                      ca
                 Funcamenta¸˜o Te´rica
                            ca      o
                       Design Patterns     Orienta¸˜o a Objetos
                                                  ca
                      Aplica¸˜o Pr´tica
                            ca      a      Reusabilidade de Software
                              Conclus˜oa
                            Referˆncias
                                  e




Entender sistemas orientado a objetos ´ a arte de combinar o
                                       e
concreto (objetos e suas intera¸˜es) com o abstrato (classes e seus
                               co
relacionamentos) (Lange & Nakamura, 1995).O concreto descreve
o que o n´s podemos ver de uma execu¸˜o do sistema e o abstrato
         o                              ca
descreve o que n´s podemos esperar de um sistema.
                o




                                                                       9 / 27
Introdu¸˜o
                                      ca
                 Funcamenta¸˜o Te´rica
                            ca      o
                       Design Patterns     Orienta¸˜o a Objetos
                                                  ca
                      Aplica¸˜o Pr´tica
                            ca      a      Reusabilidade de Software
                              Conclus˜oa
                            Referˆncias
                                  e


Introdu¸˜o
       ca


     Com a evolu¸˜o de conceitos como orienta¸˜o a objetos os
                  ca                            ca
     projetistas mais experientes perceberam que determinadas
     solu¸˜es de projeto poderiam ser aplicadas em diferentes
         co
     casos, logo, eles reusaram essas solu¸˜es.
                                          co
     A reusabilidade n˜o ´ obtida pelo simples fato de
                      a e
     desenvolvermos softwares orientados a objetos.
     Segundo Gamma et al. (1995) projetar software orientados a
     objeto ´ dif´ mas projetar software reutiliz´vel orientado a
            e ıcil,                              a
     objetos ´ ainda mais complicado.
             e



                                                                       10 / 27
Introdu¸˜o
                                      ca
                 Funcamenta¸˜o Te´rica
                            ca      o
                       Design Patterns     Orienta¸˜o a Objetos
                                                  ca
                      Aplica¸˜o Pr´tica
                            ca      a      Reusabilidade de Software
                              Conclus˜oa
                            Referˆncias
                                  e


Objetivo


     A reusabilidade pode ser considerada algo que ir´ prover
                                                     a
     “informa¸˜es ou servi¸os” de programas que podem ser
             co           c
     usados em m´ltiplas aplica¸˜es, tornando-se resposta
                  u            co
     importante aos problemas de produtividade de software.
     Padr˜es de projeto devem ajudar a melhorar a reusabilidade.
         o
     Aumentar a reusabilidade de software ´ considerada como
                                           e
     pr´-condi¸˜o t´cnica crucial para melhorar a qualidade geral
       e      ca e
     do software e reduzir os custos de manuten¸˜o e
                                                ca
     produ¸˜o (Pree, 1995).
           ca



                                                                       11 / 27
Introdu¸˜o
                                      ca
                 Funcamenta¸˜o Te´rica
                            ca      o
                       Design Patterns     Orienta¸˜o a Objetos
                                                  ca
                      Aplica¸˜o Pr´tica
                            ca      a      Reusabilidade de Software
                              Conclus˜oa
                            Referˆncias
                                  e


Motiva¸˜o
      ca

     A reutiliza¸˜o de software se torna uma barreira para muitos
                 ca
     programadores, pois em muitos casos os benef´  ıcios s˜o
                                                           a
     percebidos a longo prazo fazendo com que a equipe fique
     desmotivada em desenvolver solu¸˜es reutiliz´veis quando, em
                                        co        a
     geral, a linha de tempo para o desenvolvimento de um
     software ´ curta. Existe tamb´m a barreira t´cnica, pois
               e                   e              e
     muitos programadores podem n˜o entender o que reusar ou
                                      a
     como reusar.
     Para se criar um projeto de software (padronizado) onde se
     justifique o uso das melhores pr´ticas faz-se necess´rio um
                                      a                  a
     conhecimento acurado de orienta¸˜o a objetos e design
                                        ca
     patterns como tamb´m motiva¸˜o e vis˜o, a longo prazo, da
                          e          ca      a
     equipe.
                                                                       12 / 27
Introdu¸˜o
                                         ca
                    Funcamenta¸˜o Te´rica
                               ca      o
                                              Introdu¸˜o
                                                     ca
                          Design Patterns
                                              Conceito
                         Aplica¸˜o Pr´tica
                               ca      a
                                              Motiva¸˜o
                                                     ca
                                 Conclus˜oa
                               Referˆncias
                                     e


Conte´do
     u
  1   Introdu¸˜o
              ca
         Introdu¸˜o aos Padr˜es de Projeto
                 ca         o
         Contexto
         Advento
  2   Funcamenta¸˜o Te´rica
                    ca   o
         Orienta¸˜o a Objetos
                 ca
         Reusabilidade de Software
  3   Design Patterns
         Introdu¸˜o
                 ca
         Conceito
         Motiva¸˜o
                ca
  4   Aplica¸˜o Pr´tica
             ca      a
         Patterns
  5   Conclus˜o
              a
         Conclus˜es Finais
                 o                                         13 / 27
Introdu¸˜o
                                      ca
                 Funcamenta¸˜o Te´rica
                            ca      o
                                           Introdu¸˜o
                                                  ca
                       Design Patterns
                                           Conceito
                      Aplica¸˜o Pr´tica
                            ca      a
                                           Motiva¸˜o
                                                  ca
                              Conclus˜oa
                            Referˆncias
                                  e


Introdu¸˜o
       ca

     Design patterns vˆm ganhando grande aceita¸˜o como uma
                        e                         ca
     ferramenta para modelagem orientada a objetos (Agostini et
     al., 2007), pois existem problemas de software que, embora
     estejam situados em contextos diferentes, podem ser
     solucionados de maneiras semelhantes.
     Fazendo com que problemas antigos, que j´ foram vivenciados
                                               a
     pelos programadores mais experientes, ser˜o catalogados e
                                              a
     padronizados para evitar futuros problemas.
     Para Agostini et al. (2007), os patterns s˜o estruturas classe
                                               a
     que foram usadas por muitos anos e foram estabelecidos como
     solu¸˜es eficientes para muitos problemas.
         co

                                                                      14 / 27
Introdu¸˜o
                                      ca
                 Funcamenta¸˜o Te´rica
                            ca      o
                                           Introdu¸˜o
                                                  ca
                       Design Patterns
                                           Conceito
                      Aplica¸˜o Pr´tica
                            ca      a
                                           Motiva¸˜o
                                                  ca
                              Conclus˜oa
                            Referˆncias
                                  e


Origem

     Percebendo que todas as constru¸˜es de edif´
                                     co           ıcios possu´
                                                             ıam
     algumas caracter´
                     ısticas em comum, o engenheiro civil
     Cristopher Alexander resolveu catalogar estas solu¸˜es em seu
                                                        co
     livro The Timeless Way of Building.
     Na ´rea de engenharia de software essas pr´ticas foram
        a                                      a
     adaptadas para a constru¸˜o de sistemas de informa¸˜o.
                             ca                          ca
     Liderada por Erich Gamma a GoF (Gang of Four ) - Erich
     Gamma, Richard Helm, Ralph Johnson e John Vlissides
     publicaram o livro Design Patterns: Elements of Reusable
     Object-Oriented Software. O livro continha a descri¸˜o de 23
                                                        ca
     padr˜es para problemas que eram comumente encontrados
         o
     durante o desenvolvimento de software.
                                                                     15 / 27
Introdu¸˜o
                                      ca
                 Funcamenta¸˜o Te´rica
                            ca      o
                                           Introdu¸˜o
                                                  ca
                       Design Patterns
                                           Conceito
                      Aplica¸˜o Pr´tica
                            ca      a
                                           Motiva¸˜o
                                                  ca
                              Conclus˜oa
                            Referˆncias
                                  e


Conceito
     Um padr˜o pode ser definido como sendo um esbo¸o, em vez
             a                                          c
     da implementa¸˜o espec´
                   ca        ıfica, ou seja, um modelo a ser
     seguido durante a constru¸˜o do software (Coad et al., 1995).
                               ca
     As melhores pr´ticas de projetos antigos s˜o executadas
                   a                           a
     visando que o esfor¸o para evitar retrabalho seja m´
                         c                              ınimo.
     Com essas experiˆncias j´ testadas e comprovadamente ideais,
                      e      a
     tem-se um vocabul´rio comum que permitir´ uma melhor
                         a                       a
     comunica¸˜o entre a equipe.
              ca
     Design Patterns s˜o metodologias de constru¸˜o de software
                       a                           ca
     comprovadamente funcionais que garantem legibilidade,
     manutenabilidade e reutiliza¸˜o de c´digo-fonte no
                                 ca       o
     desenvolvimento de alguma aplica¸˜o computacional
                                       ca
     (Daniel Welfer, 2005).
                                                                     16 / 27
Introdu¸˜o
                                      ca
                 Funcamenta¸˜o Te´rica
                            ca      o
                                           Introdu¸˜o
                                                  ca
                       Design Patterns
                                           Conceito
                      Aplica¸˜o Pr´tica
                            ca      a
                                           Motiva¸˜o
                                                  ca
                              Conclus˜oa
                            Referˆncias
                                  e


Conceito
     Um padr˜o pode ser definido como sendo um esbo¸o, em vez
             a                                          c
     da implementa¸˜o espec´
                   ca        ıfica, ou seja, um modelo a ser
     seguido durante a constru¸˜o do software (Coad et al., 1995).
                               ca
     As melhores pr´ticas de projetos antigos s˜o executadas
                   a                           a
     visando que o esfor¸o para evitar retrabalho seja m´
                         c                              ınimo.
     Com essas experiˆncias j´ testadas e comprovadamente ideais,
                      e      a
     tem-se um vocabul´rio comum que permitir´ uma melhor
                         a                       a
     comunica¸˜o entre a equipe.
              ca
     Design Patterns s˜o metodologias de constru¸˜o de software
                       a                           ca
     comprovadamente funcionais que garantem legibilidade,
     manutenabilidade e reutiliza¸˜o de c´digo-fonte no
                                 ca       o
     desenvolvimento de alguma aplica¸˜o computacional
                                       ca
     (Daniel Welfer, 2005).
                                                                     16 / 27
Introdu¸˜o
                                      ca
                 Funcamenta¸˜o Te´rica
                            ca      o
                                           Introdu¸˜o
                                                  ca
                       Design Patterns
                                           Conceito
                      Aplica¸˜o Pr´tica
                            ca      a
                                           Motiva¸˜o
                                                  ca
                              Conclus˜oa
                            Referˆncias
                                  e


Conceito
     Um padr˜o pode ser definido como sendo um esbo¸o, em vez
             a                                          c
     da implementa¸˜o espec´
                   ca        ıfica, ou seja, um modelo a ser
     seguido durante a constru¸˜o do software (Coad et al., 1995).
                               ca
     As melhores pr´ticas de projetos antigos s˜o executadas
                   a                           a
     visando que o esfor¸o para evitar retrabalho seja m´
                         c                              ınimo.
     Com essas experiˆncias j´ testadas e comprovadamente ideais,
                      e      a
     tem-se um vocabul´rio comum que permitir´ uma melhor
                         a                       a
     comunica¸˜o entre a equipe.
              ca
     Design Patterns s˜o metodologias de constru¸˜o de software
                       a                           ca
     comprovadamente funcionais que garantem legibilidade,
     manutenabilidade e reutiliza¸˜o de c´digo-fonte no
                                 ca       o
     desenvolvimento de alguma aplica¸˜o computacional
                                       ca
     (Daniel Welfer, 2005).
                                                                     16 / 27
Introdu¸˜o
                                      ca
                 Funcamenta¸˜o Te´rica
                            ca      o
                                           Introdu¸˜o
                                                  ca
                       Design Patterns
                                           Conceito
                      Aplica¸˜o Pr´tica
                            ca      a
                                           Motiva¸˜o
                                                  ca
                              Conclus˜oa
                            Referˆncias
                                  e


Conceito
     Um padr˜o pode ser definido como sendo um esbo¸o, em vez
             a                                          c
     da implementa¸˜o espec´
                   ca        ıfica, ou seja, um modelo a ser
     seguido durante a constru¸˜o do software (Coad et al., 1995).
                               ca
     As melhores pr´ticas de projetos antigos s˜o executadas
                   a                           a
     visando que o esfor¸o para evitar retrabalho seja m´
                         c                              ınimo.
     Com essas experiˆncias j´ testadas e comprovadamente ideais,
                      e      a
     tem-se um vocabul´rio comum que permitir´ uma melhor
                         a                       a
     comunica¸˜o entre a equipe.
              ca
     Design Patterns s˜o metodologias de constru¸˜o de software
                       a                           ca
     comprovadamente funcionais que garantem legibilidade,
     manutenabilidade e reutiliza¸˜o de c´digo-fonte no
                                 ca       o
     desenvolvimento de alguma aplica¸˜o computacional
                                       ca
     (Daniel Welfer, 2005).
                                                                     16 / 27
Introdu¸˜o
                                       ca
                  Funcamenta¸˜o Te´rica
                             ca      o
                                            Introdu¸˜o
                                                   ca
                        Design Patterns
                                            Conceito
                       Aplica¸˜o Pr´tica
                             ca      a
                                            Motiva¸˜o
                                                   ca
                               Conclus˜oa
                             Referˆncias
                                   e


Classifica¸˜o
         ca


  Os padr˜es de projeto s˜o classificados de v´rias maneiras, por´m
          o              a                   a                  e
  o mais comum ´ classific´-los de acordo com os tipos de problemas
                  e       a
  que eles resolvem. De acordo com esse crit´rio, os padr˜es podem
                                            e            o
  ser:
      Cria¸˜o Resolvem os problemas da cria¸˜o de objetos.
          ca                               ca
   Estruturais Lidam com os problemas de relacionamentos entre
               objetos.
  Comportamentais Lidam com os problemas de atribui¸˜o de
                                                   ca
             responsabilidades aos objetos.



                                                                     17 / 27
Introdu¸˜o
                                       ca
                  Funcamenta¸˜o Te´rica
                             ca      o
                                            Introdu¸˜o
                                                   ca
                        Design Patterns
                                            Conceito
                       Aplica¸˜o Pr´tica
                             ca      a
                                            Motiva¸˜o
                                                   ca
                               Conclus˜oa
                             Referˆncias
                                   e


Motiva¸˜o
      ca
  Design patterns tˆm v´rios usos no processo de desenvolvimento
                   e    a
  de software orientado a objetos (Schneide, 1999):
      formam um vocabul´rio comum que permite uma melhor
                        a
      comunica¸˜o entre os desenvolvedores, uma documenta¸˜o
               ca                                          ca
      mais completa e uma melhor explora¸˜o das alternativas de
                                         ca
      projeto;
      constituem uma base de experiˆncias reutiliz´veis para a
                                   e              a
      constru¸˜o de software;
             ca
      reduzem o tempo de aprendizado de uma determinada
      biblioteca de classes;
      quanto mais cedo s˜o usados, menor ser´ o retrabalho em
                        a                   a
      etapas mais avan¸adas do projeto.
                      c
                                                                   18 / 27
Introdu¸˜o
                                       ca
                  Funcamenta¸˜o Te´rica
                             ca      o
                                            Introdu¸˜o
                                                   ca
                        Design Patterns
                                            Conceito
                       Aplica¸˜o Pr´tica
                             ca      a
                                            Motiva¸˜o
                                                   ca
                               Conclus˜oa
                             Referˆncias
                                   e


Motiva¸˜o
      ca
  Design patterns tˆm v´rios usos no processo de desenvolvimento
                   e    a
  de software orientado a objetos (Schneide, 1999):
      formam um vocabul´rio comum que permite uma melhor
                        a
      comunica¸˜o entre os desenvolvedores, uma documenta¸˜o
               ca                                          ca
      mais completa e uma melhor explora¸˜o das alternativas de
                                         ca
      projeto;
      constituem uma base de experiˆncias reutiliz´veis para a
                                   e              a
      constru¸˜o de software;
             ca
      reduzem o tempo de aprendizado de uma determinada
      biblioteca de classes;
      quanto mais cedo s˜o usados, menor ser´ o retrabalho em
                        a                   a
      etapas mais avan¸adas do projeto.
                      c
                                                                   18 / 27
Introdu¸˜o
                                       ca
                  Funcamenta¸˜o Te´rica
                             ca      o
                                            Introdu¸˜o
                                                   ca
                        Design Patterns
                                            Conceito
                       Aplica¸˜o Pr´tica
                             ca      a
                                            Motiva¸˜o
                                                   ca
                               Conclus˜oa
                             Referˆncias
                                   e


Motiva¸˜o
      ca
  Design patterns tˆm v´rios usos no processo de desenvolvimento
                   e    a
  de software orientado a objetos (Schneide, 1999):
      formam um vocabul´rio comum que permite uma melhor
                        a
      comunica¸˜o entre os desenvolvedores, uma documenta¸˜o
               ca                                          ca
      mais completa e uma melhor explora¸˜o das alternativas de
                                         ca
      projeto;
      constituem uma base de experiˆncias reutiliz´veis para a
                                   e              a
      constru¸˜o de software;
             ca
      reduzem o tempo de aprendizado de uma determinada
      biblioteca de classes;
      quanto mais cedo s˜o usados, menor ser´ o retrabalho em
                        a                   a
      etapas mais avan¸adas do projeto.
                      c
                                                                   18 / 27
Introdu¸˜o
                                       ca
                  Funcamenta¸˜o Te´rica
                             ca      o
                                            Introdu¸˜o
                                                   ca
                        Design Patterns
                                            Conceito
                       Aplica¸˜o Pr´tica
                             ca      a
                                            Motiva¸˜o
                                                   ca
                               Conclus˜oa
                             Referˆncias
                                   e


Motiva¸˜o
      ca
  Design patterns tˆm v´rios usos no processo de desenvolvimento
                   e    a
  de software orientado a objetos (Schneide, 1999):
      formam um vocabul´rio comum que permite uma melhor
                        a
      comunica¸˜o entre os desenvolvedores, uma documenta¸˜o
               ca                                          ca
      mais completa e uma melhor explora¸˜o das alternativas de
                                         ca
      projeto;
      constituem uma base de experiˆncias reutiliz´veis para a
                                   e              a
      constru¸˜o de software;
             ca
      reduzem o tempo de aprendizado de uma determinada
      biblioteca de classes;
      quanto mais cedo s˜o usados, menor ser´ o retrabalho em
                        a                   a
      etapas mais avan¸adas do projeto.
                      c
                                                                   18 / 27
Introdu¸˜o
                                         ca
                    Funcamenta¸˜o Te´rica
                               ca      o
                          Design Patterns
                                              Patterns
                         Aplica¸˜o Pr´tica
                               ca      a
                                 Conclus˜oa
                               Referˆncias
                                     e


Conte´do
     u
  1   Introdu¸˜o
              ca
         Introdu¸˜o aos Padr˜es de Projeto
                 ca         o
         Contexto
         Advento
  2   Funcamenta¸˜o Te´rica
                    ca   o
         Orienta¸˜o a Objetos
                 ca
         Reusabilidade de Software
  3   Design Patterns
         Introdu¸˜o
                 ca
         Conceito
         Motiva¸˜o
                ca
  4   Aplica¸˜o Pr´tica
             ca      a
         Patterns
  5   Conclus˜o
              a
         Conclus˜es Finais
                 o                                       19 / 27
Introdu¸˜o
                                        ca
                   Funcamenta¸˜o Te´rica
                              ca      o
                         Design Patterns
                                             Patterns
                        Aplica¸˜o Pr´tica
                              ca      a
                                Conclus˜oa
                              Referˆncias
                                    e


Singleton




  O pattern Singleton est´ entre um dos mais simples patterns a ser
                          a
  implementado, pois seu objetivo ´ apenas garantir que seja
                                  e
  mantida somente instˆncia de um determinado objeto. Ou seja, a
                        a
  pr´pria classe garante que nenhuma outra instˆncia seja criada,
    o                                          a
  bem como oferece uma maneira de acessar sua pr´pria instˆncia.
                                                   o         a




                                                                      20 / 27
Introdu¸˜o
                                        ca
                   Funcamenta¸˜o Te´rica
                              ca      o
                         Design Patterns
                                             Patterns
                        Aplica¸˜o Pr´tica
                              ca      a
                                Conclus˜oa
                              Referˆncias
                                    e


Factory



  Existem certas situa¸˜es em aplica¸˜es que, seja por uma
                      co             co
  interven¸˜o humana ou por uma implementa¸˜o mais complexa, o
          ca                                    ca
  programador n˜o saber´ como o programa ir´ se comportar diante
                 a       a                     a
  de uma determinada situa¸˜o. Com isso, o programador pode n˜o
                            ca                                      a
  saber que classe dever´ ser instanciada em determinado momento
                        a
  de uma aplica¸˜o. Para facilitar esse tipo de situa¸˜o foi criado o
                ca                                   ca
  pattern Factory.




                                                                        21 / 27
Introdu¸˜o
                                       ca
                  Funcamenta¸˜o Te´rica
                             ca      o
                        Design Patterns
                                            Patterns
                       Aplica¸˜o Pr´tica
                             ca      a
                               Conclus˜oa
                             Referˆncias
                                   e


Fa¸ade
  c
  O objetivo deste pattern ´ fornecer uma interface unificada para
                           e
  um conjunto de interfaces em um subsistema (Gamma et al.,
  1995). Ou seja, o pattern Fa¸ade ´ o isolamento entre camadas de
                               c    e
  um sistema, permitindo uma interface mais simples de
  comunica¸˜o entre essas camadas, como tamb´m um acoplamento
           ca                                   e
  baixo.




                                                                     22 / 27
Introdu¸˜o
                                         ca
                    Funcamenta¸˜o Te´rica
                               ca      o
                          Design Patterns
                                              Conclus˜es Finais
                                                     o
                         Aplica¸˜o Pr´tica
                               ca      a
                                 Conclus˜oa
                               Referˆncias
                                     e


Conte´do
     u
  1   Introdu¸˜o
              ca
         Introdu¸˜o aos Padr˜es de Projeto
                 ca         o
         Contexto
         Advento
  2   Funcamenta¸˜o Te´rica
                    ca   o
         Orienta¸˜o a Objetos
                 ca
         Reusabilidade de Software
  3   Design Patterns
         Introdu¸˜o
                 ca
         Conceito
         Motiva¸˜o
                ca
  4   Aplica¸˜o Pr´tica
             ca      a
         Patterns
  5   Conclus˜o
              a
         Conclus˜es Finais
                 o                                                23 / 27
Introdu¸˜o
                                       ca
                  Funcamenta¸˜o Te´rica
                             ca      o
                        Design Patterns
                                            Conclus˜es Finais
                                                   o
                       Aplica¸˜o Pr´tica
                             ca      a
                               Conclus˜oa
                             Referˆncias
                                   e


Singleton




  Design Patterns s˜o metodologias de constru¸˜o de software
                    a                          ca
  comprovadamente funcionais que garantem legibilidade,
  manutenabilidade e reutiliza¸˜o de c´digo-fonte no
                              ca      o
  desenvolvimento de alguma aplica¸˜o computacional
                                   ca
  (Daniel Welfer, 2005).




                                                                24 / 27
Introdu¸˜o
                                        ca
                   Funcamenta¸˜o Te´rica
                              ca      o
                         Design Patterns
                        Aplica¸˜o Pr´tica
                              ca      a
                                Conclus˜oa
                              Referˆncias
                                    e


Referˆncias I
     e


  Agostini, M. N., Decker, I. C. & e Silva, A. S. (2007), ‘A new
    approach for the design of electric power system software using
    object oriented modeling.’, International Journal of Electrical
    Power & Energy Systems 29, 505–513.
  Coad, P., North, D. & Mayfield, M. (1995), Object models:
    strategies, patterns, applications, Yourdon Press, Upper Saddle
    River, NJ, USA.
  Daniel Welfer, M. C. d. (2005), ‘Coopera¸˜o entre padr˜es de
                                          ca            o
    projeto na resolu¸˜o de problemas de processamento de imagens
                     ca
    baseados em filtros de convolu¸˜o’.
                                   ca


                                                                      25 / 27
Introdu¸˜o
                                        ca
                   Funcamenta¸˜o Te´rica
                              ca      o
                         Design Patterns
                        Aplica¸˜o Pr´tica
                              ca      a
                                Conclus˜oa
                              Referˆncias
                                    e


Referˆncias II
     e

  Gamma, E., Helm, R., Johnson, R. & Vlissides, J. (1995), Design
    Patterns Elements of Reusable Object-Oriented Software,
    Addison-Wesley.
  Gerber, L. D. (1999), Uma linguagem de padr˜es para o
                                              o
    desenvolvimento de sistemas de apoio ` decis˜o baseado em
                                            a   a
    frameworks, Master’s thesis, Pontif´ Universidade Cat´lica do
                                       ıcia               o
    Rio Grande do Sul.
  Lange, D. B. & Nakamura, Y. (1995), ‘Interactive visualization of
    design patterns can help in framework understanding’, Sigplan
    Notices pp. 342–357.
  Meyer, B. (1997), Object-Oriented Software Construction, Prentice
   Hall.

                                                                      26 / 27
Introdu¸˜o
                                       ca
                  Funcamenta¸˜o Te´rica
                             ca      o
                        Design Patterns
                       Aplica¸˜o Pr´tica
                             ca      a
                               Conclus˜oa
                             Referˆncias
                                   e


Referˆncias III
     e


  Oglio, P. D. (2007), PHP - Programando com Orienta¸˜o a
                                                    ca
    Objetos, Novatec.
  Pree, W. (1995), Technology of object-oriented languages and
    systems, in ‘TOOLS’.
  Schneide, R. L. (1999), ‘Design patterns’. URL
    http://dcc.ufrj.br/~schneide/PSI_981/gp_6/design_patterns
    ´
    Ultimo acesso em 02/06/2009.




                                                                 27 / 27

Mais conteúdo relacionado

Semelhante a Design Pattern e a reusabilidade de software

Apresentação Institucional Teclógica
Apresentação Institucional TeclógicaApresentação Institucional Teclógica
Apresentação Institucional TeclógicaTeclógica
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de softwareAdriano Tavares
 
Ambiente de Desenvolvimento de Sistemas de ILP - Estado da Arte
Ambiente de Desenvolvimento de Sistemas de ILP - Estado da ArteAmbiente de Desenvolvimento de Sistemas de ILP - Estado da Arte
Ambiente de Desenvolvimento de Sistemas de ILP - Estado da Artejcazevedo
 
GT-Digital Preservation - Camada de Interface
GT-Digital Preservation - Camada de InterfaceGT-Digital Preservation - Camada de Interface
GT-Digital Preservation - Camada de InterfaceRoberto Beraldo Chaiben
 
Metodologia Sim+
Metodologia Sim+Metodologia Sim+
Metodologia Sim+Conectt
 
Gerenciamento Ágil de Projetos de Business Intelligence Um Relato de Experiên...
Gerenciamento Ágil de Projetos de Business Intelligence Um Relato de Experiên...Gerenciamento Ágil de Projetos de Business Intelligence Um Relato de Experiên...
Gerenciamento Ágil de Projetos de Business Intelligence Um Relato de Experiên...Mauricio Cesar Santos da Purificação
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em softwareVictor Hugo
 
Engenharia de Software - Wikipedia
Engenharia de Software - WikipediaEngenharia de Software - Wikipedia
Engenharia de Software - WikipediaRobson Silva Espig
 
Segurança no Desenvolvimento de Software
Segurança no Desenvolvimento de SoftwareSegurança no Desenvolvimento de Software
Segurança no Desenvolvimento de SoftwareMarcelo Fleury
 
Soa Next Steps/Passos de Adoção SOA
Soa Next Steps/Passos de Adoção SOASoa Next Steps/Passos de Adoção SOA
Soa Next Steps/Passos de Adoção SOASensedia
 
Master Thesis defense presentation
Master Thesis defense presentationMaster Thesis defense presentation
Master Thesis defense presentationj_cerejo
 
Protótipos em Papel
Protótipos em PapelProtótipos em Papel
Protótipos em Papelelliando dias
 
Renan st matsushita-2010
Renan st matsushita-2010Renan st matsushita-2010
Renan st matsushita-2010Janiel Medeiros
 

Semelhante a Design Pattern e a reusabilidade de software (20)

Apresentação Institucional Teclógica
Apresentação Institucional TeclógicaApresentação Institucional Teclógica
Apresentação Institucional Teclógica
 
M2TI - EAIC
M2TI - EAICM2TI - EAIC
M2TI - EAIC
 
Apresentacao PBL Site
Apresentacao PBL SiteApresentacao PBL Site
Apresentacao PBL Site
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de software
 
Ambiente de Desenvolvimento de Sistemas de ILP - Estado da Arte
Ambiente de Desenvolvimento de Sistemas de ILP - Estado da ArteAmbiente de Desenvolvimento de Sistemas de ILP - Estado da Arte
Ambiente de Desenvolvimento de Sistemas de ILP - Estado da Arte
 
GT-Digital Preservation - Camada de Interface
GT-Digital Preservation - Camada de InterfaceGT-Digital Preservation - Camada de Interface
GT-Digital Preservation - Camada de Interface
 
Es 09
Es 09Es 09
Es 09
 
Gerencia de Projetos
Gerencia de ProjetosGerencia de Projetos
Gerencia de Projetos
 
Metodologia Sim+
Metodologia Sim+Metodologia Sim+
Metodologia Sim+
 
Gerenciamento Ágil de Projetos de Business Intelligence Um Relato de Experiên...
Gerenciamento Ágil de Projetos de Business Intelligence Um Relato de Experiên...Gerenciamento Ágil de Projetos de Business Intelligence Um Relato de Experiên...
Gerenciamento Ágil de Projetos de Business Intelligence Um Relato de Experiên...
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em software
 
Engenharia de Software - Wikipedia
Engenharia de Software - WikipediaEngenharia de Software - Wikipedia
Engenharia de Software - Wikipedia
 
Segurança no Desenvolvimento de Software
Segurança no Desenvolvimento de SoftwareSegurança no Desenvolvimento de Software
Segurança no Desenvolvimento de Software
 
Soa Next Steps/Passos de Adoção SOA
Soa Next Steps/Passos de Adoção SOASoa Next Steps/Passos de Adoção SOA
Soa Next Steps/Passos de Adoção SOA
 
Governança de ti.pptx
Governança de ti.pptxGovernança de ti.pptx
Governança de ti.pptx
 
IBM Rational Unified Process
IBM Rational Unified ProcessIBM Rational Unified Process
IBM Rational Unified Process
 
Master Thesis defense presentation
Master Thesis defense presentationMaster Thesis defense presentation
Master Thesis defense presentation
 
Protótipos em Papel
Protótipos em PapelProtótipos em Papel
Protótipos em Papel
 
Renan st matsushita-2010
Renan st matsushita-2010Renan st matsushita-2010
Renan st matsushita-2010
 
Alessandra henriquesferreiravc
Alessandra henriquesferreiravcAlessandra henriquesferreiravc
Alessandra henriquesferreiravc
 

Design Pattern e a reusabilidade de software

  • 1. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Aplica¸˜o Pr´tica ca a Conclus˜oa Referˆncias e Design Pattern e a Reusabilidade de Software Trabalho de Conclus˜o de Curso a Klevison de Barros Matias Jos´ Ten´rio C. Costa e o Ciˆncia da Computa¸˜o e ca Faculdade Alagoana de Administra¸˜o ca Setembro de 2009 1 / 27
  • 2. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o aos Padr˜es de Projeto ca o Design Patterns Contexto Aplica¸˜o Pr´tica ca a Advento Conclus˜oa Referˆncias e Conte´do u 1 Introdu¸˜o ca Introdu¸˜o aos Padr˜es de Projeto ca o Contexto Advento 2 Funcamenta¸˜o Te´rica ca o Orienta¸˜o a Objetos ca Reusabilidade de Software 3 Design Patterns Introdu¸˜o ca Conceito Motiva¸˜o ca 4 Aplica¸˜o Pr´tica ca a Patterns 5 Conclus˜o a Conclus˜es Finais o 2 / 27
  • 3. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o aos Padr˜es de Projeto ca o Design Patterns Contexto Aplica¸˜o Pr´tica ca a Advento Conclus˜oa Referˆncias e Tema O presente trabalho visa abordar os principais conceitos relativos a reusabilidade e Padr˜es de Projeto de Software, os quais descrevem o poss´ıveis solu¸˜es de problemas comuns encontrados em projetos co orientados a objetos (Meyer, 1997). 3 / 27
  • 4. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o aos Padr˜es de Projeto ca o Design Patterns Contexto Aplica¸˜o Pr´tica ca a Advento Conclus˜oa Referˆncias e Reusabilidade A complexidade de desenvolvimento de software ´ cada vez mais e crescente e o processo de desenvolvimento ´ ainda muito baseado e em empirismo e sujeito a erros (Gerber, 1999). Para diminuir essa complexidade, o conceito de padroniza¸˜o surgiu para atender a ca reutiliza¸˜o (no que tange ` produtividade). ca a 4 / 27
  • 5. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o aos Padr˜es de Projeto ca o Design Patterns Contexto Aplica¸˜o Pr´tica ca a Advento Conclus˜oa Referˆncias e Design Patterns Ao se padronizar todo esse processo de desenvolvimento, permite-se que: conceitos adotados e desenvolvidos por programadores mais experientes sejam transmitidos de forma clara para os programadores novos no projeto ou inexperientes; haja facilidade na comunica¸˜o entre a equipe de ca desenvolvimento. 5 / 27
  • 6. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o aos Padr˜es de Projeto ca o Design Patterns Contexto Aplica¸˜o Pr´tica ca a Advento Conclus˜oa Referˆncias e Conceito de Patterns Todo o conceito de Padr˜es de Projeto foi criado pelo engenheiro o civil Cristopher Alexander. Em A Pattern Language: Towns, Buildings, Constructions, Alexander afirmou Um pattern descreve um problema que ocorre com frequˆncia em nosso ambiente, e ent˜o explica a essˆncia e a e da solu¸˜o para este problema, de forma que tal solu¸˜o ca ca possa ser utilizada milh˜es de outras vezes, sem ao o menos repeti-la uma unica vez. ´ 6 / 27
  • 7. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o aos Padr˜es de Projeto ca o Design Patterns Contexto Aplica¸˜o Pr´tica ca a Advento Conclus˜oa Referˆncias e Conceito de Patterns Ao dizer isto Cristopher estava se referindo a padr˜es para o constru¸˜es, como pr´dios, pontes, dentre outros. Apesar disso, co e essas palavras podem ser perfeitamente utilizadas no contexto de engenharia de software (Oglio, 2007). 7 / 27
  • 8. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Orienta¸˜o a Objetos ca Aplica¸˜o Pr´tica ca a Reusabilidade de Software Conclus˜oa Referˆncias e Conte´do u 1 Introdu¸˜o ca Introdu¸˜o aos Padr˜es de Projeto ca o Contexto Advento 2 Funcamenta¸˜o Te´rica ca o Orienta¸˜o a Objetos ca Reusabilidade de Software 3 Design Patterns Introdu¸˜o ca Conceito Motiva¸˜o ca 4 Aplica¸˜o Pr´tica ca a Patterns 5 Conclus˜o a Conclus˜es Finais o 8 / 27
  • 9. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Orienta¸˜o a Objetos ca Aplica¸˜o Pr´tica ca a Reusabilidade de Software Conclus˜oa Referˆncias e Entender sistemas orientado a objetos ´ a arte de combinar o e concreto (objetos e suas intera¸˜es) com o abstrato (classes e seus co relacionamentos) (Lange & Nakamura, 1995).O concreto descreve o que o n´s podemos ver de uma execu¸˜o do sistema e o abstrato o ca descreve o que n´s podemos esperar de um sistema. o 9 / 27
  • 10. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Orienta¸˜o a Objetos ca Aplica¸˜o Pr´tica ca a Reusabilidade de Software Conclus˜oa Referˆncias e Introdu¸˜o ca Com a evolu¸˜o de conceitos como orienta¸˜o a objetos os ca ca projetistas mais experientes perceberam que determinadas solu¸˜es de projeto poderiam ser aplicadas em diferentes co casos, logo, eles reusaram essas solu¸˜es. co A reusabilidade n˜o ´ obtida pelo simples fato de a e desenvolvermos softwares orientados a objetos. Segundo Gamma et al. (1995) projetar software orientados a objeto ´ dif´ mas projetar software reutiliz´vel orientado a e ıcil, a objetos ´ ainda mais complicado. e 10 / 27
  • 11. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Orienta¸˜o a Objetos ca Aplica¸˜o Pr´tica ca a Reusabilidade de Software Conclus˜oa Referˆncias e Objetivo A reusabilidade pode ser considerada algo que ir´ prover a “informa¸˜es ou servi¸os” de programas que podem ser co c usados em m´ltiplas aplica¸˜es, tornando-se resposta u co importante aos problemas de produtividade de software. Padr˜es de projeto devem ajudar a melhorar a reusabilidade. o Aumentar a reusabilidade de software ´ considerada como e pr´-condi¸˜o t´cnica crucial para melhorar a qualidade geral e ca e do software e reduzir os custos de manuten¸˜o e ca produ¸˜o (Pree, 1995). ca 11 / 27
  • 12. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Orienta¸˜o a Objetos ca Aplica¸˜o Pr´tica ca a Reusabilidade de Software Conclus˜oa Referˆncias e Motiva¸˜o ca A reutiliza¸˜o de software se torna uma barreira para muitos ca programadores, pois em muitos casos os benef´ ıcios s˜o a percebidos a longo prazo fazendo com que a equipe fique desmotivada em desenvolver solu¸˜es reutiliz´veis quando, em co a geral, a linha de tempo para o desenvolvimento de um software ´ curta. Existe tamb´m a barreira t´cnica, pois e e e muitos programadores podem n˜o entender o que reusar ou a como reusar. Para se criar um projeto de software (padronizado) onde se justifique o uso das melhores pr´ticas faz-se necess´rio um a a conhecimento acurado de orienta¸˜o a objetos e design ca patterns como tamb´m motiva¸˜o e vis˜o, a longo prazo, da e ca a equipe. 12 / 27
  • 13. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Conte´do u 1 Introdu¸˜o ca Introdu¸˜o aos Padr˜es de Projeto ca o Contexto Advento 2 Funcamenta¸˜o Te´rica ca o Orienta¸˜o a Objetos ca Reusabilidade de Software 3 Design Patterns Introdu¸˜o ca Conceito Motiva¸˜o ca 4 Aplica¸˜o Pr´tica ca a Patterns 5 Conclus˜o a Conclus˜es Finais o 13 / 27
  • 14. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Introdu¸˜o ca Design patterns vˆm ganhando grande aceita¸˜o como uma e ca ferramenta para modelagem orientada a objetos (Agostini et al., 2007), pois existem problemas de software que, embora estejam situados em contextos diferentes, podem ser solucionados de maneiras semelhantes. Fazendo com que problemas antigos, que j´ foram vivenciados a pelos programadores mais experientes, ser˜o catalogados e a padronizados para evitar futuros problemas. Para Agostini et al. (2007), os patterns s˜o estruturas classe a que foram usadas por muitos anos e foram estabelecidos como solu¸˜es eficientes para muitos problemas. co 14 / 27
  • 15. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Origem Percebendo que todas as constru¸˜es de edif´ co ıcios possu´ ıam algumas caracter´ ısticas em comum, o engenheiro civil Cristopher Alexander resolveu catalogar estas solu¸˜es em seu co livro The Timeless Way of Building. Na ´rea de engenharia de software essas pr´ticas foram a a adaptadas para a constru¸˜o de sistemas de informa¸˜o. ca ca Liderada por Erich Gamma a GoF (Gang of Four ) - Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides publicaram o livro Design Patterns: Elements of Reusable Object-Oriented Software. O livro continha a descri¸˜o de 23 ca padr˜es para problemas que eram comumente encontrados o durante o desenvolvimento de software. 15 / 27
  • 16. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Conceito Um padr˜o pode ser definido como sendo um esbo¸o, em vez a c da implementa¸˜o espec´ ca ıfica, ou seja, um modelo a ser seguido durante a constru¸˜o do software (Coad et al., 1995). ca As melhores pr´ticas de projetos antigos s˜o executadas a a visando que o esfor¸o para evitar retrabalho seja m´ c ınimo. Com essas experiˆncias j´ testadas e comprovadamente ideais, e a tem-se um vocabul´rio comum que permitir´ uma melhor a a comunica¸˜o entre a equipe. ca Design Patterns s˜o metodologias de constru¸˜o de software a ca comprovadamente funcionais que garantem legibilidade, manutenabilidade e reutiliza¸˜o de c´digo-fonte no ca o desenvolvimento de alguma aplica¸˜o computacional ca (Daniel Welfer, 2005). 16 / 27
  • 17. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Conceito Um padr˜o pode ser definido como sendo um esbo¸o, em vez a c da implementa¸˜o espec´ ca ıfica, ou seja, um modelo a ser seguido durante a constru¸˜o do software (Coad et al., 1995). ca As melhores pr´ticas de projetos antigos s˜o executadas a a visando que o esfor¸o para evitar retrabalho seja m´ c ınimo. Com essas experiˆncias j´ testadas e comprovadamente ideais, e a tem-se um vocabul´rio comum que permitir´ uma melhor a a comunica¸˜o entre a equipe. ca Design Patterns s˜o metodologias de constru¸˜o de software a ca comprovadamente funcionais que garantem legibilidade, manutenabilidade e reutiliza¸˜o de c´digo-fonte no ca o desenvolvimento de alguma aplica¸˜o computacional ca (Daniel Welfer, 2005). 16 / 27
  • 18. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Conceito Um padr˜o pode ser definido como sendo um esbo¸o, em vez a c da implementa¸˜o espec´ ca ıfica, ou seja, um modelo a ser seguido durante a constru¸˜o do software (Coad et al., 1995). ca As melhores pr´ticas de projetos antigos s˜o executadas a a visando que o esfor¸o para evitar retrabalho seja m´ c ınimo. Com essas experiˆncias j´ testadas e comprovadamente ideais, e a tem-se um vocabul´rio comum que permitir´ uma melhor a a comunica¸˜o entre a equipe. ca Design Patterns s˜o metodologias de constru¸˜o de software a ca comprovadamente funcionais que garantem legibilidade, manutenabilidade e reutiliza¸˜o de c´digo-fonte no ca o desenvolvimento de alguma aplica¸˜o computacional ca (Daniel Welfer, 2005). 16 / 27
  • 19. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Conceito Um padr˜o pode ser definido como sendo um esbo¸o, em vez a c da implementa¸˜o espec´ ca ıfica, ou seja, um modelo a ser seguido durante a constru¸˜o do software (Coad et al., 1995). ca As melhores pr´ticas de projetos antigos s˜o executadas a a visando que o esfor¸o para evitar retrabalho seja m´ c ınimo. Com essas experiˆncias j´ testadas e comprovadamente ideais, e a tem-se um vocabul´rio comum que permitir´ uma melhor a a comunica¸˜o entre a equipe. ca Design Patterns s˜o metodologias de constru¸˜o de software a ca comprovadamente funcionais que garantem legibilidade, manutenabilidade e reutiliza¸˜o de c´digo-fonte no ca o desenvolvimento de alguma aplica¸˜o computacional ca (Daniel Welfer, 2005). 16 / 27
  • 20. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Classifica¸˜o ca Os padr˜es de projeto s˜o classificados de v´rias maneiras, por´m o a a e o mais comum ´ classific´-los de acordo com os tipos de problemas e a que eles resolvem. De acordo com esse crit´rio, os padr˜es podem e o ser: Cria¸˜o Resolvem os problemas da cria¸˜o de objetos. ca ca Estruturais Lidam com os problemas de relacionamentos entre objetos. Comportamentais Lidam com os problemas de atribui¸˜o de ca responsabilidades aos objetos. 17 / 27
  • 21. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Motiva¸˜o ca Design patterns tˆm v´rios usos no processo de desenvolvimento e a de software orientado a objetos (Schneide, 1999): formam um vocabul´rio comum que permite uma melhor a comunica¸˜o entre os desenvolvedores, uma documenta¸˜o ca ca mais completa e uma melhor explora¸˜o das alternativas de ca projeto; constituem uma base de experiˆncias reutiliz´veis para a e a constru¸˜o de software; ca reduzem o tempo de aprendizado de uma determinada biblioteca de classes; quanto mais cedo s˜o usados, menor ser´ o retrabalho em a a etapas mais avan¸adas do projeto. c 18 / 27
  • 22. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Motiva¸˜o ca Design patterns tˆm v´rios usos no processo de desenvolvimento e a de software orientado a objetos (Schneide, 1999): formam um vocabul´rio comum que permite uma melhor a comunica¸˜o entre os desenvolvedores, uma documenta¸˜o ca ca mais completa e uma melhor explora¸˜o das alternativas de ca projeto; constituem uma base de experiˆncias reutiliz´veis para a e a constru¸˜o de software; ca reduzem o tempo de aprendizado de uma determinada biblioteca de classes; quanto mais cedo s˜o usados, menor ser´ o retrabalho em a a etapas mais avan¸adas do projeto. c 18 / 27
  • 23. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Motiva¸˜o ca Design patterns tˆm v´rios usos no processo de desenvolvimento e a de software orientado a objetos (Schneide, 1999): formam um vocabul´rio comum que permite uma melhor a comunica¸˜o entre os desenvolvedores, uma documenta¸˜o ca ca mais completa e uma melhor explora¸˜o das alternativas de ca projeto; constituem uma base de experiˆncias reutiliz´veis para a e a constru¸˜o de software; ca reduzem o tempo de aprendizado de uma determinada biblioteca de classes; quanto mais cedo s˜o usados, menor ser´ o retrabalho em a a etapas mais avan¸adas do projeto. c 18 / 27
  • 24. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Introdu¸˜o ca Design Patterns Conceito Aplica¸˜o Pr´tica ca a Motiva¸˜o ca Conclus˜oa Referˆncias e Motiva¸˜o ca Design patterns tˆm v´rios usos no processo de desenvolvimento e a de software orientado a objetos (Schneide, 1999): formam um vocabul´rio comum que permite uma melhor a comunica¸˜o entre os desenvolvedores, uma documenta¸˜o ca ca mais completa e uma melhor explora¸˜o das alternativas de ca projeto; constituem uma base de experiˆncias reutiliz´veis para a e a constru¸˜o de software; ca reduzem o tempo de aprendizado de uma determinada biblioteca de classes; quanto mais cedo s˜o usados, menor ser´ o retrabalho em a a etapas mais avan¸adas do projeto. c 18 / 27
  • 25. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Patterns Aplica¸˜o Pr´tica ca a Conclus˜oa Referˆncias e Conte´do u 1 Introdu¸˜o ca Introdu¸˜o aos Padr˜es de Projeto ca o Contexto Advento 2 Funcamenta¸˜o Te´rica ca o Orienta¸˜o a Objetos ca Reusabilidade de Software 3 Design Patterns Introdu¸˜o ca Conceito Motiva¸˜o ca 4 Aplica¸˜o Pr´tica ca a Patterns 5 Conclus˜o a Conclus˜es Finais o 19 / 27
  • 26. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Patterns Aplica¸˜o Pr´tica ca a Conclus˜oa Referˆncias e Singleton O pattern Singleton est´ entre um dos mais simples patterns a ser a implementado, pois seu objetivo ´ apenas garantir que seja e mantida somente instˆncia de um determinado objeto. Ou seja, a a pr´pria classe garante que nenhuma outra instˆncia seja criada, o a bem como oferece uma maneira de acessar sua pr´pria instˆncia. o a 20 / 27
  • 27. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Patterns Aplica¸˜o Pr´tica ca a Conclus˜oa Referˆncias e Factory Existem certas situa¸˜es em aplica¸˜es que, seja por uma co co interven¸˜o humana ou por uma implementa¸˜o mais complexa, o ca ca programador n˜o saber´ como o programa ir´ se comportar diante a a a de uma determinada situa¸˜o. Com isso, o programador pode n˜o ca a saber que classe dever´ ser instanciada em determinado momento a de uma aplica¸˜o. Para facilitar esse tipo de situa¸˜o foi criado o ca ca pattern Factory. 21 / 27
  • 28. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Patterns Aplica¸˜o Pr´tica ca a Conclus˜oa Referˆncias e Fa¸ade c O objetivo deste pattern ´ fornecer uma interface unificada para e um conjunto de interfaces em um subsistema (Gamma et al., 1995). Ou seja, o pattern Fa¸ade ´ o isolamento entre camadas de c e um sistema, permitindo uma interface mais simples de comunica¸˜o entre essas camadas, como tamb´m um acoplamento ca e baixo. 22 / 27
  • 29. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Conclus˜es Finais o Aplica¸˜o Pr´tica ca a Conclus˜oa Referˆncias e Conte´do u 1 Introdu¸˜o ca Introdu¸˜o aos Padr˜es de Projeto ca o Contexto Advento 2 Funcamenta¸˜o Te´rica ca o Orienta¸˜o a Objetos ca Reusabilidade de Software 3 Design Patterns Introdu¸˜o ca Conceito Motiva¸˜o ca 4 Aplica¸˜o Pr´tica ca a Patterns 5 Conclus˜o a Conclus˜es Finais o 23 / 27
  • 30. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Conclus˜es Finais o Aplica¸˜o Pr´tica ca a Conclus˜oa Referˆncias e Singleton Design Patterns s˜o metodologias de constru¸˜o de software a ca comprovadamente funcionais que garantem legibilidade, manutenabilidade e reutiliza¸˜o de c´digo-fonte no ca o desenvolvimento de alguma aplica¸˜o computacional ca (Daniel Welfer, 2005). 24 / 27
  • 31. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Aplica¸˜o Pr´tica ca a Conclus˜oa Referˆncias e Referˆncias I e Agostini, M. N., Decker, I. C. & e Silva, A. S. (2007), ‘A new approach for the design of electric power system software using object oriented modeling.’, International Journal of Electrical Power & Energy Systems 29, 505–513. Coad, P., North, D. & Mayfield, M. (1995), Object models: strategies, patterns, applications, Yourdon Press, Upper Saddle River, NJ, USA. Daniel Welfer, M. C. d. (2005), ‘Coopera¸˜o entre padr˜es de ca o projeto na resolu¸˜o de problemas de processamento de imagens ca baseados em filtros de convolu¸˜o’. ca 25 / 27
  • 32. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Aplica¸˜o Pr´tica ca a Conclus˜oa Referˆncias e Referˆncias II e Gamma, E., Helm, R., Johnson, R. & Vlissides, J. (1995), Design Patterns Elements of Reusable Object-Oriented Software, Addison-Wesley. Gerber, L. D. (1999), Uma linguagem de padr˜es para o o desenvolvimento de sistemas de apoio ` decis˜o baseado em a a frameworks, Master’s thesis, Pontif´ Universidade Cat´lica do ıcia o Rio Grande do Sul. Lange, D. B. & Nakamura, Y. (1995), ‘Interactive visualization of design patterns can help in framework understanding’, Sigplan Notices pp. 342–357. Meyer, B. (1997), Object-Oriented Software Construction, Prentice Hall. 26 / 27
  • 33. Introdu¸˜o ca Funcamenta¸˜o Te´rica ca o Design Patterns Aplica¸˜o Pr´tica ca a Conclus˜oa Referˆncias e Referˆncias III e Oglio, P. D. (2007), PHP - Programando com Orienta¸˜o a ca Objetos, Novatec. Pree, W. (1995), Technology of object-oriented languages and systems, in ‘TOOLS’. Schneide, R. L. (1999), ‘Design patterns’. URL http://dcc.ufrj.br/~schneide/PSI_981/gp_6/design_patterns ´ Ultimo acesso em 02/06/2009. 27 / 27