SlideShare uma empresa Scribd logo
1 de 52
Baixar para ler offline
Design Patterns

O que são e quando devem ser usados?
Vinícius Krolow
@krolow
http://github.com/krolow
Lucas Teixeira
http://github.com/loteixeira
NÃO é sobre design




                     photoshop, grids,
                     cores, arquitetura,
                     urbanismo, desenho,
                     isso é outra coisa...
é SIM sobre o seu código




é sobre como   escrever
seu código para   resolver
 problemas   comuns
conte me mais sobre isso...
vamos ter uma "SmallTalk"
Gang of four
é tudo sobre OOP




    encapsulation, polymorphism, decouple, são
    palavras comuns quando se fala em design
    patterns
é uma linguagem comum entre programadores




    é comum entre diferentes linguagens para resolver os
    mesmos problemas
vamos ver como são organizados




let's take a look how they are organized...
Padrões Criacionais


   Abstract Factory
   Builder
   Factory Method
   Lazy Initialization
   Multiton
   Object Pool
   Prototype
   Singleton
   Resource acquisition is initialization
Padrões Estruturais


   Adapter
   Composite
   Bridge
   Decorator
   Facade
   Flyweight
   Front Controller
   Module
   Proxy
Padrões Comportamentais

   Chain of responsibility
   Command
   Interpreter
   Iterator
   Mediator
   Memento
   Null object
   Observer
   Servant
   Specification
   State
   Strategy
   Template Method
   Visitor
Padrões Concorrentes

   Active Object
   Balking
   Binding properties
   Double-checked locking
   Event-based asynchronous
   Guarded suspension
   Lock
   Messaging design pattern (MDP)
   Monitor object
   Reactor
   Read-write lock
   Scheduler
   Thread pool
   Thread-specific storage
existem vários design patterns




       mas cada um com um propósito especial
vamos para ação
Observer




   "O padrão Observer define uma dependência de
   um-para-muitos entre objetos, onde os
   observadores serão notificados sobre mudanças
   no estado interno do objeto central."
show me   CODE
Resumão

          ● Acoplamento fraco;

          ● Possui implementação nativa em várias
            linguagens modernas;

          ● Normalmente usado com o padrão MVC
            para a comunicação entre suas camadas;

          ● Auxilia na comunicação de objetos distantes;

          ● É Async provavelmente tem ele!
Adapter




   "O padrão Adapter (também chamado de Wrapper),
   é usado para conectar diferentes interfaces de
   forma consistente. Ele provê uma interface
   compatível com o código-cliente usando
   internamente a interface original."
show me   CODE
Resumão

          ● Mesmo princípio dos adaptadores de
            tomadas elétricas;

          ● É uma caixa preta capaz processor um input
            para produzir o output desejado;

          ● Facilita a conversão de tipos e a integração
            entre diferentes bibliotecas.
Factory




    "O padrão Factory é responsável pela criação de
    objetos. Ele pode fornecer uma interface para
    criação de famílias de objetos sem a necessidade
    de especificar sua classe concreta"
show me   CODE
Resumão

          ● Comum em bibliotecas de GUI - onde todos
            elementos possuem a mesma interface,
            embora o comportamento interno seja
            particular a cada um

          ● É normal aparecer junto de outros padrões
            de projeto (strategy, dependency injection,
            etc)

          ● Auxilia na implementação de testes
            automatizados

          ● É o cara para criar objetos dinâmicamente!
Iterator




    "O padrão Iterator permite a iteração entre os
    elementos de uma coleção qualquer, sem levar em
    consideração sua implementação e/ou como esses
    dados são armazenados."
show me   CODE
Resumão

          ● Interface única e simplificada para iterar
            sobre todos elementos de uma coleção

          ● A estrutura interna, usada para armazenar
            os itens da coleção, torna-se irrelevante
            para o programador-usuário

          ● Possibilita a criação de Coleção de Objetos
            ao invês de uso de tipos nativos (array,
            map);
MVC




  "Model-view-controller é um padrão de projeto que
  visa modularizar o sistema em três partes
  independentes: model (dados/informação),
  controller (lógica da aplicação) e view (interação
  com o usuário)."
show me   CODE
Resumão

          ●   Separa as camadas de negócio da
              sua aplicação;

          ●   Foi idealizado para lidar com
              pequenas camadas!

          ●   Mal compreendido pela sociedade
              programadora!
