padrões de projeto - github pages · padrões são comuns em várias áreas da engenharia design...

222
1 Padrões de projeto M.Sc. Sílvio Bacalá Jr.

Upload: others

Post on 26-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

1

Padrões de projeto

M.Sc. Sílvio Bacalá Jr.

Page 2: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

2

Design Orientado Objeto Encapsulamento

Herança

Polimorfismo

Design Patterns

Page 3: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

3

Responsabilidades

Booch e Rumbaugh “Responsabilidade é um contrato

ou obrigação de um tipo ou classe.”

Dois tipos de responsabilidades dos objetos:

De conhecimento (knowing): sobre dados privativos e

encapsulados; sobre objetos relacionados; sobre coisas que

pode calcular ou derivar.

De realização (doing): fazer alguma coisa em si mesmo;

iniciar uma ação em outro objeto; controlar e coordenar

atividades em outros objetos.

Responsabilidades são atribuídas aos objetos durante

o design

Page 4: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

4

Responsabilidades e Métodos

A tradução de responsabilidades em classes e

métodos depende da granularidade da

responsabilidade

Métodos são implementados para cumprir

responsabilidades

Uma responsabilidade pode ser cumprida por um único

método ou uma coleção de métodos trabalhando em

conjunto

Responsabilidades do tipo knowing geralmente são

inferidas a partir do modelo conceitual (são os

atributos e relacionamentos)

Page 5: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

5

Responsabilidades e Diagramas de Interação

Diagramas de interação

mostram escolhas ao

atribuir responsabilidades a

objetos

No diagrama de colaboração

ao lado objetos Order têm a

responsabilidade de se

prepararem: método

prepare()

O cumprimento dessa

responsabilidade requer

colaboração com objetos

Order Line e Stock Item

Page 6: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

6

O que é um padrão?

Maneira testada ou documentada de alcançar um objetivo qualquer

Padrões são comuns em várias áreas da engenharia

Design Patterns, ou Padrões de Projeto

Padrões para alcançar objetivos na engenharia de software usando classes e métodos em linguagens orientadas a objeto

Inspirado em "A Pattern Language" de Christopher Alexander, sobre padrões de arquitetura de cidades, casas e prédios

Page 7: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

7

O que é um padrão?

Padrões são um repertório de soluções e princípios

que ajudam os desenvolvedores a criar software e que

são codificados em um formato estruturado

consistindo de

Nome

Problema que soluciona

Solução do problema

O objetivo dos padrões é codificar conhecimento

(knowing) existente de uma forma que possa ser

reaplicado em contextos diferentes

Page 8: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

8

Page 9: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

9

Page 10: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

10

Design Patterns

• Cada padrão descreve

• um problema que ocorre repetidamente no nosso dia-a-dia,

• uma solução para este problema, de forma que se pode usar a solução um milhão de vezes sem faze-la igual uma única vez

• Design patterns suportam reuso orientado a objeto em alto

nível de abstração

• Design patterns provêem um “framework” que guia as

restrições de projetos orientados a objetos.

Por que usar Design Patterns?

Page 11: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

11

Por que aprender padrões?

Aprender com a experiência dos outros

Identificar problemas comuns em engenharia de software e utilizar soluções testadas e bem documentadas

Utilizar soluções que têm um nome: facilita a comunicação, compreensão e documentação

Aprender a programar bem com orientação a objetos

Os 23 padrões de projeto "clássicos" utilizam as melhores práticas em OO para atingir os resultados desejados

Desenvolver software de melhor qualidade

Os padrões utilizam eficientemente polimorfismo, herança, modularidade, composição, abstração para construir código reutilizável, eficiente, de alta coesão e baixo acoplamento

Page 12: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

12

Por que aprender padrões?

Vocabulário comum

Faz o sistema ficar menos complexo ao permitir que se fale em um nível mais alto de abstração

Ajuda na documentação e na aprendizagem

Conhecendo os padrões de projeto torna mais fácil a compreensão de sistemas existentes

