Palestra de Design Patterns sob o ponto de vista arquitetônico, apresentando diferentes tipos de paradigmas e princípios, como o GoF, ISO, GRASP, SOLID, MVC e Aspect.
2. EVANDRO VENANCIO - DESIGN PATTERNS
sobre padrões
É sobre solução
O padrão propõe uma solução para problemas corriqueiros
É sobre reuso
O padrão pode ser aplicado em diversas circunstâncias
É sobre comunicação
O padrão proporciona um entendimento comum entre as pessoas
É sobre organização
O padrão dá sentido as diferenças do universo
É sobre entendimento
Aprender o padrão é aprender como lidar com os problemas
3. EVANDRO VENANCIO - DESIGN PATTERNS
exemplo de padrões
Português, espanhol, inglês, grego
O entendimento das línguas resolve o problema de Babel
Real, dólar, libra, euro, yen
A moeda utilizada em um país é uma espécie de padrão
Código civil, criminal, penal
As diversas leis descrevem os nossos direitos e deveres
Dias, semanas, meses
O ano é organizado e classificado de inúmeras formas
Rock, pop, metal, blues, erudito, new age
Os estilos musicais definem um padrão muito bem estabelecido
4. EVANDRO VENANCIO - DESIGN PATTERNS
padronizando o mundo
ISO
International Organization for Standarlization
Fundada em 1947
Em Genebra, na Suiça
Aprovação e documentação
De normas técnicas, classificação e normas de procedimento
No Brasil: ABNT
Associação Brasileira de Normas Técnicas
No EUA: ANSI
American National Standarts Institute
5. EVANDRO VENANCIO - DESIGN PATTERNS
normas ISO em software
ISO/IEEE 1471 e ISO/IEC 42010
Descreve o arquiteto e a arquitetura de software
ISO/IEC 19501
Descreve a UML como um padrão gráfico para modelagem
ISO/IEC 9126
Requisitos e qualidade de software
ISO/IEC 12207
Processo para ciclo de vida do desenvolvimento (ALM)
E muito mais!
C, C++, VRLM, segurança em TI, gerenciamento de serviços
6. EVANDRO VENANCIO - DESIGN PATTERNS
paradigma OO: a revolução
Motivação
Abstração de conceitos do mundo real
Aplicação
Inteligência Artificial, Linguística e Softwares
Implementação da POO
Conjunto de classes que definem objetos de um sistema
Conceitos chaves
Classe, herança, interface, pacote, polimorfismo, mensagem
Linguagens populares
C++, C#, Java, Python, Ruby, SmallTalk, PHP 4
7. EVANDRO VENANCIO - DESIGN PATTERNS
padrões de projetos
É sobre arquitetura
Utilizar, especificar e definir padrões como solução
Christopher Alexander
Aparece pela primeira vez em 1970 em seus livros
Encapsulamento
Um padrão encapsula um problema/solução bem definida
Generalidade
Permitir a construção de outras realizações a partir deste padrão
Abstração
Representam abstrações da experiência empírica
8. EVANDRO VENANCIO - DESIGN PATTERNS
formato de um padrão
Nome
Uma descrição da solução, mais do que do problema
Exemplo
Figuras, diagramas ou descrições que ilustrem um protótipo
Contexto
A descrição das situações sob as quais o padrão se aplica
Problema
Descrição das forças e restrições e como elas interagem.
Solução
Descreve como construir artefatos de acordo com o padrão
9. EVANDRO VENANCIO - DESIGN PATTERNS
GoF: Gang of Four
Quem são?
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Problemas semelhantes
Soluções ainda mais
Make It Simple
Os padrões devem ser simples e facilmente implementados
Não reescreva código!
Evita que o código seja duplicado e facilita a manutenção
É sobre Interfaces
São os contratos que definem a flexibilidade dos padrões
10. EVANDRO VENANCIO - DESIGN PATTERNS
GoF: tipos de padrões
Criação
Sistemas independentes de como seus objetos são criados
Estruturais
Forma como as classes e objetos formam estrutura maiores.
Comportamentais
Algoritmo e atribuição de responsabilidades entre os objetos.
Ao todos são 23 padrões
Devidamente especificados e aceitos na comunidade.
11. EVANDRO VENANCIO - DESIGN PATTERNS
padrões de criação
Abstract Factory
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Builder
Soluções ainda mais
Factory Method
Os padrões devem ser simples e facilmente implementados
Prototype
Evita que o código seja duplicado e facilita a manutenção
Singleton
São os contratos que definem a flexibilidade dos padrões
12. EVANDRO VENANCIO - DESIGN PATTERNS
padrões estruturais
Adapter
Abstração de conceitos do mundo real
Bridge
Inteligência Artificial, Linguística e Softwares
Composite
Conjunto de classes que definem objetos de um sistema
Decorator
Classe, herança, interface, pacote, polimorfismo, mensagem
Façade
C++, C#, Java, Python, Ruby, SmallTalk, PHP 4
13. EVANDRO VENANCIO - DESIGN PATTERNS
padrões comportamentais
Command
Utilizar, especificar e definir padrões como solução
Interpreter
Aparece pela primeira vez em 1970 em seus livros
Mediator
Um padrão encapsula um problema/solução bem definida
Observer
Permitir a construção de outras realizações a partir deste padrão
Strategy
Representam abstrações da experiência empírica
14. EVANDRO VENANCIO - DESIGN PATTERNS
GRASP
Guia para atribuição de responsabilidade
General Responsibility Assignment Software Patterns
Creator
Figuras, diagramas ou descrições que ilustrem um protótipo
Expert
A descrição das situações sob as quais o padrão se aplica
Controller
Descrição das forças e restrições e como elas interagem.
Low Coupling
Descreve como construir artefatos de acordo com o padrão
15. EVANDRO VENANCIO - DESIGN PATTERNS
High Cohesion
O entendimento das línguas resolve o problema de Babel
Polymorphism
A moeda utilizada em um país é uma espécie de padrão
Pure Fabrication
As diversas leis descrevem os nossos direitos e deveres
Indirection
O ano é organizado e classificado de inúmeras formas
Protected Variations
Os estilos musicais definem um padrão muito bem estabelecido
16. EVANDRO VENANCIO - DESIGN PATTERNS
SOLID
Single responsibility principle
International Organization for Standarlization
Open/closed principle
Em Genebra, na Suiça
Liskov substitution principle
De normas técnicas, classificação e normas de procedimento
Interface segregation principle
Associação Brasileira de Normas Técnicas
Dependency inversion principle
American National Standarts Institute
17. EVANDRO VENANCIO - DESIGN PATTERNS
técnicas e princípios
DRY
Don’t repeat yourself
MVC
Soluções ainda mais
MVVM
Os padrões devem ser simples e facilmente implementados
KISS Principle
Keep it simples, Stupid!
BDD/TDD
São os contratos que definem a flexibilidade dos padrões
18. EVANDRO VENANCIO - DESIGN PATTERNS
POO Separation Of Concerns
Aspect-oriented programming
rão propõe uma solução para problemas corriqueiros
Role-oriented programming
O padrão pode ser aplicado em diversas circunstâncias
Subject-oriented programming
O padrão proporciona um entendimento comum entre as pessoas
19. EVANDRO VENANCIO - DESIGN PATTERNS
outros paradigmas != OO
Imperativo
Abstração de conceitos do mundo real
Estruturado
Inteligência Artificial, Linguística e Softwares
Funcional
Conjunto de classes que definem objetos de um sistema
Procedural
Classe, herança, interface, pacote, polimorfismo, mensagem
Event-Driven
C++, C#, Java, Python, Ruby, SmallTalk, PHP 4
20. EVANDRO VENANCIO - DESIGN PATTERNS
Declarativa
Utilizar, especificar e definir padrões como solução
Automata-based programming
Aparece pela primeira vez em 1970 em seus livros