Padrões de Projeto
   É possível com Python ?!

          Parte 01
   V Encontro do PUG-PE
      Marcel Caraciolo


      ...
Vamos ao que interessa!
Classe Normal x Classe Abstrata x Interface
class Pessoa(object):
       def __init__(self,nome=No...
Vamos ao que interessa!
Classe Normal x Classe Abstrata x Interface

class Ator(Pessoa):
       def __init__(self, nome):
...
Vamos ao que interessa!
Classe Normal x Classe Abstrata x Interface

  >>> p = Pessoa()
  >>> p.fala() #Lanca exceção
  >>...
Vamos ao que interessa!
Classe Normal x Classe Abstrata x Interface

class Filme(object):
       def __init__(self, elenco...
Vamos ao que interessa!
Classe Normal x Classe Abstrata x Interface


 >>> ...
 >>> filme = Filme([ator])
 >>> filme.falas...
Vamos ao que interessa!
      IS - A Herança
 Marlon Brando é um Ator.
   Ator é uma pessoa.
    HAS - A Composição
     F...
Vamos ao que interessa!
✓            Herança

✓          Polimorfismo
✓           Abstração

         Encapsulamento




  ...
Encapsulamento em Python
 Não há modificadores de acesso em Python




   Convenção:     Mas não há uma maneira de
_nome (P...
Encapsulamento em Python
                   Vamos à prancheta!
        Objetivo: Construir um fone cujo volume vai de 0 à ...
Encapsulamento em Python
                   Vamos à prancheta!
        Objetivo: Construir um fone cujo volume vai de 0 à ...
Encapsulamento em Python
                   Voltando ao código!
        Objetivo: Construir um fone cujo volume vai de 0 à...
Encapsulamento em Python
                   Vamos à prancheta!
        Objetivo: Construir um fone cujo volume vai de 0 à ...
O que são Padrões de Projeto ?
  ‘São práticas ou padrões que descrevem
   soluções para problemas recorrentes no
  desenv...
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
Rel...
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/dunc...
Padrões de Projeto
   É possível com Python ?!

          Parte 01
   IV Encontro do PUG-PE
      Marcel Caraciolo


     ...
Próximos SlideShares
Carregando em…5
×

Design Patterns with Python - Is it possible ? - Part 01

1.876 visualizações

Publicada em

Presentation from Marcel Caraciolo about Design Patterns with Python. This is the first part. Lectured at V Meeting of PUG-PE (Python Users Group of Pernambuco) at POLI- Recife,Pernambuco, Brazil. Day: 03/07/2010

Publicada em: Tecnologia
1 comentário
4 gostaram
Estatísticas
Notas
  • Ué, pq quando vou fazer o download vem como arquivo .key?
    A palestra ficou muito boa. Parabéns!
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
Sem downloads
Visualizações
Visualizações totais
1.876
No SlideShare
0
A partir de incorporações
0
Número de incorporações
221
Ações
Compartilhamentos
0
Downloads
67
Comentários
1
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide













  • Em 1987, a partir dos conceitos criados por Alexander, os programadores Kent Beck e Ward Cunningham propuseram os primeiros padrões de projeto para a área da ciência da computação. Em um trabalho para a conferência OOPSLA, eles apresentaram alguns padrões para a construção de janelas na linguagem Smalltalk.[3] Nos anos seguintes Beck, Cunningham e outros seguiram com o desenvolvimento destas idéias.
    O movimento ao redor de padrões de projeto ganhou popularidade com o livro Design Patterns: Elements of Reusable Object-Oriented Software, publicado em 1995. Os autores desse livro são Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, conhecidos como a "Gangue dos Quatro" (Gang of Four) ou simplesmente "GoF". Posteriormente, vá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ões conhecidos como GRASP (General Responsibility Assignment Software Patterns).







  • Design Patterns with Python - Is it possible ? - Part 01

    1. 1. Padrões de Projeto É possível com Python ?! Parte 01 V Encontro do PUG-PE Marcel Caraciolo IV Encontro do PUG-PE
    2. 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. 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. 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. 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. 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. 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. 8. Vamos ao que interessa! ✓ Herança ✓ Polimorfismo ✓ Abstração Encapsulamento IV Encontro do PUG-PE
    9. 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. 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. 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. 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. 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. 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. 15. Design Patterns IV Encontro do PUG-PE
    16. 16. Design Patterns IV Encontro do PUG-PE
    17. 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. 18. Cenas do próximo capítulo... IV Encontro do PUG-PE
    19. 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. 20. Padrões de Projeto É possível com Python ?! Parte 01 IV Encontro do PUG-PE Marcel Caraciolo IV Encontro do PUG-PE

    ×