Baixe o app para aproveitar ainda mais
Prévia do material em texto
PADRÕES DE PROJETO DE SOFTWARE Lupa Calc. CCT0763_A1_202003135461_V1 Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. Esses são padrões de projeto GoF estudados em aula, EXCETO: Strategy Facade Adapter Workflow Observer Gabarito Comentado 2. Observando o diagrama de classes abaixo, verificamos a aplicação de um padrão de criação GOF. Qual padrão foi utilizado para organizar as classes? Strategy State Template Method Singleton Abstract Factory https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:diminui(); javascript:aumenta(); javascript:calculadora_on(); javascript:duvidas('772421','7168','1','5674640','1'); javascript:duvidas('1067507','7168','2','5674640','2'); 3. (FESMIP-BA - 2011) Segundo a classificação de Design Patterns apresentada pela GoF, identifique com V os padrões comportamentais e com F, os demais. ( ) Observer. ( ) Iterator. ( ) Façade. ( ) Composite. ( ) Visitor. A alternativa que contém a sequência correta, de cima para baixo, é a V V V V V F V V V F V V F F V V F F V F F F V V V 4. O Padrão de Projeto que define uma Interface para criar um objeto e também é conhecido como "Construtor Virtual" chama-se: Dependency Injection Business Delegate Factory Method Abstract Factory Template Method Gabarito Comentado 5. (CESGRANRIO - 2010 - BACEN - Analista do Banco Central) Um arquiteto de software estuda que padrões de projeto são apropriados para o novo sistema de vendas de uma empresa. Ele deve considerar que o padrão : Builder garante que uma classe seja instanciada somente uma vez, fornecendo também um ponto de acesso global. Bridge separa a construção de um objeto complexo de sua representação, de modo que o mesmo processo de construção possa criar diferentes representações. Template Method utiliza compartilhamento para suportar, eficientemente, grandes quantidades de objetos de granularidade fina. Singleton separa uma abstração de sua implementação, de modo que os dois conceitos possam variar de modo independente. Chain of Responsibility evita o acoplamento entre o remetente de uma solicitação e seu destinatário, dando oportunidade para mais de um objeto tratar a solicitação. Gabarito Comentado https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('118991','7168','3','5674640','3'); javascript:duvidas('784412','7168','4','5674640','4'); javascript:duvidas('879612','7168','5','5674640','5'); javascript:duvidas('2820788','7168','6','5674640','6'); 6. Uma programadora precisa mudar a implementação chamada de uma função em tempo de execução dependendo da entrada de dados. Um dos requisitos importantes é ocultar do usuário desta função a exposição das estruturas de dados complexas, específicas do algoritmo. Entre os conhecidos padrões de Projeto de Software Gang of Four (GoF,1994), qual é o indicado? Template Method. Façade. Strategy. Factory Method. Builder. Explicação: a) Builder Separar a construção de um objeto complexo de sua representação de modo que o mesmo processo de construção possa criar diferentes representações. b) Strategy Definir uma família de algoritmos, encapsular cada uma delas e torná-las intercambiáveis. Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam c) Façade Fornecer uma interface unificada para um conjunto de interfaces em um subsistema. Facade define uma interface de nível mais alto que torna o subsistema mais fácil de ser usado. d) Template Method Definir o esqueleto de um algoritmo em uma operação, postergando alguns passos para as subclasses. Template Method permite que subclasses redefinam certos passo de um algoritmo sem mudar a estrutura do mesmo. Recomendo esta fonte para estudos de Padrões de Projeto: https://brizeno.wordpress.com/padroes/ 7. Especificar os tipos de objetos a serem criados usando uma instância como protótipo e criar novos objetos ao copier este protótipo. Para qual padrão de projeto a afirmação se relaciona? Adapter Memento Nra Abstract Factory Observer https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('593617','7168','7','5674640','7'); 8. (FCC-2011) Os design patterns consistem em conjuntos de classes que um usuário instancia para utilizar seus métodos. Após a chamada ao método, o controle do fluxo da aplicação retorna para o usuário. podem ser modelados utilizando-se a linguagem UML que fornece um meio eficiente de modelar pa- drões de projeto representando-os como colaborações. são aplicações propriamente ditas, normalmente construídas pela integração de diversos frameworks. são projetos de arquitetura para um domínio específico de aplicação e sempre trazem componentes predefinidos que envolvem código de programação. são de uso exclusivo em processos de desenvolvimento de soluções orientado a objetos, já que os objetos são a mais adequada abstração para o reúso. https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('118976','7168','8','5674640','8'); PADRÕES DE PROJETO DE SOFTWARE Lupa Calc. CCT0763_A2_202003135461_V1 Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. Acerca dos padrões de criação e de padrões estruturais, assinale a opção correta. Uma das consequências do uso do padrão Prototype é o aumento no uso de subclasses. São exemplos de padrões estruturais: Adapter, Façade, Proxy, Composite, Decorator e Chain of Responsibility. São participantes do padrão Façade: o cliente, o alvo, o adaptador e o adaptado. O uso do padrão singleton apresenta como consequências uma redução do uso de variáveis globais e uma melhor organização do espaço de nomes de um software orientado a objetos. O padrão adaptador de classe (class adapter) facilita acomodar a adaptação de subclasses de uma classe previamente adaptada. Explicação: Os Padrões de Criação fornecem um guia de como instanciar objetos. Esta ação normalmente envolve decisões dinâmicas para escolher, por exemplo, qual classe instanciar, ou a quais objetos delegar responsabilidade. Esse padrão nos mostra como estruturar e encapsular essas decisões. O padrão de projeto Singleton é um dos padrõesmais conhecidos e extensivamente utilizados em programação orientada a objetos. Está direcionado para as situações onde precisamos manter uma única instancia de uma classe durante toda a execução da aplicação. A sua estrutura é bastante simples, existe apenas uma classe chamada Singleton, que define um método chamado Instance, responsável poder retornar aos clientes à única instancia da classe. 2. Sobre o padrão ¿Builder ¿, escolha a opção que descreve seu(s) objetivo(s): Concatenar a construção de um objeto complexo de sua representação para que o mesmo processo de construção possa criar representações diferentes. Separar a construção de um objeto complexo de sua representação para que o mesmo processo de separação criar representações iguais mas com serviços diferentes. Unir a construção e implementação, de um objeto complexo, de sua representação para que o mesmo processo de instanciação possa criar representações diferentes. Separar a construção de um objeto complexo de sua representação para que o mesmo processo de construção possa criar representações diferentes. Separar a construção de um objeto que seja bem simples de sua representação para que o mesmo processo de construção possa criar representações iguais. Explicação: https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:diminui(); javascript:aumenta(); javascript:calculadora_on(); javascript:duvidas('1032909','7168','1','5674640','1'); javascript:duvidas('1143557','7168','2','5674640','2'); O BUILDER é um Padrão de Criação. É um padrão cuja responsabilidade é a CONSTRUÇÃO Tentam minimizar a carga que os desenvolvedores têm ao ato de criar objetos dentro de um construtor. Isso é comum em desenvolvedores iniciantes. 3. Assinale a afirmativa correta sobre o padrão Builder: Deve-se é embutir no construtor da própria classe a lógica para criação de um objeto ou ainda distribuir a lógica de criação em vários métodos adicionais. é uma abordagem que não facilita a criação de objetos com diferentes configurações e representações, tornando o código dependente a complexidade das classes relacionadas Um dos principais objetivos do padrão Builder é separar o algoritmo de criação de um objeto complexo tanto da especificação, quanto das partes que o compõem. A legibilidade da solução final, ou seja, para entender como um objeto é criado e sob quais condições, fica comprometida Deve-se é separar no construtor da própria classe a lógica para criação de um objeto e concentrar a lógica de criação em uma hierarquia de herança. Explicação: O padrão Builder é um padrão de cuja intenção é a Construção, ou seja, são padrões cuja responsabilidade é a CONSTRUÇÃO O padrão Builder tenta minimizar a carga que os desenvolvedores tem ao ato de criar objetos dentro de um construtor. Isso é comum em desenvolvedores iniciantes. 4. O padrão Prototype é um Padrão de Criação GoF. Com relação aos seus objetivos podemos afirmar que: I- O padrão de projeto Prototype declara um método chamado clone na superclasse abstrata do modelo. II- O padrão Prototype tem a função de tentar minimizar a carga que os desenvolvedores têm ao ato de criar objetos dentro de um construtor. III- O padrão Prototype é bastante útil para guardar o estado de um objeto em determinados momentos. Est(á)ão correta(s) a(s) afirmativa(s): Somente os itens I e III; Somente o item I; Somente o item II; Somente os itens II e III; Somente os itens I e II; Explicação: https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('107785','7168','3','5674640','3'); javascript:duvidas('2951780','7168','4','5674640','4'); O item II está errado porque ela se refere ao padrão Builder. 5. Qual o objetivo do padrão Builder? Assinale a opção INCORRETA. Separar a construção de um objeto complexo da sua representação de modo que o mesmo processo de construção possa criar diferentes representações. Declara um método chamado clone na superclasse abstrata do modelo. É utilizado na instanciação de objetos complexos. Minimizar a carga que os desenvolvedores têm ao ato de criar objetos dentro de um construtor. Atribuir a responsabilidade de criação do objeto complexo a outra classe. Explicação: Essa afirmativa está INCORRETA porque ela se refere ao padrão Prototype. 6. Qual dos padrões GOF abaixo é mais indicado quando necessitamos criar objetos de uma determinada classe, os quais só têm alguns poucos estados possíveis e é melhor copiá-los e aproveitar o seu estado atual do que criar um novo objeto no estado inicial. Singleton Decorator Prototype Builder Abstract Factory 7. Qual padrão garante que uma classe tem somente uma instância e fornece um ponto global de acesso a mesma? Builder. Abstract Factory. Nenhuma das anteriores. Singleton. Factory Method. Explicação: https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('2951767','7168','5','5674640','5'); javascript:duvidas('692427','7168','6','5674640','6'); javascript:duvidas('912951','7168','7','5674640','7'); Há cinco Padrões de Criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton. Esses Padrões de Criação fornecem um guia de como instanciar objetos. Esta ação normalmente envolve decisões dinâmicas para escolher, por exemplo, qual classe instanciar, ou a quais objetos delegar responsabilidade. Esse padrão nos mostra como estruturar e encapsular essas decisões. O padrão de projeto Singleton é um dos padrões mais conhecidos e extensivamente utilizados em programação orientada a objetos. Está direcionado para as situações onde precisamos manter uma única instancia de uma classe durante toda a execução da aplicação. A sua estrutura é bastante simples, existe apenas uma classe chamada Singleton, que define um método chamado Instance, responsável poder retornar aos clientes à única instancia da classe. Na linguagem Java os modificadores states e private devem garantir uma mesma instância para todos os objetos criados e evitar acesso público. 8. Assinale dentre as opções abaixo, qual o padrão de projeto mais conhecidos e extensivamente utilizados em programação orientada a objetos e que está direcionado para as situações onde é preciso manter uma única instancia de uma classe durante toda a execução da aplicação. Prototipe: Composite; Builder; Singleton Decorator; https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('728112','7168','8','5674640','8'); PADRÕES DE PROJETO DE SOFTWARE Lupa Calc. CCT0763_A3_202003135461_V1 Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. O padrão Bridger é um Padrão Estrutural GoF. Quando devemos usar esse padrão? Assinale a opção INCORRAETA. Quando houver uma interface que permita a implementação estática; Quando implementações são compartilhadas entre objetos desconhecidos do cliente; Quando tanto abstrações como implementações precisarem ser capazes desuportar extensão através de herança; Quando for necessário evitar uma ligação permanente entre a interface e implementação; Quando alterações na implementação não puderem afetar clientes; Explicação: Essa afirmativa está INCORRETA, porque ela se refere ao padrão Adapter. 2. (CESGRANRIO - 2009) Ao consultar informações a respeito dos padrões de projeto Adapter e Bridge, um Analista de Sistemas identificou uma afirmativa INCORRETA. Assinale-a. O Adapter é inferior ao Bridge porque não evita a replicação de código. O foco do Adapter é a solução de incompatibilidades entre duas interfaces existentes. Ambos são padrões estruturais que possuem alguns atributos em comum. Ambos promovem a flexibilidade ao fornecer um nível de endereçamento indireto para outro objeto. O Bridge estabelece uma ponte entre uma abstração e suas possíveis implementações. Explicação: A família de padrões GoF, está divida em três grupos principais de padrões: Padrões de Criação, Padrões Estruturais e Padrões Comportamentais. Há cinco padrões de criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton. Há 7 (sete) tipos de padrões estruturais GoF: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy. Há 11 padrões comportamentais GoF: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:diminui(); javascript:aumenta(); javascript:calculadora_on(); javascript:duvidas('2952048','7168','1','5674640','1'); javascript:duvidas('119038','7168','2','5674640','2'); Essa opção está errada porque a classe Adapter é alusivo a estrutura, ou seja, estrutural. A ideia é fazer adaptação entre dois recursos. A classe Adapter converte a interface de uma classe em outra interface esperada pelos clientes. Adapter permite a comunicação entre classes que não poderiam trabalhar juntas devido à incompatibilidade de suas interfaces. 3. Construtores em Java definem uma maneira padrão de construir objetos. No entanto, depender de construtores para instanciar objetos pode nos levar a alguns problemas dos quais podemos citar, exceto: Objeto complexo pode necessitar da criação de objetos menores previamente, com certo controle difícil de implementar com construtores A aplicação cliente fica acoplada diretamente a uma implementação concreta para poder usar diretamente o construtor Cliente pode não ter ou não saber todos os dados necessários para instanciar um objeto através de construtores Não é preciso saber a classe concreta do objeto para criá-lo Usando diretamente os métodos construtores não há como limitar o número de instâncias criadas 4. O Padrão de Projeto Estrutural (GOF) que se apresenta com o formato de uma árvore (estrutura de dados) quando é representado por um Diagrama de Objetos (UML) chama-se: TreeView Bridge Composite Decorator Memento 5. Qual padrão desacopla uma abstração de sua implementação de modo que as duas possam variar independentemente? Decorator. Bridge. Proxy. Nenhuma das anteriores. Façade. Explicação: Os Padrões Estruturais GoF contemplam 7 (sete) tipos de padrões: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy. https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('692426','7168','3','5674640','3'); javascript:duvidas('784354','7168','4','5674640','4'); javascript:duvidas('912957','7168','5','5674640','5'); Definem caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua integração e colaboração mutua. Os Padrões Estruturais tratam da composição de classes e objetos para formar estruturas complexas; associados à maneira como classes e objetos são organizados estruturalmente; oferecem formas efetivas para usar conceitos OO como herança e composição, e são abstrações de aspectos estruturais. O padrão Bridge, desacopla uma abstração de sua implementação, de tal forma que os dois possam variar independentemente. 6. Os Padrões de Projeto (GOF) que se apresentam com o formato de uma Lista Encadeada (estrutura de dados) quando são representados por um Diagrama de Objetos (UML) e se classificam, respectivamente, como Padrão de Projeto Estrutural e Padrão de Projeto Comportamental, são conhecidos como: Decorator e Observer Decorator e Chain of Responsibility Chain of Responsibility e Decorator Observer e Decorator Observer e Chain of Responsibility 7. Dentre as opções apresentadas assinale qual o padrão é bastante utilizado para compatibilizar classes implementas por programadores diferentes, ou desenvolvidas em momentos diferentes, ou ainda para unir classes com interfaces diferentes em uma estrutura hierárquica única, sem precisar implementar novamente todas as funcionalidades e interfaces da classe já existente. Padrão Flyweight Padrão Decorator Padrão Adapter Padrão Decorator Padrão Composite Gabarito Comentado 8. Dado o diagrama de classe identifique o padrão GoF estrutual: Proxy Decorator https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('784366','7168','6','5674640','6'); javascript:duvidas('758749','7168','7','5674640','7'); javascript:duvidas('582781','7168','8','5674640','8'); Composite Facade Flyweight Explicação: Os Padrões Estruturais GoF contemplam 7 (sete) tipos de padrões: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy. Composite: Compor objetos em estruturas de árvore para representar hierarquias todo-parte. Composite permite que clientes tratem objetos individuais e composições de objetos de maneira uniforme. PADRÕES DE PROJETO DE SOFTWARE Lupa Calc. CCT0763_A4_202003135461_V1 Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. considerando a classe de projetos GoF assinale a opção cujos padrões de projeto estão todos classificados como Estruturais: singleton; bridge ; protype; decorator ; faça de ; flyweight ; Proxy adapter ; bridge ; protype ¿ decorator ; faça de ; flyweight ; singleton adapter ; bridge ; composite ; decorator ; faça de ; flyweight ; singleton adapter ; bridge ; composite ; decorator ; faça de ; flyweight ; Proxy singleton; bridge ; composite; decorator ; faça de ; flyweight;¿ Proxy Explicação: Há três grupos de padrões GoF: Padrões de Criação, Padrões Estruturais e Padrões Comportamentais. Os padrões estruturais GoF contemplam 7 (sete) tipos de padrões: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy. Os Padrões Estruturais tratam da composição de classes e objetos para formar estruturas complexas; associados à maneira como classes e objetos são organizados estruturalmente; oferecem formas efetivas para usar conceitos OO como herançae composição, e são abstrações de aspectos estruturais. Seu objetivo é definir caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua integração e colaboração mútua. 2. Uma empresa tem, dentre outros, um sistema de vendas e outro de controle de estoque. Supondo que o sistema de vendas necessita utilizar funcionalidades do sistema de controle de estoque, qual padrão deve ser utilizado para que estas funcionalidades sejam disponibilizadas? Fachada Observer Singleton Decorator Fábrica Abstrata Explicação: https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:diminui(); javascript:aumenta(); javascript:calculadora_on(); javascript:duvidas('107780','7168','1','5674640','1'); javascript:duvidas('1078148','7168','2','5674640','2'); Os Padrões Estruturais GoF contemplam 7 (sete) tipos de padrões: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy. Definem caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua integração e colaboração mutua. O padrão Façade (fachada) é um padrão Fachada, ou seja, faz uma fachada única para todas as fachadas, ou seja, Fornece uma interface unificada para um conjunto de objetos que constituem um subsistema.define uma interface a um nível mais elevado, para tornar um subsistema mais fácil de usar. Oferece uma interface única para um conjunto de interfaces de um subsistema. Façade define uma interface de nível mais elevado que torna o subsistema mais fácil de usar. 3. O objetivo do Flyweight é diminuir o consumo de memória, porém deve ser utilizado com cautela. Gamma et al (2000) recomendam sua utilização somente quando todas as condições abaixo forem verdadeiras, EXCETO uma. Qual delas abaixo é essa situação? A aplicação não depende da identidade do objeto. Uma aplicação utiliza um grande número de objetos. Os custos de armazenamento são altos por causa da grande quantidade de objetos. Muitos grupos de objetos podem ser substituídos por relativamente poucos objetos compartilhados, uma vez que estados extrínsecos são removidos. Quando for necessário elaborar um algoritmo ou algo complicado para separar objetos mutáveis de imutáveis; Explicação: Essa afirmativa está incorreta para o padrão Flyweight, porque ela é uma situação em que não deve ser usada, assim como também quando o estado dos objetos não for imutável (é preciso passar o estado mutável como parâmetro e isto pode ser impraticável se o estado consistir de vários objetos).. 4. Estruturar um sistema em subsistemas ajuda a reduzir a complexidade do problema (Gamma et al., 2000). No entanto, um objetivo comum de todos os projetos é minimizar a comunicação e as dependências entre os diferentes subsistemas. Uma das maneiras de contornar esse problema é utilizar o padrão de projeto que qual forneça uma interface única e simplificada para os recursos e facilidades mais gerais de um subsistema. Este padrão de projeto é conhecido como: Composite; Proxy; Façade; Flyweight Decorator Gabarito Comentado https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('2952240','7168','3','5674640','3'); javascript:duvidas('707483','7168','4','5674640','4'); 5. (BNDES - CESGRANRIO 2009) O presidente de uma empresa determinou que fosse disponibilizado um sistema de vendas na Internet. No entanto, o software de controle de estoque que deve ser acessado pela aplicação de vendas é muito antigo e provê uma API (Application Programming Interface) de uso muito complicado. Para que os desenvolvedores possam acessar uma interface mais simples, o arquiteto do sistema pode determinar o uso do padrão de projeto Prototype. Flyweight. Observer. Decorator. Façade. 6. Dado o diagrama de classe identifique o padrão GoF estrutual Decorator Bridge Adapter Proxy Flyweight 7. Quanto às vantagens, assinale a opção INCORRETA sobre o padrão Façade. Havendo mudança em alguma regra de negócio, basta realizar as alterações necessárias na classe Façade; Sempre que for desejável, cria uma interface para um conjunto de objetos com o objetivo de facilitar o uso da aplicação; Quando o tamanho do conjunto de objetos for significativamente menor que a quantidade de vezes em que eles são usados na aplicação; O cliente não precisa conhecer todas as regras de negócio envolvidas com a concessão de um empréstimo; Permite que objetos individuais cuidem de uma única tarefa, deixando que a fachada se encarregue de divulgar as suas operações; Explicação: https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('775706','7168','5','5674640','5'); javascript:duvidas('582797','7168','6','5674640','6'); javascript:duvidas('2952064','7168','7','5674640','7'); Essa afirmativa está incorreta, porque ela se refere ao padrão Flyweight. 8. Que padrão estrutural provê um ponto de atendimento para que outro objeto possa controlar o acesso ao primeiro: Facade Proxy Decorator Flyweight Adapter https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('597631','7168','8','5674640','8'); PADRÕES DE PROJETO DE SOFTWARE Lupa Calc. CCT0763_A5_202003135461_V1 Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. Analise as sentenças abaixo. I - A estrutura do padrão interpreter sugere que a modelagem do problema seja realizada através de uma gramática procedural. II - O padrão Interpreter tem como desvantagem definir uma classe para cada gramática, pois quando se tem muitas gramáticas, são difíceis de manter e administrar. III - No padrão de projeto Template Method as partes que podem variar, conforme a situação, contexto ou problema a ser resolvido, são redefinas nas classes derivadas (concretas). IV - O padrão de projeto Template Method sugere a implementação de um algoritmo fixo em uma superclasse abstrata onde se consegue alterar o comportamento do algoritmo, sem modificar sua estrutura lógica. Marque a opção correta. II - III - IV I - II - IV III - IV I - II - III I - III - IV Gabarito Comentado 2. (CESGRANRIO - 2010) Um dos participantes da equipe de desenvolvimento de um framework deve implementar uma operação em uma das classes desse framework. Seja X o nome dessa classe. Essa operação implementa um algoritmo em particular. Entretanto, há passos desse algoritmo que devem ser implementados pelos usuários do framework através da definição de uma subclasse de X. Sendo assim, qual o padrão de projeto do catálogo GoF (Gang of Four) a ser usado pelo desenvolvedor do framework na implementação da referida operação, dentre os listados a seguir? Singleton. Template Method. Decorator. Interpreter. Observer. Explicação: A família de padrões GoF, está divida em três grupos principais de padrões:Padrões de Criação, Padrões Estruturais e Padrões Comportamentais. Há cinco padrões de criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton. https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:diminui(); javascript:aumenta(); javascript:calculadora_on(); Há 7 (sete) tipos de padrões estruturais GoF: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy. Há 11 padrões comportamentais GoF: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. O Template Method define o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem preenchidos pelas subclasses. Template Method permite que suas subclasses redefinam certos passos de um algoritmo sem mudar sua estrutura. 3. Qual é o padrão GoF comportamental correspondente ao código abaixo? Approver larry = new Director(); Approver sam = new VicePresident(); Approver tammy = new President(); larry.SetSuccessor(sam); sam.SetSuccessor(tammy); // Generate and process purchase requests Purchase p = new Purchase(2034, 350.00, "Assets"); larry.ProcessRequest(p); p = new Purchase(2035, 32590.10, "Project X"); larry.ProcessRequest(p); p = new Purchase(2036, 122100.00, "Project Y"); larry.ProcessRequest(p); ....... Observer State Command Visitor Chain of Responsability Explicação: O padrão Chain of Responsability, compõem objetos em cascata para, através dela, delegar uma requisição até que um objeto a sirva. 4. Marque a única alternativa correta sobre um cenário de aplicação do padrão de projeto Template Method Garantimos que não será possível instanciar mais do que 1(uma) instância de uma determinada classe Armazenamos o estado interno de um objeto para permitir a implementação da operação de desfazer (undo) Permitimos, em tempo de execução, que sejam adicionadas novas operações sobre uma estrutura de dados Implementamos partes invariantes de um algoritmo em uma classe abstrata e deixamos que o restante do código seja implementado nas subclasses Possibilitamos a comunicação entre interfaces incompatíveis https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp 5. Qual padrão evita o acoplamento do remetente de uma solicitação ao receptor e encadeia os objetos receptores passando a solicitação ao longo da cadeia até que um objeto a trate? Command. Nenhuma das anteriores. Observer. Mediator. Chain of Responsability. Explicação: Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. São projetados para organizar, gerenciar e combinar diferentes comportamentos. O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais. O padrão Chain of Responsability, compõem objetos em cascata para, através dela, delegar uma requisição até que um objeto a sirva. 6. A implementação do padrão de projeto Chain of Responsability requer que cada objeto receptor de uma determinada solicitação tenha uma lógica para descrever os tipos de solicitação que é capaz de processar e como passar adiante aquelas que requeiram processamento por outros receptores. A delegação das solicitações pode formar uma árvore de recursão, com um mecanismo especial para inserção de novos receptores no final da cadeia existente. Marque a alternativa que NÃO identifica uma vantagem do padrão de projeto Chain of Responsability. Remetente e receptor não têm conhecimento explícito um do outro. Reduz a interconexão entre os objetos, ao invés de um objeto manter uma lista com todos os receptores candidatos, eles mantém uma referência única para o sucessor; Flexibilidade na atribuição de responsabilidades, ou seja, pode-se mudar a cadeia de objetos em tempo de execução, adicionando ou removendo objetos. As partes invariantes, conforme a situação, contexto ou problema a ser resolvido, podem ser redefinidas em classes abstratas gerando interconexão entre os objetos. Padrão libera um objeto de ter que conhecer qual o outro objeto que trata de uma solicitação. Gabarito Comentado 7. Baseando-se nas necessidades apresentadas do lado direito do quadro abaixo, relacione-as ao padrão adequado a utilização e, em seguida marque a alternativa que corresponde a sequencia numerada correspondente. https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp 4 - 2 - 1 - 3 4 - 3 - 1 - 2 2 - 3 - 4 - 1 3 - 4 - 1 - 2 4 - 1 - 2 - 3 Explicação: Há três grupos de padrões GoF: Padrões de Criação, Padrões Estruturais e Padrões Comportamentais. Há cinco padrões de criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton. 8. A classe Handler é uma classe abstrata, portanto, não pode ser instanciada diretamente. Assim, para montar uma cadeia de objetos é necessário especializá-la em que tipo de classes? Assinale dentre as opções abaixo aquela que está correta. com método púbico; baixa coesão. concretas; alto acoplamento; Generalizada; https://simulado.estacio.br/bdq_simulados_exercicio.asp PADRÕES DE PROJETO DE SOFTWARE Lupa Calc. CCT0763_A6_202003135461_V1 Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. Qual padrão define um objeto que encapsula a forma como um conjunto de objetos interage, promovendo o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente, permitindo variar suas interações independentemente? Command. Mediator. Strategy. Nenhuma das anteriores. State. Explicação: Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. São projetados para organizar, gerenciar e combinar diferentes comportamentos. O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais. O padrão Mediator é um padrão define um objeto que encapsula a forma como um conjunto de objetos interage, promovendo o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente, permitindo variar suas interações independentemente. O padrão Mediator é muito útil para programadores Visual Basic (principalmente das versões 5 e 6), pois ele é um atalho para a falta de herança. Ele é tipicamente usado em formulários em que o mesmo media por seus controle e componentes. 2. Qual padrão usar para fornecer um meio de acessar sequencialmente os elementos de um objeto agregado sem expor a sua representaçãosubjacente? Nenhuma das anteriores. Chain of Responsability. Iterator. Mediator. Visitor. https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:diminui(); javascript:aumenta(); javascript:calculadora_on(); javascript:duvidas('912965','7168','1','5674640','1'); javascript:duvidas('912964','7168','2','5674640','2'); Explicação: Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. São projetados para organizar, gerenciar e combinar diferentes comportamentos. O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais. O padrão Iterator por definição "Prove uma maneira de acessar os elementos de um objeto agregado sequencialmente sem expor sua representação interna.". 3. Definir um objeto que encapsula a forma como um conjunto de objetos interagem. Promove o baixo acoplamento ao evitar que os objetos se refiram uns aos outros diretamente/explicitamente. Qual opção abaixo corresponde à descrição anterior? Intenção do padrão de projeto composite Intenção do padrão de projeto prototype Intenção do padrão de projeto mediator Intenção do padrão de projeto proxy Intenção do padrão de projeto strategy Explicação: Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. São projetados para organizar, gerenciar e combinar diferentes comportamentos. O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais. O padrão Mediator é um padrão define um objeto que encapsula a forma como um conjunto de objetos interage, promovendo o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente, permitindo variar suas interações independentemente. 4. O problema de acessar elementos de coleções, matrizes ou estruturas de dados encadeados é bastante recorrente em programação. Assinale dentre as alternativas abaixo,aquela que oferece uma forma de percorrer este tipo de objeto agregado, sem conhecer seus detalhes de implementação. Padrão Proxy; https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('1034346','7168','3','5674640','3'); javascript:duvidas('735774','7168','4','5674640','4'); Padrão Iterator; Padrão Memento; Padrão Visitor; Padrão Mediator; Gabarito Comentado 5. Qual padrão encapsula uma solicitação como objeto permitindo parametrizar clientes com diferentes solicitações, enfileirar ou fazer log das solicitações e suportar operações que podem ser desfeitas? Observer. State. Nenhuma das anteriores. Mediator. Command. Explicação: Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. São projetados para organizar, gerenciar e combinar diferentes comportamentos. O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais. O padrão Command encapsula uma solicitação como um objeto, permitindo a parametrização de clientes com diferentes solicitações, o enfileiramento e o registro de solicitações e o suporte a operações que possam ser desfeitas. O objetivo do padrão de projeto Command é encapsular chamadas de métodos. As principais aplicabilidades deste padrão de projeto são: permitir fácil inclusão de novos comandos, permitir tratamento de requisições concorrentes, manter histórico de execução de comandos, suportar operações para desfazer comandos e, principalmente, evitar o acoplamento direto entre classes e serviços 6. Qual padrão de projeto GOF é melhor representado pela classe java.sql.ResultSet, a qual possui os métodos next() e hasnext() e é utilizada para percorrer sequencialmente as tuplas que representam o retorno de uma consulta no banco de dados. Interpreter Visitor Command Iterator Decorator https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('912968','7168','5','5674640','5'); javascript:duvidas('890396','7168','6','5674640','6'); Explicação: Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. São projetados para organizar, gerenciar e combinar diferentes comportamentos. O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais O padrão Iterator por definição "Prove uma maneira de acessar os elementos de um objeto agregado sequencialmente sem expor sua representação interna.". 7. Quando encapsulamos requisições de usuários na forma de objetos estamos utilizando o padrão de projeto: Command Strategy State Chain of Responsability Façade Explicação: Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. São projetados para organizar, gerenciar e combinar diferentes comportamentos. O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais. O padrão Command encapsula uma solicitação como um objeto, permitindo a parametrização de clientes com diferentes solicitações, o enfileiramento e o registro de solicitações e o suporte a operações que possam ser desfeitas. O objetivo do padrão de projeto Command é encapsular chamadas de métodos. As principais aplicabilidades deste padrão de projeto são: permitir fácil inclusão de novos comandos, permitir tratamento de requisições concorrentes, manter histórico de execução de comandos, suportar operações para desfazer comandos e, principalmente, evitar o acoplamento direto entre classes e serviços. 8. A definição ¿ Captar e externalizar um estado interno de um objeto, de maneira que esse estado seja restaurado ao objeto em outro momento, sem violar seu encapsulamento (Gamma et al., 2000).¿ Refre-se a que padrão de projeto: https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('890358','7168','7','5674640','7'); javascript:duvidas('115672','7168','8','5674640','8'); Mediator Command Iterator Builder. Memento Explicação: Memento é um padrão comportamental, assim como os seguintes padrões: command, iterator, mediator. O padrão Memento tem como objetivo criar um meio de armazenar informações sobre um objeto, permitindo acessar essas informações tanto para salvar o estado de um objeto específico, como para recuperar, sempre que for necessário. PADRÕES DE PROJETO DE SOFTWARE 7a aula Lupa Exercício: CCT0763_EX_A7_202003135461_V116/09/2021 Aluno(a): MARCIO RICARDO FERREIRA MENDES 2021.3 EAD Disciplina: CCT0763 - PADRÕES DE PROJETO DE SOFTWARE 202003135461 1 Questão O padrão Visitor é um Padrão Comportamental GoF. O objetivo desse padrão é: I- Representar uma operação a ser realizada nos elementos de uma estrutura de objetos; II- Definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados automaticamente; III- permite que você defina uma nova operação sem alterar as classes dos elementos nos quais a operação atua; Est(á)ão correta(s) a(s) afirmativa(s): Somente os itens I e II; Somente o item I; Somente o item III; Somente o item II; Somente os itens I e III; Respondido em 16/09/2021 10:58:29 Explicação: O objetivo do padrão Visitor, de acordo com Gamma et. al, 2000, é representar uma operação a ser realizada nos elementos de uma estrutura de objetos. Visitor permite que você defina uma nova operação sem alterar as classes dos elementos nos quais a operação atua. O item II está incorreto, porque esse é o objetivo do padrão Observer. 2 Questão Qual a diferença entre o padrão Strategy e State? A diferença do Strategy para o State, é que no Strategy eu vou encapsular. A diferença do Strategy para o State, é que no Strategy muda de comportamento em função do seu estado. A diferença do Strategy para o State, é que no Strategy adiciona um comportamento a uma aplicação. A diferença do Strategy para o State, é que no Strategy vou usar objetos para representar estados e polimorfismos. A diferença do Strategy para o State, é que no Strategy vou trabalha apenas com o estado da classe Conectado. Respondido em 16/09/2021 10:58:35 javascript:diminui(); javascript:aumenta(); Explicação: Esta afirmativa está correta porque o padrão Strategy define uma família de algoritmos , encapsula cada um deles , e torna-os intercambiáveis, permitindo assim que os algoritmos variem independentemente dos clientes que os utilizam. Já no padrão State, ele permite a um objeto alterar o seu comportamento quando o seu estado interno mudar. O objeto parecerá ter mudado de classe 3 Questão Qual é o padrão responsável para separar os dados lógicos e as regras de negócio da interface do usuário e o fluxo da aplicação? Chain of Responsibility Controller Bridge MVC Indirection Respondido em 16/09/2021 10:58:40 Explicação: O padrão de arquitetura MVC é uma combinação de padrões centrada no padrão Observer e consiste de três participantes: Model: representa os dados da aplicação e regras de negócio associadas com os dados. Notifica o View sobre alterações. View: é um Observer para o Model. Notifica o Controller sobre eventos iniciados pelo usuário e lê dados do Model. Controller: é um Observer para o View. Encapsula lógica de controle que afeta o Model e seleciona View. O MVC é utilizado em muitos projetos devido à arquitetura que possui, o que possibilita a divisão do projeto em camadas muito bem definidas. Cada uma delas, o Model, o Controller e a View, executa o que lhe é definido e nada mais do que isso. A utilização do padrão MVC trás como benefício isolar as regras de negócios da lógica de apresentação, a interface com o usuário. Isto possibilita a existência de várias interfaces com o usuário que podem ser modificadas sem que haja a necessidade da alteração das regras de negócios, proporcionando assim muito mais flexibilidade e oportunidades de reuso das classes. Uma das características de um padrão de projeto é poder aplicá-lo em sistemas distintos. O padrão MVC pode ser utilizado em vários tipos de projetos como, por exemplo, desktop, web e mobile. 4 Questão Marque a alternativa que está relacionada ao padrão de projeto que é mais apropriado quando o comportamento de um objeto depende do seu estado e ele pode mudar seu comportamento em tempo de execução. Observer Memento State Visitor Strategy Respondido em 16/09/2021 10:58:47 5 Questão Qual padrão define uma família de algoritmos, encapsula cada uma delas e torna-as intercambiáveis, e permite que o algoritmo varie independentemente dos clientes que o utilizam? Visitor. Decorator. Template Method. Nenhuma das anteriores. Strategy. Respondido em 16/09/2021 10:58:52 Explicação: Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. São projetados para organizar, gerenciar e combinar diferentes comportamentos. O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais. O padrão Strategy define uma família de algoritmos , encapsula cada um deles, e torna-os intercambiáveis, permitindo assim que os algoritmos variem independentemente dos clientes que os utilizam. 6 Questão Identifique dentre as opções abaixo, aquela que representa o padrão de projeto comportamental , cuja ideia principal é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído pelo outro, independente do cliente que o utiliza . Decorator; Strategy Visitor; State; Proxi; Respondido em 16/09/2021 10:58:57 Gabarito Comentado 7 Questão https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=4816054380&cod_hist_prova=266852006&pag_voltar=otacka https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=4816054380&cod_hist_prova=266852006&pag_voltar=otacka Marque a alternativa que está relacionada com o padrão de projeto que pode ser utilizado para configurar uma classe com um dentre muitos comportamentos disponíveis. Strategy Visitor State Memento Observer Respondido em 16/09/2021 10:58:59 Explicação: Há três grupos de padrões GoF: Padrões de Criação, Padrões Estruturais e Padrões Comportamentais. Os padrões Comportamentais GoF contemplam 11 (onze) tipos de padrões: Escopo por Classe: Interpreter, Template Method; Escopo por Objeto: Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, e Visitor. O padrão Strategy define uma família de algoritmos , encapsula cada um deles, e torna-os intercambiáveis, permitindo assim que os algoritmos variem independentemente dos clientes que os utilizam. Gabarito Comentado 8 Questão (2016 - COPEVE-UFAL) A adoção de padrões de projeto proporciona uma reutilização estratégica durante o desenvolvimento de software, uma vez que promove o reuso de soluções previamente validadas e notadamente bem conhecidas (reuso de rationale). A figura apresenta um diagrama de classes que modela o controlador responsável por controlar o nível de dificuldade de um jogo eletrônico. Vale salientar que o nível de dificuldade pode ser ajustado em tempo de execução, a partir do perfil de cada jogador. Assinale a alternativa que representa o padrão de projetos que foi utilizado no exemplo apresentado na figura. State, uma vez que este padrão possui o propósito de facilitar mudanças dinâmicas na execução dos métodos. Composite, pois os diversos níveis de dificuldade estão representados através de uma hierarquia bem definida. Observer, uma vez que o controlador precisa monitorar os níveis de dificuldade. Command, uma vez que cada nível de dificuldade representa um comando complementar do jogo, representando, assim, diferentes formas de acionar o jogo. Chain ofResponsability, uma vez que não se sabe a priori qual o nível de dificuldade que será utilizado, variando no decorrer da execução. Respondido em 16/09/2021 10:59:04 Explicação: https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=4816054380&cod_hist_prova=266852006&pag_voltar=otacka https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=4816054380&cod_hist_prova=266852006&pag_voltar=otacka Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. São projetados para organizar, gerenciar e combinar diferentes comportamentos. O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais. O padrão State permite que um objeto altere o seu comportamento quando o seu estado interno muda. O objeto parecerá ter mudado de classe. O padrão encapsula os estados em classes separadas e delega as tarefas para o objeto que representa o estado atual, nós sabemos que os comportamentos mudam juntamento com o estado interno. PADRÕES DE PROJETO DE SOFTWARE Lupa Calc. CCT0763_A8_202003135461_V1 Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. Com relação aos padrões GRASP, assinale a opção correta: A alta coesão (high cohesion) é um padrão utilizado para aprimorar a ligação entre as classes, permitindo que a classe A não dependa de outras classes. Esse padrão é considerado o princípio central e útil em projetos orientados a objetos que utilizam GRASP. O especialista na informação (information expert) associa-se ao mapeamento de responsabilidade em que se procura atribuir responsabilidade à classe que tenha informação necessária para satisfazê-la. O criador (creator) é utilizado para a solução do problema de quem cria a instância de uma classe com objetos do modelo de domínio. Nesse caso, se A registra B, então atribui-se à classe B a responsabilidade de se criar uma instância de A. O acoplamento baixo (low coupling) baseia-se na quantidade de ligações entre as classes e está destinado à atribuição de responsabilidade ao primeiro objeto além da camada de interface com o usuário, que é responsável por receber ou tratar uma mensagem de operação do sistema. O controlador (controller) permite solucionar problemas no controle de criação de instâncias de classes. Nesse sentido, se a classe X contiver dados iniciais da classe Y ou se X usar de maneira muito próxima Y, caberá a X criar instâncias de Y, em que o controller representaria o padrão mais indicado para solucionar esse problema. Explicação: Temos os seguintes Padrões GRASP: Expert (Especialista), Creator (Criador), High Coesion, Low Coupling (Baixo Acoplamento), Controller. Padrões GRASP descrevem princípios fundamentais de atribuição de responsabilidade a objetos. Grupamento de padrões diferente, que tem propostas diferentes dos padrões GoF. Os padrões GRASP são PRINCÍCPIOS, nos quais nós devemos nos basear, para desenvolvimento. Os padrões GRASP se inter-relacionam se misturam e são aplicados nos padrões GoF. Os padrões GRASP vão decidir quem é que vai assumir essa responsabilidade aqui. O objetivo dele é identificar quem vai determinar quem vai ter a responsabilidade, https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:diminui(); javascript:aumenta(); javascript:calculadora_on(); quem é que vai assumir a responsabilidade de um determinado conhecimento ou de uma determinada ação. 2. Os padrões GRASP são PRINCÍCPIOS, nos quais nós devemos nos basear, para o desenvolvimento. A informação necessária para uma tarefa computacional frequentemente está ¿espalhada¿ por vários objetos. Para o exemplo: determinar o total de uma venda requer a colaboração de 3 objetos, em 3 classes diferentes, qual o melhor padrão GRASP deve ser usado? Acoplamento fraco; Controlador; Expert (Especialista da informação); Coesão Alta; Criador; Explicação: Essa resposta está correta porque Expert (Especialista da informação), porque é o padrão mais usado para atribuir responsabilidades. Há muitos experts parciais. Neste caso mensagens são usadas para estabelecer as colaborações. Note que, com o uso do padrão Expert o encapsulamento das classes é mantido. 3. Utilizando a nomenclatura dos padrões GRASP, o padrão Criador assume que tipo de responsabilidade? Assume a responsabilidade de conhecer, pois sua funcionalidade está relacionada com a resposta a seguinte pergunta: Quem deve criar um objeto A? Assume a responsabilidade de fazer, pois sua funcionalidade está relacionada com a resposta a seguinte pergunta: Quem deve criar um objeto A? Assume a responsabilidade de substituir, pois sua funcionalidade está relacionada com a resposta a seguinte pergunta: Quem deve criar um objeto A? Assume a responsabilidade de estimar, pois sua funcionalidade está relacionada com a resposta a seguinte pergunta: Quem deve criar um objeto A? Assume a responsabilidade de julgar, pois sua funcionalidade está relacionada com a resposta a seguinte pergunta: Quem deve criar um objeto A? https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp Explicação: Essa afirmativa está correta porque, utilizando a nomenclatura dos padrões GRASP (Larman, 2007), o padrão Criador assume a responsabilidade de fazer, pois sua funcionalidade está relacionado com a resposta a seguinte pergunta: Quem deve criar um objeto A? Grifa-se, novamente, a palavra quem da pergunta anterior. 4. Nos padrões GRASP (General Responsability Assigment Software Patterns), as responsabilidades de um projeto podem ser divididas em ¿conhecer¿ e ¿fazer¿. Assinale o conceito CORRETO. As responsabilidades ¿fazer¿ estão relacionadas à distribuição das características do sistema entre as classes; No conhecer, eu delego a responsabilidade de quem é que vai ser responsável por criar; No conhecer, eu delego quem é o responsável por saber o estado de uma determinada classe; No fazer, vai demonstrar quem é que vai saber o estado; As responsabilidades ¿conhecer¿ estão relacionadas com a distribuição do comportamento do sistema entre as classes; Explicação: Esse conceito está CORRETO porque: As responsabilidades ¿conhecer¿ estão relacionadas à distribuição das características do sistema entre as classes. As responsabilidades ¿fazer¿ estão relacionadas com a distribuição do comportamento do sistema entre as classes. No fazer, eu delego a responsabilidade de quem é que vai ser responsável por criar. No conhecer, vai demonstrar quem é que vai saber o estado. 5. No GRASP direcionar a ação para a classe que sabe resolvê-la é: Controller Indirection https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp Information Expert Creator Variation Explicação: Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo Acoplamento (Acoplamento Fraco). No Expert (Especialista da informação), o que acontece é que o comportamento está espalhado(estratificado) por toda árvore, em todo o gráfico de classe. Especialista atribuir responsabilidade ao especialista da informação. Especialista na informação é um princípio utilizado para determinar onde delegar responsabilidades. Essas responsabilidades incluem métodos, campos computados, e assim em diante. Ele vai escolher os objetos especialistas para ele receber essas responsabilidades. É o padrão mais usado para atribuir responsabilidades. Benefício: O comportamento fica distribuído entre as classes que têm a informação necessária (classes ¿leves¿). Favorece alta coesão. 6. O que é MELHOR para uma aplicação: acoplamento alto ou acoplamento fraco? Qual a afirmativa está INCORRETA. Um alto acoplamento traz inúmeros problemas para uma aplicação, é consenso entre profissionais da área que todo projeto orientado a objetos deve aumentar o acoplamento entre os artefatos. Um alto acoplamento traz inúmeros problemas para uma aplicação, é consenso entre profissionais da área que todo projeto orientado a objetos deve minimizar o acoplamento entre os artefatos. Um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais aumentar a complexidade da manutenção da aplicação. Um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais a diminuição das chances de reutilização. Um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais a dificuldade de entendimento da solução proposta Explicação: https://simulado.estacio.br/bdq_simulados_exercicio.asp Este item está INCORRETO, porque um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais a dificuldade de entendimento da solução proposta, a diminuição das chances de reutilização, além de aumentar a complexidade da manutenção da aplicação. Portanto, é consenso entre profissionais da área que todo projeto orientado a objetos deve minimizar o acoplamento entre os artefatos. 7. Uma classe com acoplamento forte depende muito de outras classes. Isso pode conduzir os seguintes problemas num sistema: I. As classes são difíceis de aproveitar tendo em vista que sempre que uma classe for utilizada todas as outras das quais ela depende devem estar presentes; II. As alterações nas classes relacionadas podem forçar mudanças locais difíceis de compreender isoladamente. III. Facilidade na compreensão nas mudanças das classes no sistema. IV. Ao fazer alguma mudança numa classe também devem ser feitas mudanças nas outras que estão ligadas a esta classe. Com base nestas informações assinale a alternativa CORRETA. I, III, IV Somente a III. II, III, IV I, II, III I, II, IV 8. Identifique o padrão GRASP utilizado no código abaixo: public class Aviao { public static Object pilotar() { } } public class Navio { public static Object navegar() { } } public class Marujo { Navio.navegar(); } High Coesion Information Expert Indirection Variation Pure Fabrication Explicação: Padrões GRASP: Expert (Especialista), Creator (Criador), High Coesion, Low Coupling (Baixo Acoplamento), Controller. https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp Expert (Especialista da informação) - O que acontece é que o comportamento está espalhado (estratificado) por toda árvore, em todo o gráfico de classe. Especialista na informação é um princípio utilizado para determinar onde delegar responsabilidades. Essas responsabilidades incluem métodos, campos computados, e assim em diante. PADRÕES DE PROJETO DE SOFTWARE Lupa Calc. CCT0763_A9_202003135461_V1 Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. Qual padrão GRASP eu devo utilizar ara atender aos seguintes problemas: Como manter a complexidade sob controle? As classes são difíceis de compreender? As classes são difíceis de reutilizar? Invenção Pura; Especialista da Informação; Indireção; Criador; High Cohesion (Coesão alta); Explicação: Essa resposta está CORRETA, porque a ideia deste padrão consiste em que, é desejável, que eu tenha uma aplicação de baixo acoplamento e alta coesão. Acoplamento fraco e alta coesão. A coesão implica que um componente ou classe encapsule somente os atributos e operações muito relacionadas a si e com a classe do componente ou classe propriamente dito. Além disso, esse padrão também serva para os seguintes problemas: as classes são difíceis de manter, e as classes são frágeis, sendo afetadas por praticamente todas as modificações. 2. O General Responsability Assignment Software Pattener que define a responsabilidade: Comportamentos com o mesmo nome mas que fazem operações deferentes. Trata-se de? High Coesion Information Expert Polymorphis Indirection Pure Fabrication https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:diminui(); javascript:aumenta(); javascript:calculadora_on(); javascript:duvidas('2952893','7168','1','5674640','1'); javascript:duvidas('581891','7168','2','5674640','2'); Explicação: Polymorphism (Polimorfismo) - através de uma interface única, eu possa encapsular vários comportamentos. De acordo com o princípio do polimorfismo, a responsabilidade de definir a variação dos comportamentos com base no tipo é atribuída ao tipo para o qual essa variação ocorre. Isto é conseguido utilizando operações polimórficas. 3. sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: Define-se um método físico na classe PAI. Os métodos nas classes filho são definidos. Neste caso cada método é sobreposto. No caso de uma nova classe filho há necessidade obrigatória devido a estrutura PAI de se definir o método na nova classe. Isto é polimorfismo. Define-se um método abstrato, em uma classe abstrata. Cada classe que herda a classe abstrata implementa o método físico. Dependendo da classe instanciada é executado o método correpondente. Isto é polimorfismo. Define-se um método na classe PAI. Este método é copiado nas classes que herdam a classe PAI. Isto é polimorfismo. Define-se vários métodos. Cada método deve ter uma estrutura IF...THEN...para cada situação. Isto é polimorfismo. Define-se uma estrutura de herança. Automaticamente fica definido uma estrutura de métodos. Isto é polimorfismo Explicação: Ideia do Polimorfismo: através de uma interface única, eu possa encapsular vários comportamentos. O Polimorfismo indica a capacidade de abstrair várias implementações diferentes em uma única interface. Existem dois grandes grupos de Polimorfismo. Um deles é sobecrever um método, ou seja, subscrever métodos com a mesma assinatura. Criaria uma classe ou interface superior, definiria por dentro o método, a classe que herda teria que ter a mesma assinatura, e a partir daí reescrever (overwrite) esse comportamento. O outro não é baseado na assinatura, mais sim na chamada, pelo número de parâmetros, ele poderia escolher. EX. usar em consultor, onde temos um construtor com um construtor com um parâmetro dois, três, diferenciados pela quantidade e/ou tipo de parâmetro, estudado em aulas de programação e linguagem. https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('116815','7168','3','5674640','3');4. Qual padrão GRASP é um padrão de projeto de delegação, o qual deve delegar a outros objetos o serviço que precisa ser feito? Coesão Alta; Variações protegidas; Criador; Controlador; Invenção pura; Explicação: Essa resposta está correta, porque para Larman (2007) um controlador é o primeiro objeto além da camada de interface com o usuário que é responsável por receber ou tratar uma mensagem de operação do sistema. De forma mais simples, este é um padrão de projeto de delegação, pois, normalmente um controlador deve delegar a outros objetos o serviço que precisa ser feito; ele coordena ou controla a atividade. 5. O Paradigma Orientado a Objetos com os padrões de responsabilidades GRASP definem que a melhor técnica de programação POO é: Desenvolver as classes com a menor coesão e menor acoplamento possível. Desenvolver as classes com a maior coesão e maior acoplamento possível. Desenvolver as classes com a menor coesão e maior acoplamento possível. Desenvolver as classes com a maior coesão e menor acoplamento possível. Desenvolver as classes sem coesão e com acoplamento. 6. No padrão GRASP (General Responsability Assigment Software Patterns), a utilização do polimorfismo é recomendada para auxiliar a responder a duas perguntas. Uma delas é: Como criar componentes de software interconectáveis? Qual afirmativa abaixo se refere a essa pergunta? I- Essa pergunta se refere à utilização de comandos condicionais (if-then-esle ou switch por exemplo). II- Essa pergunta se refere a, se surgir uma nova regra ou uma nova variação condicional, ela exigirá a modificação dos comandos, tornando difícil alterar e estender o programa. https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('2953015','7168','4','5674640','4'); javascript:duvidas('581899','7168','5','5674640','5'); javascript:duvidas('2952889','7168','6','5674640','6'); III- Essa pergunta se refere a relacionamentos do tipo cliente-servidor, não necessariamente aplicações em rede, mas com funcionalidades semelhantes, procurando destacar a importância de se projetar uma solução que permita alterar o servidor sem precisar modificar ou afetar a classe cliente. Est(á)ão correta(s) a(s) afirmativa(s): Somente os itens I e II; Somente o item III; Somente o item I; Somente o item II; Somente os itens II e III; Explicação: Os itens I e II estão INCORRETOS porque elas se referem a primeira pergunta do padrão Polimorfismo, que é: Como tratar alternativas com base no tipo? 7. (FCC - 2012) O componente Controller do MVC: Responde às solicitações de queries e encapsula o estado da aplicação. Notifica os componentes de apresentação das mudanças efetuadas nos dados e expõe a funcionalidade da aplicação. Define o comportamento da aplicação, as ações do usuário para atualizar os componentes de dados e seleciona os componentes para exibir respostas de requisições. Envia requisições do usuário para o controlador e recebe dados atualizados dos componentes de acesso a dados. É onde são concentradas todas as regras de negócio da aplicação e o acesso aos dados. Explicação: Temos os seguintes Padrões GRASP: Expert (Especialista), Creator (Criador), High Coesion, Low Coupling (Baixo Acoplamento), Controller. Padrões GRASP descrevem princípios fundamentais de atribuição de responsabilidade a objetos. Controller (Controlador) - Padrão bastante utilizado no MVC, no Servlet. O padrão controlador atribui a responsabilidade de manipular eventos do sistema para uma classe que não seja de interface do usuário (UI) que representa o cenário global ou cenário de caso de uso. Um objeto controlador é um objeto de interface não-usuário, responsável por receber ou manipular um evento do sistema. Atribuir a responsabilidade do tratamento de um evento do sistema a uma classe que representa uma das seguintes escolhas: Representa o ¿sistema¿ todo (controlador fachada) https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('1097080','7168','7','5674640','7'); Representa um tratador oficial de todos os eventos de sistema de um caso de uso (controlador de caso de uso). 8. Com relação à arquitetura MVC, considere: I. O MODEL representa os dados da empresa e as regras de negócio que governam o acesso e atualização destes dados. II. O VIEW acessa os dados da empresa através do MODEL e especifica como esses dados devem ser apresentados. É de responsabilidade do VIEW manter a consistência em sua apresentação, quando o MODEL é alterado. III. O CONTROLLER traduz as interações do VIEW em ações a serem executadas pelo MODEL. Com base na interação do usuário e no resultado das ações do MODEL, o CONTROLLER responde selecionando uma VIEW adequada. IV. Permite uma única VIEW para compartilhar o mesmo modelo de dados corporativos em um fluxo de comunicação sequencial. Está correto o que se afirma em I, II e III, apenas. I, II, III e IV. I e II, apenas. II, III e IV, apenas. II e III, apenas. Explicação: A afirmativa IV é incorreta porque o padrão de arquitetura MVC (Model-View-Controller) é uma combinação de padrões centrada no padrão Observer e consiste de três participantes: Model: representa os dados da aplicação e regras de negócio associadas com os dados. Notifica o View sobre alterações. View: é um Observer para o Model. Notifica o Controller sobre eventos iniciados pelo usuário e lê dados do Model. Controller: é um Observer para o View. Encapsula lógica de controle que afeta o Model e seleciona View. O MVC é utilizado em muitos projetos devido à arquitetura que possui, o que possibilita a divisão do projeto em camadas muito bem definidas. Cada uma delas, o Model, o Controller e a View, executa o que lhe é definido e nada mais do que isso. A utilização do padrão MVC trás como benefício isolar as regras de negócios da lógica de apresentação, a interface com o usuário. Isto possibilita a existência de várias interfaces com o usuário que podem ser modificadas sem que haja a necessidade da alteração das regras de negócios, proporcionando assim muito mais flexibilidade e oportunidades de reuso das classes. https://simulado.estacio.br/bdq_simulados_exercicio.asp javascript:duvidas('1027762','7168','8','5674640','8'); PADRÕES DE PROJETO DE SOFTWARE Lupa Calc. CCT0763_A10_202003135461_V1 Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. Relacione os conceitos de: 1- Utilizado em projetos de software para projetar uma classe que não pertença ao domínio do problema, mas que ofereça ao projeto coesão alta, acoplamento baixo e reuso. 2- O seu objetivo é evitar o acoplamento direto entre objetos. 3- O seu objetivo é evitar que problemas de variação e instabilidade de objetos afetem outras classes. 1- Invenção Pura; 2- Variações Protegidas e 3- Indireção. 1- Variações Protegidas; 2- Invenção Pura e 3- Indireção. 1- Invenção Pura; 2- Indireção e 3- Variações Protegidas. 1- Variações Protegidas; 2- Indireção e 3- Invenção Pura. 1- Indireção; 2- Invenção Pura e 3- Variações Protegidas. Explicação: Essa resposta está correta porque o relaciona corretamente os objetivos de modelo de Invenção Pura, Indireção
Compartilhar