SlideShare uma empresa Scribd logo
1 de 20
Padrões de Projeto
   É possível com Python ?!

          Parte 01
   V Encontro do PUG-PE
      Marcel Caraciolo


                          IV Encontro do PUG-PE
Vamos ao que interessa!
Classe Normal x Classe Abstrata x Interface
class Pessoa(object):
       def __init__(self,nome=None):
           self.nome = nome

       def getNome(self):
           return self.nome

       def fala(self):
           raise Exception(‘Acao nao implementada’)

       def olha(self):
           pass

                                           IV Encontro do PUG-PE
Vamos ao que interessa!
Classe Normal x Classe Abstrata x Interface

class Ator(Pessoa):
       def __init__(self, nome):
           Pessoa.__init__(nome,self)

       def fala(self):
           print ‘Eu sou um ator !!’

       def olha(self):
           print ‘Meu olhar 43 !’



                                        IV Encontro do PUG-PE
Vamos ao que interessa!
Classe Normal x Classe Abstrata x Interface

  >>> p = Pessoa()
  >>> p.fala() #Lanca exceção
  >>> p.olha() #Nada
  >>> ator = Ator(‘Marlon Brando’)
  >>> ator.fala()
  Eu sou um ator!
  >>> ator.olha()
  Meu olhar 43!




                                     IV Encontro do PUG-PE
Vamos ao que interessa!
Classe Normal x Classe Abstrata x Interface

class Filme(object):
       def __init__(self, elenco=None):
           self.elenco = elenco

       def falas(self):
           for ator in elenco:
               print self.ator.fala()

       ...



                                          IV Encontro do PUG-PE
Vamos ao que interessa!
Classe Normal x Classe Abstrata x Interface


 >>> ...
 >>> filme = Filme([ator])
 >>> filme.falas()
 Eu sou um ator!




                                IV Encontro do PUG-PE
Vamos ao que interessa!
      IS - A Herança
 Marlon Brando é um Ator.
   Ator é uma pessoa.
    HAS - A Composição
     Filme tem Atores.

    CAN - DO Interface
   Ator pode falar, olhar.
                         IV Encontro do PUG-PE
Vamos ao que interessa!
✓            Herança

✓          Polimorfismo
✓           Abstração

         Encapsulamento




                          IV Encontro do PUG-PE
Encapsulamento em Python
 Não há modificadores de acesso em Python




   Convenção:     Mas não há uma maneira de
_nome (Protegido)   eu limitar o acesso ao
 __cpf (Privado)          atributos ?

                              IV Encontro do PUG-PE
Encapsulamento em Python
                   Vamos à prancheta!
        Objetivo: Construir um fone cujo volume vai de 0 à 100!
class Fone(object):
       def __init__(self,volume= 0.0):
           self.volume = volume

       def alterar_volume(self,volume):
           if volume > 100:
              self.volume = 100
           elif volume < 0:
              self.volume = 0
           else:
              self.volume = volume

       def pegar_volume(self):
           return self.volume                         IV Encontro do PUG-PE
.
Encapsulamento em Python
                   Vamos à prancheta!
        Objetivo: Construir um fone cujo volume vai de 0 à 100!




>>>fone = Fone(200)
>>>fone.pegarVolume()
200
>>>fone.volume
200
>>>fone.volume = -50
>> fone.volume
-50


                                                      IV Encontro do PUG-PE
Encapsulamento em Python
                   Voltando ao código!
        Objetivo: Construir um fone cujo volume vai de 0 à 100!




class Fone(object):

      (...)

      def pegar_volume(self):
          return self.volume

      volume = property(pegar_volume,alterar_volume)
.




                                                      IV Encontro do PUG-PE
Encapsulamento em Python
                   Vamos à prancheta!
        Objetivo: Construir um fone cujo volume vai de 0 à 100!



>>>fone = Fone(200)
>>>fone.pegarVolume()
100
>>>fone.volume
100
>>>fone.volume = - 50
0
>>>fone.volume = 200
>>>fone.volume
100

                                                      IV Encontro do PUG-PE
O que são Padrões de Projeto ?
  ‘São práticas ou padrões que descrevem
   soluções para problemas recorrentes no
  desenvolvimento de sistemas de software
       orientado a objetos.’ - Wikipedia