Proxy



   "Um proxy, em sua forma mais geral, é uma classe
   que funciona como uma interface para outra classe.
   A classe proxy poderia conectar-se a qualquer
   coisa: uma conexão de rede, um objeto grande em
   memória, um arquivo, ou algum recurso que é difícil
   ou impossível de ser duplicado." Wikipédia
show me   CODE
Resumão

          ●   LazyLoad é com ele!

          ●   Auxilia acesso remoto de classes;

          ●   Operações custosas, vão começar a
              custar barato :)

          ●   Null pattern pode ser com ele
              também!
Singleton




    "O Singleton é uma classe de uma instância única
    com um ponto de acesso global. Seu objetivo é ser
    um objeto "solitário", independente do ciclo de vida
    da aplicação."
show me   CODE
Resumão

          ● Não é o mesmo que uma classe com
            métodos estáticos

          ● Classe de um único objeto

          ● Amplamente usada com bibliotecas de
            logging/debugging

          ● Controverso, muitas vezes considerado um
            anti-pattern

          ● É um inferno para testar!
Dependecy Injection




    "O modelo isola a "lógica" (A lógica da aplicação) da
    interface do usuário (Inserir e exibir dados),
    permitindo desenvolver, editar e testar
    separadamente cada parte." Wikipédia
show me   CODE
Resumão

          ● Esse cara sou eu (DI)!

          ● Chega a nem ser um padrão de tão simples!

          ● Torna seu código testável e auxilia no
            desacoplamento do código (avoid no new)
          ●
            DIC ajudam na instância de objetos com
            multiplas depêndecias (aninhados)
          ●
Tá, chega, cansei de legos...
ma vamo lá, só mais um pouco...




 e o que isso me ajuda no fim?
a se tornar um   OO star! m/
com código para orgulhar a família

      ●

            ■
                    testável
desacoplado
      ●
                                   reutilizável
                ●


      ●
          extensível
                ●



                       orientado a
  legível
                       interfaces
mas.... tenha em mente que   Design Patterns
não é a   RESPOSTA para tudo!
mas que possívelmente alguém
já passou pelo mesmo

problema que você
design patterns estão sendo criados todos dias...
você também pode criar os seus!




            Nome:     Hack Thursday
            Exemplo: Apresentação de Hoje
            Contexto: Aplicável todas as quintas
            Problema: Sede de "conhecimento"
            Solução: Vir todas as quintas
lembre é Orientação a Objetos não a                         Classes   .




                     "Herança pode ser o câncer do seu código!" by Nós
Perguntas e Cerveja?

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

TDC2016POA | Trilha JavaScript - Porque eu deveria usar TypeScript?
TDC2016POA | Trilha JavaScript - Porque eu deveria usar TypeScript?TDC2016POA | Trilha JavaScript - Porque eu deveria usar TypeScript?
TDC2016POA | Trilha JavaScript - Porque eu deveria usar TypeScript?
 
Prazer,Ruby On Rails
Prazer,Ruby On RailsPrazer,Ruby On Rails
Prazer,Ruby On Rails
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
ASP.NET MVC 3
ASP.NET MVC 3ASP.NET MVC 3
ASP.NET MVC 3
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservices
 
C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015
 
Desenvolvimento web e PHP
Desenvolvimento web e PHPDesenvolvimento web e PHP
Desenvolvimento web e PHP
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
Visão geral type script
Visão geral type scriptVisão geral type script
Visão geral type script
 
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filho
 
Django Channels - Aplicações real time com Django
Django Channels - Aplicações real time com DjangoDjango Channels - Aplicações real time com Django
Django Channels - Aplicações real time com Django
 
Processamento Assíncrono com PHP
Processamento Assíncrono com PHPProcessamento Assíncrono com PHP
Processamento Assíncrono com PHP
 
[Node js] frameworks de testes end to-end baseados em nodejs
[Node js] frameworks de testes end to-end baseados em nodejs [Node js] frameworks de testes end to-end baseados em nodejs
[Node js] frameworks de testes end to-end baseados em nodejs
 
1º FasS2B 2010
1º FasS2B 20101º FasS2B 2010
1º FasS2B 2010
 
Introdução ao framework Django
Introdução ao framework DjangoIntrodução ao framework Django
Introdução ao framework Django
 

Destaque

Introdução a Padrões de Projeto - Engenharia de Software
Introdução a Padrões de Projeto - Engenharia de SoftwareIntrodução a Padrões de Projeto - Engenharia de Software
Introdução a Padrões de Projeto - Engenharia de Software
Willian Carminato
 

Destaque (17)