"As pessoas que estão aprendendo POO freqüentemente reclamam que os sistemas com os quais trabalham usam herança de forma complexa e que é difícil de seguir o fluxo de controle. Geralmente a causa disto é que eles não entendem os padrões do sistema" [GoF]

Aprender os padrões ajudam um novato a agir mais como um especialista

Page 13: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

13

Arquitetura vs. Design Patterns

Framework de alto nível para estrutura uma aplicação. Ex: “client-servidor usando RPC”

“organização em 3 camadas”

“arquitetura distribuída baseada em SOA”

Define o sistema em termos de componentes computacionais e

suas iterações.

Arquitetura

Design Patterns

Mais baixo nível que arquitetura

Objetos/Interfaces Reusáveis que resolvem problemas internos da aplicação. Exs:

Como posso tornar o sub-sistema X desacoplado do subsistema Y?

Page 14: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

14

Elementos de um padrão

Nome

Problema

Quando aplicar o padrão, em que condições?

Solução

Descrição abstrata de um problema e como usar os

elementos disponíveis (classes e objetos) para solucioná-lo

Conseqüências

Custos e benefícios de se aplicar o padrão

Impacto na flexibilidade, extensibilidade, portabilidade e

eficiência do sistema

Page 15: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

15

Padrões GoF: Formas de classificação

Há várias formas de classificar os padrões. Gamma et al [2] os classifica de duas formas

Por propósito:

1. criação de classes e objetos,

2. alteração da estrutura de um programa,

3. controle do seu comportamento

Por escopo: classe ou objeto

Metsker [1] os classifica em 5 grupos, por intenção (problema a ser solucionado):

1. (1) oferecer uma interface,

2. (2) atribuir uma responsabilidade,

3. (3) realizar a construção de classes ou objetos

4. (4) controlar formas de operação

5. (5) implementar uma extensão para a aplicação Padrões

Page 16: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

16

Introdução: interfaces

Interface: coleção de métodos e dados que uma classe

permite que objetos de outras classes acessem

Implementação: código dentro dos métodos

Interface Java: componente da linguagem que

representa apenas a interface de um objeto

Exigem que classe que implementa a interface ofereça

implementação para seus métodos

Não garante que métodos terão implementação que faça

efetivamente alguma coisa (chaves vazias): stubs.

Page 17: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

17

Design Patterns Space Classificação dos 23 padrões segundo GoF

Criação de

objetos

Relacionamento entre

objetos

Comunicação

entre objetos

Page 18: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

18

Classificação dos padrões GoF segundo Metsker

Page 19: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

19

Page 20: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

20

Page 21: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

21

Page 22: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

22

Page 23: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

23

Page 24: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

24

Page 25: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

25

Page 26: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

26

Page 27: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

27

Page 28: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

28

Page 29: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

29

Page 30: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

30

Page 31: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

31

Page 32: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

32

Page 33: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

33

Page 34: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

34

Page 35: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

35

Page 36: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

36

Page 37: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

37

Page 38: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

38

Page 39: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

39

Page 40: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

40

Page 41: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

41

Page 42: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

42

Page 43: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

43

Page 44: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

44

Page 45: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

45

Page 46: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

46

Page 47: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

47

Page 48: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

48

Page 49: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

49

Page 50: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

50

Page 51: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

51

Page 52: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

52

Page 53: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

53

Page 54: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

54

Page 55: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

55

Page 56: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

56

Page 57: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

57

Page 58: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

58

Page 59: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

59

Page 60: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

60

Page 61: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

61

Page 62: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

62

Page 63: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

63

Page 64: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

64

Page 65: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

65

Page 66: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

66

Page 67: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

67

Page 68: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

68

Page 69: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

69

Page 70: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

70

Page 71: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

71

Page 72: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

72

Page 73: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

73

Page 74: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

74

Page 75: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

75

Page 76: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

76

Page 77: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

77

Page 78: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

78

Page 79: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

79

Page 80: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

80

Page 81: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

