Padrões de projeto 1



Documentos relacionados
J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha

1Introdução Helder da Rocha

Padrões. Projeto (Design) de Software

Projeto de software Estrutura do software e arquitetura SWEBOK

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW

2 Engenharia de Software

Programação Orientada a Objetos. Padrões de Criação

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Padrões de Projeto de Software Orientado a Objetos

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Prof. Me. Marcos Echevarria

Modelagemde Software Orientadaa Objetos com UML

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

UML - Unified Modeling Language

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos

Padrões clássicos ou padrões GoF O livro "Design Patterns (1994) de Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões de

UML & Padrões Aula 7. UML & Padrões - Profª Kelly C C Silva

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Engenharia de Software na Prática Hélio Engholm Jr.

Análise e Projeto Orientados por Objetos

Felipe Denis M. de Oliveira. Fonte: Alice e Carlos Rodrigo (Internet)

Modelagem OO com UML. Vítor E. Silva Souza ~ vitorsouza

Curso - Padrões de Projeto Módulo 1: Introdução

Engenharia de Software I: Análise e Projeto de Software Usando UML

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Tópicos Avançados em Engenharia de Software

Arquitetura de Software

Categorias de Padrões

Engenharia de Requisitos Estudo de Caso

Separação de Interesses Programação Estruturada e Programação Orientada a Objetos Entrelaçamento de Código Espalhamento de Código

Padrões de Projeto. Prof. Jefersson Alex dos Santos

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Arquitetura de Software. Silvia Regina Vergilio

Programação Orientada a Objeto

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Fase 1: Engenharia de Produto

Padrões de Projeto WEB e o MVC

Disciplina de Banco de Dados Introdução

Introdução à Programação OO

Padrões de Desenho (Design Patterns)

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Desenho de Software. Desenho de Software 1

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

Design Patterns. Viviane Torres da Silva

UML e a Ferramenta Astah. Profa. Reane Franco Goulart

MVC e Camadas - Fragmental Bliki

2 a Lista de Exercícios

Prototype, um Design Patterns de Criação

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

2 Diagrama de Caso de Uso

Modelagem de Processos. Prof.: Fernando Ascani

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Tópicos em Engenharia de Computação

Projeto de Arquitetura

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Análise e Projeto Orientados por Objetos

ENGENHARIA DE SOFTWARE I

Modelagem de Software

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

Modelos de Maturidade. Porque estudar um Modelo de Maturidade? Descrevem as características de processos efetivos;

UML Components - A Simple Process for Specifying

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Padrões de Interação com o Usuário

do grego: arkhé (chefe ou mestre) + tékton (trabalhador ou construtor); tekhne arte ou habilidade;

Decorator Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA

Organização e Arquitetura de Computadores I. de Computadores

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

INF 2125 PROJETO DE SISTEMAS DE SOFTWARE Prof. Carlos J. P. de Lucena

UML Aspectos de projetos em Diagramas de classes

Prof.ª Esp. Talita Pagani

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Fábrica de Software 29/04/2015

Introdução ao Design

Prof.: Clayton Maciel Costa

SABiO: Systematic Approach for Building Ontologies

Feature-Driven Development

Aspectos técnicos do desenvolvimento baseado em componentes

Diagrama de Classes. Diagrama de Classes. Diagramas de Classe. POST Criando Diagramas de Classe. Como construir (2)

Análise e Projeto de Software

Web Services. (Introdução)

Introdução à Engenharia de Software

Teste de Software. Ricardo Argenton Ramos Engenharia de Software I

Estilos Arquiteturais. Estilos Arquiteturais. Exemplos de Estilos Arquiteturais. Estilo: Pipe e Filtros

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Engenharia de Software Engenharia de Requisitos. Análise Orientada a Objetos Prof. Edison A M Morais prof@edison.eti.

Introdução a UML. Hélder Antero Amaral Nunes haanunes@gmail.com

Documento de Arquitetura

PADRÕES DE PROJETO. Cleviton Monteiro

Transcrição:

Padrões de projeto 1

Design Orientado Objeto Encapsulamento Herança Polimorfismo Design Patterns 2

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 3

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) 4

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 Responsabilidades e Diagramas de Interação 5

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 6

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 7

8

9

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 fazela igual Por uma que única usar vez Design Patterns? 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. 10

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 11

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 12

Arquitetura vs. Design Patterns Arquitetura 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. 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? 13

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 14

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 15

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. 16

Design Classificação Patterns dos Space 23 padrões segundo GoF Criação de objetos Relacionamento entre objetos Comunicação entre objetos 17

Classificação dos padrões GoF segundo Metsker 18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

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! 221

222