Prévia do material em texto
Material 51: Engenharia de Software - Padrões de Projeto Questão 1: O que são padrões de projeto (design patterns) em engenharia de software? a) Modelos de banco de dados. b) Soluções reutilizáveis para problemas recorrentes de projeto de software orientado a objetos, que visam melhorar a flexibilidade, a manutenibilidade e a reusabilidade do código. c) Linguagens de programação. d) Metodologias de desenvolvimento de software. e) Diagramas UML. Resposta: b) Questão 2: Quais as três principais categorias de padrões de projeto Gang of Four (GoF)? Resposta: Os padrões de projeto GoF (definidos no livro "Design Patterns: Elements of Reusable Object-Oriented Software") são classificados em três categorias principais: 1. Criacionais (Creational): Tratam da criação de objetos, abstraindo o processo de instanciação e tornando o sistema mais independente da forma como seus objetos são criados, compostos e representados. Exemplos: Abstract Factory, Factory Method, Singleton, Builder, Prototype. 2. Estruturais (Structural): Tratam da composição de classes e objetos para formar estruturas maiores, simplificando o design e identificando relações entre entidades. Exemplos: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy. 3. Comportamentais (Behavioral): Tratam da interação e da responsabilidade entre objetos, definindo padrões de comunicação e algoritmos. Exemplos: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor. Questão 3: Qual padrão de projeto GoF garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela? a) Factory Method b) Abstract Factory c) Singleton d) Observer e) Strategy Resposta: c) Questão 4: Qual padrão de projeto GoF define uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas? a) Factory Method b) Abstract Factory c) Singleton d) Builder e) Prototype Resposta: b) Questão 5: Qual padrão de projeto GoF permite que um objeto altere seu comportamento quando seu estado interno muda? a) Strategy b) State c) Observer d) Template Method e) Command Resposta: b) Questão 6: Qual padrão de projeto GoF define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis? a) State b) Observer c) Strategy d) Template Method e) Command Resposta: c) Questão 7: Qual padrão de projeto GoF define uma dependência um-para-muitos entre objetos, de modo que, quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente? a) Strategy b) State c) Observer d) Template Method e) Command Resposta: c) Questão 8: Descreva, em até 5 linhas, o padrão de projeto Factory Method. Resposta: O padrão Factory Method é um padrão criacional que define uma interface (método fábrica) para criar objetos, mas permite que as subclasses decidam qual classe instanciar. Ele delega a responsabilidade de instanciação para as subclasses, promovendo o desacoplamento entre o código cliente (que usa o objeto) e a classe concreta do objeto criado. É útil quando a classe do objeto a ser criado pode variar ou quando se deseja centralizar a lógica de criação. Questão 9: Explique o padrão de projeto Adapter. Resposta: O padrão Adapter (também conhecido como Wrapper) é um padrão estrutural que permite que interfaces incompatíveis trabalhem juntas. Ele converte a interface de uma classe existente em outra interface esperada pelo cliente, sem modificar a classe original. É como um adaptador de tomada: permite que um dispositivo com um tipo de plugue se conecte a uma tomada com um formato diferente. O Adapter é útil para integrar sistemas legados, bibliotecas de terceiros ou classes com interfaces diferentes. Questão 10: O que é o padrão MVC (Model-View-Controller)? Resposta: MVC (Model-View-Controller) é um padrão de arquitetura de software (não é um padrão GoF) amplamente utilizado para desenvolver interfaces de usuário que divide a aplicação em três componentes interconectados: • Model (Modelo): Representa os dados da aplicação e a lógica de negócio. É responsável por acessar e manipular os dados (ex: banco de dados). • View (Visão): Responsável pela apresentação dos dados ao usuário (interface gráfica). Exibe os dados do Model e permite a interação do usuário. • Controller (Controlador): Recebe as entradas do usuário (através da View), processa- as, atualiza o Model (se necessário) e escolhe a View a ser exibida. Atua como intermediário entre o Model e a View. O MVC promove a separação de responsabilidades, facilitando a manutenção, o teste e a reutilização do código.