81

Page 82: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

82

Page 83: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

83

Page 84: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

84

Page 85: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

85

Page 86: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

86

Page 87: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

87

Page 88: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

88

Page 89: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

89

Page 90: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

90

Page 91: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

91

Page 92: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

92

Page 93: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

93

Page 94: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

94

Page 95: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

95

Page 96: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

96

Page 97: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

97

Page 98: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

98

Page 99: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

99

Page 100: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

100

Page 101: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

101

Page 102: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

102

Page 103: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

103

Page 104: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

104

Page 105: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

105

Page 106: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

106

Page 107: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

107

Page 108: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

108

Page 109: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

109

Page 110: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

110

Page 111: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

111

Page 112: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

112

Page 113: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

113

Page 114: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

114

Page 115: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

115

Page 116: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

116

Page 117: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

117

Page 118: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

118

Page 119: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

119

Page 120: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

120

Page 121: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

121

Page 122: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

122

Page 123: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

123

Page 124: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

124

Page 125: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

125

Page 126: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

126

Page 127: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

127

Page 128: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

128

Page 129: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

129

Page 130: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

130

Page 131: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

131

Page 132: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

132

Page 133: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

133

Page 134: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

134

Page 135: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

135

Page 136: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

136

Page 137: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

137

Page 138: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

138

Page 139: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

139

Page 140: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

140

Page 141: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

141

Page 142: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

142

Page 143: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

143

Page 144: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

144

Page 145: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

145

Page 146: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

146

Page 147: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

147

Page 148: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

148

Page 149: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

149

Page 150: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

150

Page 151: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

151

Page 152: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

152

Page 153: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

153

Page 154: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

154

Page 155: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

155

Page 156: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

156

Page 157: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

157

Page 158: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

158

Page 159: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

159

Page 160: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

160

Page 161: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

161

Page 162: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

162

Page 163: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

163

Page 164: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

164

Page 165: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

165

Page 166: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

166

Page 167: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

167

Page 168: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

168

Page 169: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

169

Page 170: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

170

Page 171: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

171

Page 172: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

172

Page 173: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

173

Page 174: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

174

Page 175: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

175

Page 176: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

176

Page 177: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

177

Page 178: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

178

Page 179: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

179

Page 180: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

180

Page 181: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

181

Page 182: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

182

Page 183: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

183

Page 184: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

184

Page 185: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

185

Page 186: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

186

Page 187: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

187

Page 188: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

188

Page 189: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

189

Page 190: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

190

Page 191: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

191

Page 192: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

192

Page 193: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

193

Page 194: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

194

Page 195: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

195

Page 196: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

196

Page 197: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

197

Page 198: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

198

Page 199: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

199

Page 200: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

200

Page 201: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

201

Page 202: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

202

Page 203: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

203

Page 204: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

204

Page 205: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

205

Page 206: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

206

Page 207: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

207

Page 208: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

208

Page 209: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

209

Page 210: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

210

Page 211: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

211

Page 212: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

212

Page 213: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

213

Page 214: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

214

Page 215: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

215

Page 216: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

216

Page 217: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

217

Page 218: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

218

Page 219: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

219

Page 220: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

220

Page 221: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

221

Conclusões Vimos diversos padrões usados em aplicações OO:

Padrões clássicos GoF, que descrevem soluções para problemas comuns, elaborados

Padrões GRASP, que descrevem aplicação de princípios OO

Padrões e práticas emergentes como injeção de dependências (aplicação de uma prática GRASP) e aspectos (extensão do OO)

Aprenda a usar os padrões clássicos e encurte o tempo para ganhar tornar-se um programador experiente!

Vários outros padrões existem e serão inventados

Alguns sobreviverão por muito tempo, outros não

Catalogue suas soluções e crie seus próprios padrões!

Page 222: Padrões de projeto - GitHub Pages · Padrões são comuns em várias áreas da engenharia Design Patterns, ou Padrões de Projeto Padrões para alcançar objetivos na engenharia

222