Um padrão estabelece um nome, um problema,
 a solução, quando aplicar esta solução e suas
                consequências.

                                   IV Encontro do PUG-PE
Design Patterns




                  IV Encontro do PUG-PE
Design Patterns




                  IV Encontro do PUG-PE
Classificação DP
                  Creational
   Relacionado à parte de criação do objeto

                  Structural
Relacionado à parte de composição de classes e
                   objetos
                  Behavioral
    Caracteriza como as classes/objetos se
     comunicam e distribuem seus papéis
                                 IV Encontro do PUG-PE
Cenas do próximo capítulo...




                      IV Encontro do PUG-PE
Referências


http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software


    http://www.suttoncourtenay.org.uk/duncan/accu/pythonpatterns.html




                                                     IV Encontro do PUG-PE
Padrões de Projeto
   É possível com Python ?!

          Parte 01
   IV Encontro do PUG-PE
      Marcel Caraciolo


                           IV Encontro do PUG-PE

Mais conteúdo relacionado

Semelhante a Padrões de Projeto com Python - Parte 01

Orientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSLOrientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSLGeorge Mendonça
 
Python e tipagem estática
Python e tipagem estáticaPython e tipagem estática
Python e tipagem estáticaVinta Software
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012Luís Cobucci
 
Por que você deveria aprender python?
Por que você deveria aprender python?Por que você deveria aprender python?
Por que você deveria aprender python?Felipe Volpone
 
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...George Mendonça
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação PythonCarlos Schults
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol Gyn(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol GynLuís Cobucci
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonguestac3de
 
Engenharia de Software - Unimep/Pronatec - Aula 14
Engenharia de Software - Unimep/Pronatec - Aula 14Engenharia de Software - Unimep/Pronatec - Aula 14
Engenharia de Software - Unimep/Pronatec - Aula 14André Phillip Bertoletti
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECLW3P Projetos Web
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Marcel Caraciolo
 
Padrões de Projeto e Boas Práticas em PHP - PHP Conference Brasil 2010
Padrões de Projeto e Boas Práticas em PHP - PHP Conference Brasil 2010Padrões de Projeto e Boas Práticas em PHP - PHP Conference Brasil 2010
Padrões de Projeto e Boas Práticas em PHP - PHP Conference Brasil 2010Flávio Lisboa
 
Processamento de linguagem natural
Processamento de linguagem naturalProcessamento de linguagem natural
Processamento de linguagem naturalCristian Muñoz
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPTSidney Souza
 

Semelhante a Padrões de Projeto com Python - Parte 01 (20)

Orientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSLOrientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSL
 
Python e tipagem estática
Python e tipagem estáticaPython e tipagem estática
Python e tipagem estática
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012
 
Por que você deveria aprender python?
Por que você deveria aprender python?Por que você deveria aprender python?
Por que você deveria aprender python?
 
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol Gyn(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol Gyn
 
(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Engenharia de Software - Unimep/Pronatec - Aula 14
Engenharia de Software - Unimep/Pronatec - Aula 14Engenharia de Software - Unimep/Pronatec - Aula 14
Engenharia de Software - Unimep/Pronatec - Aula 14
 
Python Zope Plone - Fiocruz
Python Zope Plone - FiocruzPython Zope Plone - Fiocruz
Python Zope Plone - Fiocruz
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECL
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Padrões de Projeto e Boas Práticas em PHP - PHP Conference Brasil 2010
Padrões de Projeto e Boas Práticas em PHP - PHP Conference Brasil 2010Padrões de Projeto e Boas Práticas em PHP - PHP Conference Brasil 2010
Padrões de Projeto e Boas Práticas em PHP - PHP Conference Brasil 2010
 
Processamento de linguagem natural
Processamento de linguagem naturalProcessamento de linguagem natural
Processamento de linguagem natural
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPT
 
Ecossistema Python
Ecossistema PythonEcossistema Python
Ecossistema Python
 

Mais de Marcel Caraciolo

Como interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonComo interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonMarcel Caraciolo
 
Joblib: Lightweight pipelining for parallel jobs (v2)
Joblib:  Lightweight pipelining for parallel jobs (v2)Joblib:  Lightweight pipelining for parallel jobs (v2)
Joblib: Lightweight pipelining for parallel jobs (v2)Marcel Caraciolo
 
Construindo softwares de bioinformática para análises clínicas : Desafios e...
Construindo softwares  de bioinformática  para análises clínicas : Desafios e...Construindo softwares  de bioinformática  para análises clínicas : Desafios e...
Construindo softwares de bioinformática para análises clínicas : Desafios e...Marcel Caraciolo
 
Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Marcel Caraciolo
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratórioMarcel Caraciolo
 
Python on Science ? Yes, We can.
Python on Science ?   Yes, We can.Python on Science ?   Yes, We can.
Python on Science ? Yes, We can.Marcel Caraciolo
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Marcel Caraciolo
 
Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Marcel Caraciolo
 
Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Marcel Caraciolo
 
Benchy, python framework for performance benchmarking of Python Scripts
Benchy, python framework for performance benchmarking  of Python ScriptsBenchy, python framework for performance benchmarking  of Python Scripts
Benchy, python framework for performance benchmarking of Python ScriptsMarcel Caraciolo
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Marcel Caraciolo
 
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...Marcel Caraciolo
 
Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Marcel Caraciolo
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonMarcel Caraciolo
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programaçãoMarcel Caraciolo
 
Construindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceConstruindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceMarcel Caraciolo
 
Como Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilComo Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilMarcel Caraciolo
 
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Marcel Caraciolo
 
Aula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosAula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosMarcel Caraciolo
 

Mais de Marcel Caraciolo (20)

Como interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonComo interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com Python
 
Joblib: Lightweight pipelining for parallel jobs (v2)
Joblib:  Lightweight pipelining for parallel jobs (v2)Joblib:  Lightweight pipelining for parallel jobs (v2)
Joblib: Lightweight pipelining for parallel jobs (v2)
 
Construindo softwares de bioinformática para análises clínicas : Desafios e...
Construindo softwares  de bioinformática  para análises clínicas : Desafios e...Construindo softwares  de bioinformática  para análises clínicas : Desafios e...
Construindo softwares de bioinformática para análises clínicas : Desafios e...
 
Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratório
 
Python on Science ? Yes, We can.
Python on Science ?   Yes, We can.Python on Science ?   Yes, We can.
Python on Science ? Yes, We can.
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
 
Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)
 
Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?
 
Big Data com Python
Big Data com PythonBig Data com Python
Big Data com Python
 
Benchy, python framework for performance benchmarking of Python Scripts
Benchy, python framework for performance benchmarking  of Python ScriptsBenchy, python framework for performance benchmarking  of Python Scripts
Benchy, python framework for performance benchmarking of Python Scripts
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
 
Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com Python
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programação
 
Construindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceConstruindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduce
 
Como Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilComo Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no Brasil
 
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
 
Aula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosAula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursos
 

Padrões de Projeto com Python - Parte 01

  • 1. Padrões de Projeto É possível com Python ?! Parte 01 V Encontro do PUG-PE Marcel Caraciolo IV Encontro do PUG-PE
  • 2. Vamos ao que interessa! Classe Normal x Classe Abstrata x Interface class Pessoa(object): def __init__(self,nome=None): self.nome = nome def getNome(self): return self.nome def fala(self): raise Exception(‘Acao nao implementada’) def olha(self): pass IV Encontro do PUG-PE
  • 3. Vamos ao que interessa! Classe Normal x Classe Abstrata x Interface class Ator(Pessoa): def __init__(self, nome): Pessoa.__init__(nome,self) def fala(self): print ‘Eu sou um ator !!’ def olha(self): print ‘Meu olhar 43 !’ IV Encontro do PUG-PE
  • 4. Vamos ao que interessa! Classe Normal x Classe Abstrata x Interface >>> p = Pessoa() >>> p.fala() #Lanca exceção >>> p.olha() #Nada >>> ator = Ator(‘Marlon Brando’) >>> ator.fala() Eu sou um ator! >>> ator.olha() Meu olhar 43! IV Encontro do PUG-PE
  • 5. Vamos ao que interessa! Classe Normal x Classe Abstrata x Interface class Filme(object): def __init__(self, elenco=None): self.elenco = elenco def falas(self): for ator in elenco: print self.ator.fala() ... IV Encontro do PUG-PE
  • 6. Vamos ao que interessa! Classe Normal x Classe Abstrata x Interface >>> ... >>> filme = Filme([ator]) >>> filme.falas() Eu sou um ator! IV Encontro do PUG-PE
  • 7. Vamos ao que interessa! IS - A Herança Marlon Brando é um Ator. Ator é uma pessoa. HAS - A Composição Filme tem Atores. CAN - DO Interface Ator pode falar, olhar. IV Encontro do PUG-PE
  • 8. Vamos ao que interessa! ✓ Herança ✓ Polimorfismo ✓ Abstração Encapsulamento IV Encontro do PUG-PE
  • 9. Encapsulamento em Python Não há modificadores de acesso em Python Convenção: Mas não há uma maneira de _nome (Protegido) eu limitar o acesso ao __cpf (Privado) atributos ? IV Encontro do PUG-PE
  • 10. Encapsulamento em Python Vamos à prancheta! Objetivo: Construir um fone cujo volume vai de 0 à 100! class Fone(object): def __init__(self,volume= 0.0): self.volume = volume def alterar_volume(self,volume): if volume > 100: self.volume = 100 elif volume < 0: self.volume = 0 else: self.volume = volume def pegar_volume(self): return self.volume IV Encontro do PUG-PE .
  • 11. Encapsulamento em Python Vamos à prancheta! Objetivo: Construir um fone cujo volume vai de 0 à 100! >>>fone = Fone(200) >>>fone.pegarVolume() 200 >>>fone.volume 200 >>>fone.volume = -50 >> fone.volume -50 IV Encontro do PUG-PE
  • 12. Encapsulamento em Python Voltando ao código! Objetivo: Construir um fone cujo volume vai de 0 à 100! class Fone(object): (...) def pegar_volume(self): return self.volume volume = property(pegar_volume,alterar_volume) . IV Encontro do PUG-PE
  • 13. Encapsulamento em Python Vamos à prancheta! Objetivo: Construir um fone cujo volume vai de 0 à 100! >>>fone = Fone(200) >>>fone.pegarVolume() 100 >>>fone.volume 100 >>>fone.volume = - 50 0 >>>fone.volume = 200 >>>fone.volume 100 IV Encontro do PUG-PE
  • 14. O que são Padrões de Projeto ? ‘São práticas ou padrões que descrevem soluções para problemas recorrentes no desenvolvimento de sistemas de software orientado a objetos.’ - Wikipedia Um padrão estabelece um nome, um problema, a solução, quando aplicar esta solução e suas consequências. IV Encontro do PUG-PE
  • 15. Design Patterns IV Encontro do PUG-PE
  • 16. Design Patterns IV Encontro do PUG-PE
  • 17. Classificação DP Creational Relacionado à parte de criação do objeto Structural Relacionado à parte de composição de classes e objetos Behavioral Caracteriza como as classes/objetos se comunicam e distribuem seus papéis IV Encontro do PUG-PE
  • 18. Cenas do próximo capítulo... IV Encontro do PUG-PE
  • 19. Referências http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software http://www.suttoncourtenay.org.uk/duncan/accu/pythonpatterns.html IV Encontro do PUG-PE
  • 20. Padrões de Projeto É possível com Python ?! Parte 01 IV Encontro do PUG-PE Marcel Caraciolo IV Encontro do PUG-PE

Notas do Editor

  1. Em 1987, a partir dos conceitos criados por Alexander, os programadores Kent Beck e Ward Cunningham propuseram os primeiros padr&amp;#xF5;es de projeto para a &amp;#xE1;rea da ci&amp;#xEA;ncia da computa&amp;#xE7;&amp;#xE3;o. Em um trabalho para a confer&amp;#xEA;ncia OOPSLA, eles apresentaram alguns padr&amp;#xF5;es para a constru&amp;#xE7;&amp;#xE3;o de janelas na linguagem Smalltalk.[3] Nos anos seguintes Beck, Cunningham e outros seguiram com o desenvolvimento destas id&amp;#xE9;ias. O movimento ao redor de padr&amp;#xF5;es de projeto ganhou popularidade com o livro Design Patterns: Elements of Reusable Object-Oriented Software, publicado em 1995. Os autores desse livro s&amp;#xE3;o Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, conhecidos como a &quot;Gangue dos Quatro&quot; (Gang of Four) ou simplesmente &quot;GoF&quot;. Posteriormente, v&amp;#xE1;rios outros livros do estilo foram publicados, como Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, que introduziu um conjunto de padr&amp;#xF5;es conhecidos como GRASP (General Responsibility Assignment Software Patterns).