Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução a Padrões Professor: Baldoino Santos Neto Agradecimento dos Slides: Hyggo Almeida Instituto de Computação – UFAL O que vimos na última aula? n Introdução a padrões ¨ O que são? ¨ Por que utilizá-los? n Padrões GRASP ¨ O que são? ¨ Quais serão apresentados na disciplina? GRASP 2 Instituto de Computação – UFAL Motivação para o uso de padrões de software n Problemas no desenvolvimento de software se repetem n Bons desenvolvedores... aplicam boas soluções... n Por que não reutilizar as boas soluções em outros projetos??? n ...surgem os padrões de software!!! n Tópicos avançados??? ¨ Devem “estar na cabeça” de vocês desde o princípio!!! GRASP 3 Instituto de Computação – UFAL O que são padrões de software? n Um padrão de software é… ¨ a descrição de um problema que ocorre com frequência ¨ a base de uma solução para este problema n Reutilização em inúmeros projetos n Solução elegante e adaptável n Reutilização de ideias... não de código! n Somatório das experiências dos maiores projetistas de orientação a objetos n “Gangue dos quatro”... ¨ Catálogo de padrões de 1995 GRASP 4 Instituto de Computação – UFAL Classificação de Padrões de Software n Padrões de análise n Padrões de testes n Padrões de negócio n Padrões pedagógicos n Padrões arquiteturais n Padrões de Projeto (Design Patterns) ¨ Iniciaram a febre de padrões ¨ Serão apresentados neste curso!!! GRASP 5 Instituto de Computação – UFAL Classificação de Padrões de Software n Padrões de análise n Padrões de testes n Padrões de negócio n Padrões pedagógicos n Padrões arquiteturais n Padrões de Projeto (Design Patterns) ¨ Iniciaram a febre de padrões ¨ Serão apresentados neste curso!!! GRASP 6 Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Nome n Problema n Solução n Consequências GRASP 7 Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Nome ¨ Deve ser sugestivo/representativo do problema ou solução n Apenas pelo nome, sabe-se a “natureza” do padrão... GRASP 8 Que padrão deve ser utilizado para que se tenha apenas uma instância de uma classe? Singleton Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Nome ¨ Permite documentar código n Evita longas descrições... GRASP 9 /** Nesta classe implementa-se o • padrão Singleton… • @author Baldoino • @version 1.0 */ public class Calendar{ … /** Nesta classe utiliza-se um construtor * privado, com um método estático que * retorna uma a única instância desta * classe, * sincronizado para evitar que outra * instância seja recuperada por outra * linha de execução... * @author Baldoino * @version 1.0 */ public class Calendar{ … Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Nome ¨ “Todo mundo conhece os padrões” n Nomes padronizados em inglês n Independente da equipe, estabelece-se comunicação de alto nível GRASP 10 Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Problema ¨ Quando aplicar o padrão? n Em que situações o padrão pode ser aplicado? n Em que situações o padrão traz flexibilidade/elegância ao projeto? n Quando não utilizá-lo? GRASP 11 Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Problema ¨ Descreve o problema e o contexto n Eis o problema que motiva a utilização do padrão!!! n O seu problema é similar ao descrito no padrão??? ¨ Se sim, basta uma adaptação da solução!!! GRASP 12 Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Problema ¨ Descreve condições que podem requerer o uso do padrão n Em que condições o padrão deve ser utilizado? ¨ Como evitar este macarrão? Padrão X!!! ¨ Como flexibilizar a hierarquia de classes? Padrão Y!!! GRASP 13 Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Problema ¨ Exemplos específicos de aplicação n Como definir uma instância única de uma classe??? n Como representar algoritmos como objetos??? GRASP 14 Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Solução ¨ Descreve os elementos que compõem o projeto da solução, suas responsabilidades e colaborações n Modelo conceitual n Diagrama de Classes GRASP 15 Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Solução ¨ Não descreve uma implementação concreta, apenas um modelo genérico para que possa ser reutilizado n Dependendo do seu problema, deverá ser adaptado n Tem-se um exemplo de solução, mas apenas para guiar o reúso GRASP 16 Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Consequências ¨ Resultados da utilização do padrão n “O que se ganha com isso?” n “Ruim com ele? Pior sem ele!!!” GRASP 17 Instituto de Computação – UFAL Elementos Essenciais de um Padrão de Software n Consequências ¨ Vantagens e desvantagens n Visão crítica: “o que se perde?” n Análise de impactos sobre: ¨ Flexibilidade ¨ Extensibilidade ¨ Reúso ¨ Desempenho ¨ ... GRASP 18 Instituto de Computação – UFAL Entendido??? n Padrões ¨ O que são? ¨ Para que servem? ¨ Como são apresentados? GRASP 19 Instituto de Computação – UFAL GRASP GRASP 20 General Responsibility Assignment Software Patterns Instituto de Computação – UFAL Atribuição de responsabilidades??? n Sistema OO é composto de objetos relacionados ¨ Troca de mensagens ¨ Mensagens representadas por métodos ¨ Métodos representam acoplamento ¨ De quem é a responsabilidade de implementar um determinado método? ¨ Responsabilidades bem distribuídas = menor acoplamento ¨ Menor acoplamento = Maior flexibilidade!!! GRASP 21 Instituto de Computação – UFAL Atribuição de responsabilidades??? n GRASP ¨ General Responsibilities Assignment Software Patterns ¨ Padrões definidos por Craig Larman ¨ Atribuição de responsabilidades de n fazer algo ¨ A si mesmo ¨ a outros objetos n Conhecer algo ¨ dados encapsulados ¨ objetos relacionados n Responsabilidade é diferente de método ¨ Métodos são usados para implementar responsabilidades GRASP 22 Instituto de Computação – UFAL Quais padrões GRASP serão estudados??? n Padrões para atribuição de responsabilidades ¨ Expert n Quem é o especialista da informação? ¨ Creator n Quem deve criar uma determinada instância? ¨ Baixo acoplamento (Low Coupling) n Como diminuir o acoplamento entre as classes? ¨ Alta coesão (High Cohesion) n Como aumentar a coesão no sistema? GRASP 23 Instituto de Computação – UFAL Dúvidas? ? GRASP 24
Compartilhar