Baixe o app para aproveitar ainda mais
Prévia do material em texto
AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com FUNDAMENTOS DE PADRÕES DE PROJETO DE SOFTWARE AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Os padrões são soluções reutilizáveis para problemas reincidentes que ocorrem durante o desenvolvimento de software. • O que é um padrão?. Um PADRÃO é uma descrição nomeada de um problema e uma solução que pode ser aplicado em novos contextos. • Muitos padrões fornecem orientação sobre a atribuição de responsabilidades a objetos, dada uma categoria específica de problemas. • A UML define responsabilidade como um contrato. As responsabilidades estão relacionadas com as obrigações de um objeto em termos de comportamento. AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com “Cada padrão descreve um problema que ocorre frequentemente em seu ambiente, e então descreve o núcleo de uma solução para o problema, de maneira que você possa usar esta solução um milhão de vezes, sem fazê-la do mesmo jeito duas vezes.” Christopher Alexander (Arquiteto e Urbanista), 1977 “Um padrão é a abstração de uma forma concreta que ocorre muitas vezes em contextos não arbitrários específicos.” Riehle and Zullighoven, 1996 “Resolve um problema. É um conceito provado. A solução não é óbvia. Descreve um relacionamento. Os padrões têm um componente humano significativo.” Coplien 1996. AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • As responsabilidades podem ser de dois tipos: • Conhecer: Ter conhecimento sobre dados privados encapsulados. Conhecer objetos relacionados. Conhecer coisas que ele poder derivar ou calcular. • Fazer: Criar um objeto ou executar um cálculo. Iniciar uma ação em outro objeto. Controlar e coordenar atividades em outros objetos. AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Aprendizagem com a experiência dos outros Identificação de problemas comuns de projeto de software Utilização de soluções testadas e bem documentadas Ajuda um novato a agir mais como um experiente • Produção de bons projetos orientados a objetos • Normalmente utilizam boas práticas de OO • Utilizam eficientemente polimorfismo, herança e composição • Vocabulário comum • Uso de soluções que têm nome facilita comunicação • Nível mais alto de abstração Benefícios: AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Ajuda na documentação Uso de soluções que têm um nome facilita a documentação Conhecimento de padrões de projeto torna mais fácil a compreensão de sistemas existentes • Ajuda na conversão de um modelo de análise em um modelo de implementação • Aumento da produtividade Benefícios: AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Como descrever (Elementos essenciais): Nome: Procura descrever o problema, a solução e as consequências em uma ou duas palavras. Problema: Quando aplicar o padrão e em que condições Sumário: Descreve os passos até a solução geral Solução: Descreve os elementos do padrão, seus relacionamentos, responsabilidades e colaborações. Consequências: Apresenta os resultados e a análise das vantagens e desvantagens da aplicação do padrão. Custos e benefícios de se aplicar o padrão. Padrões Relacionados. Informar uma listagem de padrões relacionados. AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Principais padrões de Projeto: Padrões de criação (Creational Patterns) Padrões de Estrura (Structural Patterns) Padrões de Comportamento (Behavioral Patterns) Padrões de Divisão Padrões de Concorrência Padrões GRASP Padrões para design de Interfaces (GUI) Padrões para organização de códigos Padrões para otimização Padrões de Robustez de código Padrões de testes AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Os Padrões de Projeto foram introduzidos para a comunidade OO através de Gamma E., et al, Design Patterns, Addison-Wesley, 1994. • Catálogo de 23 padrões • Não apresenta padrão para um domínio de aplicação específico • Padrões do GoF representam o estado-da- prática em boas construções de projeto orientado a objetos • É comum encontrar no detalhamento de padrões específicos de domínio a ocorrência de algum dos padrões do GoF Padrões GoF (Gang of Four) AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Os padrões são classificados em três tipos): Criacionais (5) Estruturais (7) Comportamentais (11) • Divididos em 2 escopos: Classe: Relacionamentos entre classes e suas subclasses Não é preciso executar nenhum código para determinar ouso dos padrões Estáticos: fixos em tempo de compilação Classificação dos Padrões GoF AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com Objeto: Confia em ponteiros de objetos Dinâmicos: relacionamentos entre objetos podem ser alterados em tempo de execução. Classificação dos Padrões GoF - Escopo AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 1. Abstract Factory 2. Builder 3. Factory Method 4. Prototype 5. Singleton 6. Adapter 7. Bridge 8. Composite 9. Decorator 10.Facade 11.Flyweight 12.Proxy 13.Chain of Responsibility 14.Command 15. Interpreter 16. Iterator 17.Mediator 18.Memento 19.Observer 20.State 21.Strategy 22.Template Method 23.Visitor Padrões de Criação Padrões Estruturais Padrões de Comportamento Catálogo dos 23 padrões GoF AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Criacionais: Associados ao processo de criação de objetos Tornam um sistema independente de como seus objetos são criados, compostos e representados AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Estruturais: Tratam de compor classes e objetos para formar estruturas grandes e complexas Associados à maneira como classes e objetos são organizados estruturalmente Oferecem formas efetivas para usar conceitos OO como herança, agregação e composição Focam na abstração da estrutura AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Comportamentais: Tratam de algoritmos e como atribuir responsabilidades entre objetos Associados à maneira que objetos e classes distribuem suas responsabilidades para realizar uma tarefa Focam na abstração do comportamento AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • POSA – Pattern-Oriented Software Architecture: A System of Patterns • Categoriza os padrões em 3 categorias: Padrões Arquiteturais Padrões de Projeto Idiomas Padrões de Projetos do POSA AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Expressam um esquema de organização estrutural para sistemas de software • Oferecem um conjunto de subsistemas pré-definidos, especifica suas respectivas responsabilidades e inclui regras e diretrizes para organizaras relações entre eles • Exemplos MVC Broker Layer Reflection Padrões Arquiteturais AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Oferece um esquema para refinar os subsistemas ou componentes de um sistema de software ou as relações entre eles. • São considerados padrões de média escala • Exemplos Singleton Observer Adapter Command Strategy Padrões de Projeto AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Padrão de baixo nível específico de uma linguagem de programação • Mostra como se pode implementar um dado componente/classe ou interação entre componentes/classes usando os recursos de uma LP • Exemplos • Singleton em C++ ou em Java • Counted Pointer: gerência de memória em C++ Idiomas AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • MVC: Um dos padrões mais conhecidos para interação com o usuário • Divide a aplicação em três partes fundamentais: Model – Representa os dados da aplicação e as regras de negócio View – Representa a interpretação visual do modelo pelo usuário Controller - Responsável por mediar a interação usuário-aplicação • O padrão foi originalmente criado em 1978 Desde então diversas variações foram criadas para acompanhar novas demandas na iteração com o usuário (UI) Padrão MVC(Model-View-Controller) AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com • Responsabilidades: Controller: Recebe dados de Usuário (ex.: teclado) e possui lógica de apresentação View: mostra projeções (saída) sobre os dados do modelo Model: representação dos dados e regras de negócios Padrão MVC Original AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com Descrição: 1. O usuário faz requisições por dados ou ações sobre os dados do modelo ao Controller. 2. O Controller recebe as requisições e repassa para o objeto apropriado do Model para atendê-la. 3. O Model faz as operações sobre os dados e retorna algum tipo de informação ao Controller, que por sua vez devolve informações para objetos na camada de apresentação. 4. Atualizações no Model são avisadas ao View. Interação (em camadas) no MVC Presentation Model Controller View Business Model input output notificação notificação C . A p resen tação C . N egó cio 1 2 3 4 AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 1. Construir um projeto em Java no IDE (Netbeans, Eclipse) usando Java Sever Face e PrimeFaces. Crie uma classe Aluno no MySQL. O projeto deve permitir visualizar o funcionamento do padrão MVC usando uma CRUD da classe Aluno. 2. Em uma aplicação web desenvolvida com Java em três camadas utilizando o padrão MVC, as classes Servlet é representada em qual componente ? (A) Controller. (B) View e model. (C) Controller e model. (D) model. (E) View 3. Em uma aplicação web desenvolvida com Java em três camadas utilizando o padrão MVC, as classes no padrão DAO é representada em qual componente ? (A) Controller (B) View e model (C) Controller e model (D) Model (E) View Padrão MVC - Exercícios AULA 3 PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 4. Paulo está desenvolvendo uma aplicação web com Java que utiliza o padrão MVC. Nessa aplicação, criou as páginas HTML, arquivos CSS e validadores JavaScript do componente View e, em seguida passou à criação do componente Controller. Nesse componente do MVC, o tipo de classe apropriada que Paulo deve criar é 4. (A) BOAbstract .- Business Object (B) Servlet. (C) JSP. 5. (D) DAO - Data Access Object. (E) VO – Value Object. 5. Em uma aplicação web desenvolvida com Java em três camadas utilizando o padrão MVC, as servlets e as classes no padrão DAO são representadas, respectivamente, nos componentes? (A) Controller e View (B) View e model (C) Controller e model (D) Model e Controller (E) View e Controller Padrão MVC - Exercícios
Compartilhar