programming.success - carreira de programador
programming.success - carreira de programadorprogramming.success - carreira de programador
programming.success - carreira de programador
 
Empregado like a boss
Empregado  like a boss Empregado  like a boss
Empregado like a boss
 
Object Calisthenics
Object CalisthenicsObject Calisthenics
Object Calisthenics
 
Microservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenosMicroservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenos
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patterns
 
Padrão Observer (Java)
Padrão Observer (Java)Padrão Observer (Java)
Padrão Observer (Java)
 
Design Patterns - Com Java
Design Patterns  - Com JavaDesign Patterns  - Com Java
Design Patterns - Com Java
 
Padrão Observador (Orientação à Objetos)
Padrão Observador (Orientação à Objetos)Padrão Observador (Orientação à Objetos)
Padrão Observador (Orientação à Objetos)
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Introdução a Padrões de Projeto - Engenharia de Software
Introdução a Padrões de Projeto - Engenharia de SoftwareIntrodução a Padrões de Projeto - Engenharia de Software
Introdução a Padrões de Projeto - Engenharia de Software
 
Design patterns de uma vez por todas
Design patterns de uma vez por todasDesign patterns de uma vez por todas
Design patterns de uma vez por todas
 
Observer - Padrões de projeto
Observer - Padrões de projetoObserver - Padrões de projeto
Observer - Padrões de projeto
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
design patterns java
design patterns javadesign patterns java
design patterns java
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Java
 
Padrões de Projeto - Design Patterns
Padrões de Projeto - Design PatternsPadrões de Projeto - Design Patterns
Padrões de Projeto - Design Patterns
 

Semelhante a Design patterns

Aprensentacao oo-trincheiras
Aprensentacao oo-trincheirasAprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Higor César
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
Thiago Boufleuhr
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
Herval Freire
 

Semelhante a Design patterns (20)

POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Modularização em java com osgi
Modularização em java com osgiModularização em java com osgi
Modularização em java com osgi
 
GoF Design Patterns - Borland Conference (BorCon) 2004
GoF Design Patterns - Borland Conference (BorCon) 2004GoF Design Patterns - Borland Conference (BorCon) 2004
GoF Design Patterns - Borland Conference (BorCon) 2004
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gof
 
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheirasAprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Anti-patterns
Anti-patternsAnti-patterns
Anti-patterns
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Cs 2
Cs 2Cs 2
Cs 2
 
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
BlingTech - Padrões de Projeto
BlingTech - Padrões de ProjetoBlingTech - Padrões de Projeto
BlingTech - Padrões de Projeto
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Treinamento DDD .Net
Treinamento DDD .NetTreinamento DDD .Net
Treinamento DDD .Net
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 

Último

