Historia da enfermagem
Design com aplicações em Java
Helder da Rocha (helder.darocha@gmail.com)
Objetivos
• Apresentar cada um dos 23 padrões clássicos (catálogo do ´Gang of Four´) descrevendo [2][GoF]
• • • • • O problema que solucionam A solução Diagramas UML Exemplos em Java Aplicações típicas
• Apresentar os 9 padrões de atribuições de responsabilidade (GRASP) [4][Larman] • Apresentar 2 padrões emergentes
• Injeção de dependências (aplicação do GRASP Indirection) • Aspectos
2
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 Design*
• 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
* Ou ainda Padrões de Projeto, embora algo se perca nesta tradução!!
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
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)
5
Responsabilidades e Diagramas de Interação
• Diagramas