Último (8)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Design patterns

  • 1. Design Patterns O que são e quando devem ser usados?
  • 4. NÃO é sobre design photoshop, grids, cores, arquitetura, urbanismo, desenho, isso é outra coisa...
  • 5. é SIM sobre o seu código é sobre como escrever seu código para resolver problemas comuns
  • 6. conte me mais sobre isso...
  • 7. vamos ter uma "SmallTalk"
  • 9. é tudo sobre OOP encapsulation, polymorphism, decouple, são palavras comuns quando se fala em design patterns
  • 10. é uma linguagem comum entre programadores é comum entre diferentes linguagens para resolver os mesmos problemas
  • 11. vamos ver como são organizados let's take a look how they are organized...
  • 12. Padrões Criacionais Abstract Factory Builder Factory Method Lazy Initialization Multiton Object Pool Prototype Singleton Resource acquisition is initialization
  • 13. Padrões Estruturais Adapter Composite Bridge Decorator Facade Flyweight Front Controller Module Proxy
  • 14. Padrões Comportamentais Chain of responsibility Command Interpreter Iterator Mediator Memento Null object Observer Servant Specification State Strategy Template Method Visitor
  • 15. Padrões Concorrentes Active Object Balking Binding properties Double-checked locking Event-based asynchronous Guarded suspension Lock Messaging design pattern (MDP) Monitor object Reactor Read-write lock Scheduler Thread pool Thread-specific storage
  • 16. existem vários design patterns mas cada um com um propósito especial
  • 18. Observer "O padrão Observer define uma dependência de um-para-muitos entre objetos, onde os observadores serão notificados sobre mudanças no estado interno do objeto central."
  • 19. show me CODE
  • 20. Resumão ● Acoplamento fraco; ● Possui implementação nativa em várias linguagens modernas; ● Normalmente usado com o padrão MVC para a comunicação entre suas camadas; ● Auxilia na comunicação de objetos distantes; ● É Async provavelmente tem ele!
  • 21. Adapter "O padrão Adapter (também chamado de Wrapper), é usado para conectar diferentes interfaces de forma consistente. Ele provê uma interface compatível com o código-cliente usando internamente a interface original."
  • 22. show me CODE
  • 23. Resumão ● Mesmo princípio dos adaptadores de tomadas elétricas; ● É uma caixa preta capaz processor um input para produzir o output desejado; ● Facilita a conversão de tipos e a integração entre diferentes bibliotecas.
  • 24. Factory "O padrão Factory é responsável pela criação de objetos. Ele pode fornecer uma interface para criação de famílias de objetos sem a necessidade de especificar sua classe concreta"
  • 25. show me CODE
  • 26. Resumão ● Comum em bibliotecas de GUI - onde todos elementos possuem a mesma interface, embora o comportamento interno seja particular a cada um ● É normal aparecer junto de outros padrões de projeto (strategy, dependency injection, etc) ● Auxilia na implementação de testes automatizados ● É o cara para criar objetos dinâmicamente!
  • 27. Iterator "O padrão Iterator permite a iteração entre os elementos de uma coleção qualquer, sem levar em consideração sua implementação e/ou como esses dados são armazenados."
  • 28. show me CODE
  • 29. Resumão ● Interface única e simplificada para iterar sobre todos elementos de uma coleção ● A estrutura interna, usada para armazenar os itens da coleção, torna-se irrelevante para o programador-usuário ● Possibilita a criação de Coleção de Objetos ao invês de uso de tipos nativos (array, map);
  • 30. MVC "Model-view-controller é um padrão de projeto que visa modularizar o sistema em três partes independentes: model (dados/informação), controller (lógica da aplicação) e view (interação com o usuário)."
  • 31. show me CODE
  • 32. Resumão ● Separa as camadas de negócio da sua aplicação; ● Foi idealizado para lidar com pequenas camadas! ● Mal compreendido pela sociedade programadora!
  • 33. Proxy "Um proxy, em sua forma mais geral, é uma classe que funciona como uma interface para outra classe. A classe proxy poderia conectar-se a qualquer coisa: uma conexão de rede, um objeto grande em memória, um arquivo, ou algum recurso que é difícil ou impossível de ser duplicado." Wikipédia
  • 34. show me CODE
  • 35. Resumão ● LazyLoad é com ele! ● Auxilia acesso remoto de classes; ● Operações custosas, vão começar a custar barato :) ● Null pattern pode ser com ele também!
  • 36. Singleton "O Singleton é uma classe de uma instância única com um ponto de acesso global. Seu objetivo é ser um objeto "solitário", independente do ciclo de vida da aplicação."
  • 37. show me CODE
  • 38. Resumão ● Não é o mesmo que uma classe com métodos estáticos ● Classe de um único objeto ● Amplamente usada com bibliotecas de logging/debugging ● Controverso, muitas vezes considerado um anti-pattern ● É um inferno para testar!
  • 39. Dependecy Injection "O modelo isola a "lógica" (A lógica da aplicação) da interface do usuário (Inserir e exibir dados), permitindo desenvolver, editar e testar separadamente cada parte." Wikipédia
  • 40. show me CODE
  • 41. Resumão ● Esse cara sou eu (DI)! ● Chega a nem ser um padrão de tão simples! ● Torna seu código testável e auxilia no desacoplamento do código (avoid no new) ● DIC ajudam na instância de objetos com multiplas depêndecias (aninhados) ●
  • 42. Tá, chega, cansei de legos...
  • 43. ma vamo lá, só mais um pouco... e o que isso me ajuda no fim?
  • 44. a se tornar um OO star! m/
  • 45. com código para orgulhar a família ● ■ testável desacoplado ● reutilizável ● ● extensível ● orientado a legível interfaces
  • 46. mas.... tenha em mente que Design Patterns não é a RESPOSTA para tudo!
  • 47. mas que possívelmente alguém já passou pelo mesmo problema que você
  • 48. design patterns estão sendo criados todos dias...
  • 49. você também pode criar os seus! Nome: Hack Thursday Exemplo: Apresentação de Hoje Contexto: Aplicável todas as quintas Problema: Sede de "conhecimento" Solução: Vir todas as quintas
  • 50.
  • 51. lembre é Orientação a Objetos não a Classes . "Herança pode ser o câncer do seu código!" by Nós