Prévia do material em texto
PADRÕES DE PROJETO DE SOFTWARE – AULA 5 1a Questão O padrão Classe Handler é um Padrão Comportamental GoF. Qual afirmativa abaixo NÃO corresponde a esse padrão? Fornece um acoplamento mais fraco por evitar a associação explícita do remetente de uma solicitação ao seu receptor e dar a mais de um objeto a oportunidade de tratar a solicitação; A classe Handler é uma classe abstrata, portanto, não pode ser instanciada diretamente; Evita o acoplamento do remetente de uma solicitação ao seu receptor, ao dar a mais de um objeto a oportunidade de tratar a solicitação; Representa um encadeamento de objetos receptores para o processamento de uma série de solicitações diferentes; Encadeia os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a trate; Respondido em 01/04/2020 13:03:17 Explicação: Essa afirmativa NÃO corresponde a Classe Handler está relacionada ao padrão Chain of Responsability, porque ela se refere a padrão Chain of Responsability. 2a Questão Aponte dentre as opções abaixo aquela que corresponde ao padrão que apresenta como uma desvantagens, a obrigatoriedade da definição de ao menos, uma classe para cada regra da gramática, logo, gramáticas com muitas regras são difíceis de manter e administrar. Interpreter; Façade; Template Method; Chain of Responsability; Proxy; Respondido em 01/04/2020 13:03:43 3a Questão 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. concretas; baixa coesão. Generalizada; alto acoplamento; com método púbico; Respondido em 01/04/2020 13:03:41 Gabarito Coment. 4a Questão O padrão GoF Comportamental utilizado: Interpreter Mediator Template Method Iterator Observer Respondido em 01/04/2020 13:03:50 Explicação: Há 11 Padrões Comportamentais GoF: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. O padrão Observer define uma dependência um para muitos, que será necessária para fazer a relação entre um conjunto de dados e várias representações, além de permitir que, quando um objeto mude de estado, todos os dependentes sejam notificados. 5a Questão 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. 2 - 3 - 4 - 1 3 - 4 - 1 - 2 4 - 1 - 2 - 3 4 - 3 - 1 - 2 4 - 2 - 1 - 3 Respondido em 01/04/2020 13:04:20 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. 6a Questão O padrão Chain of Responsability é um Padrão Comportamental GoF. Qual o seu objetivo? Assinale a afirmativa INCORRETA Encadear os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a trate; Fornecer um acoplamento mais fraco por evitar a associação explícita do remetente de uma solicitação ao seu receptor e dar a mais de um objeto a oportunidade de tratar a solicitação; 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; Evitar o acoplamento do remetente de uma solicitação ao seu receptor, ao dar a mais de um objeto a oportunidade de tratar a solicitação; Representar um encadeamento de objetos receptores para o processamento de uma série de solicitações diferentes; Respondido em 01/04/2020 13:04:26 Explicação: Essa afirmativa está relacionada ao padrão Chain of Responsability, porque ela se refere a padrão Classe Hanter. 7a Questão O método Arrays.sort (java.util) recebe como parâmetro um objeto do tipo Comparator que implementa um método compare(a, b) e utiliza-o para definir as regras de ordenação, assim evitamos duplicidade de código permitindo sobrescrita apenas do critério de comparação do algoritmo de ordenação, no qual os outros passos permanecem invariantes. Essa situação exemplifica qual dos padrões GOF abaixo: Template Method Flyweight Builder State Command Respondido em 01/04/2020 13:04:47 8a Questão Aponte dentre as opções colocadas aquela que corresponde a estrutura do padrão que sugere que a modelagem do problema seja realizada através de uma gramática recursiva.. Iterator Interpreter; Template Method; Chain of Responsability, Mediator Respondido em 01/04/2020 13:04:51 1a Questão O padrão Classe Handler é um Padrão Comportamental GoF. Quais os benefícios do padrão de projeto Chain of Responsability com a Classe Hanter? I- O acoplamento é reduzido, pois, o padrão libera um objeto de ter que conhecer qual o outro objeto que trata de uma solicitação; II- 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; III- Flexibilidade na atribuição de responsabilidades, ou seja, pode-se mudar a cadeia de objetos em tempo de execução, adicionando ou removendo objetos; IV- A receptação não é garantida, isto é, no momento que a requisição não tem um receptor explícito, não há garantias que ela será tratada; Est(á)ão correta(s) a(s) afirmativa(s): Somente os itens II, III e IV; Somente os itens II e III; Somente os itens I, II e III; Somente os itens I e II; Somente os itens III e IV; Respondido em 01/04/2020 13:05:12 Explicação: O item IV é uma deficiência, e não uma vantagem. 2a Questão 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 Possibilitamos a comunicação entre interfaces incompatíveis Armazenamos o estado interno de um objeto para permitir a implementação da operação de desfazer (undo) Implementamos partes invariantes de um algoritmo em uma classe abstrata e deixamos que o restante do código seja implementado nas subclasses Permitimos, em tempo de execução, que sejam adicionadas novas operações sobre uma estrutura de dados Respondido em 01/04/2020 13:05:31 3a Questão 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. Mediator. Nenhuma das anteriores. Observer. Chain of Responsability. Respondido em 01/04/2020 13:05:27 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. 4a Questão (CESGRANRIO - 2008) Muitos frameworks utilizam um padrão de projeto (design pattern) que se baseia no princípio de projeto "Não noschame, nós iremos chamar você" (O Princípio de Hollywood: "Don't call us, we'll call you."). Uma classe da aplicação herda de uma classe do framework que possui métodos abstratos, os quais são chamados em outros métodos concretos. A classe da aplicação sobrepõe os métodos abstratos da classe do framework com métodos concretos, permitindo que os métodos concretos da classe do framework sejam chamados. O padrão de projeto (design pattern) em questão chama-se Strategy. Abstract Factory. Template Method. Singleton. Decorator. Respondido em 01/04/2020 13:05:42 Gabarito Coment. 5a Questão Os padrões de comportamento correspondem a: Chain of Responsability, Command, Interpreter, Iterador, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor Adapter, Bridge, Composite, Decorator, Façade, flyweight e proxy Iterador, Mediator, Bridge, Composite, Decorator, Façade, Flyweight e Proxy Todas as alternativas estão erradas Abstract Factory, Builder, Factory Method, Prototype e Singleton. Respondido em 01/04/2020 13:05:50 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. 6a Questão São exemplos de Padrões de Projeto Comportamentais: Command, Composite e Memento Interpreter, Chain of Responsibility e Observer Singleton, Mediator e Strategy Mediator, Strategy e Builder State, Flyweight e Decorator Respondido em 01/04/2020 13:05:47 7a Questão Qual padrão define o esqueleto de um algoritmo em uma operação, postergando alguns passos para as subclasses e permite que subclasses redefinam certos passos de um algoritmo sem mudar a estrutura do mesmo? Command. Adapter. State. Template Method. Nenhuma das anteriores. Respondido em 01/04/2020 13:05:55 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 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. 8a Questão Para fazer a modelagem de um padrão de projeto (design pattern) utilizando a UML é DESNECESSÁRIO. entender o padrão de projeto como uma colaboração representada com suas partes estruturais e comportamentais. identificar os elementos do padrão de projeto que devem ser vinculados aos elementos em um contexto específico e representá-los como parâmetros para colaboração. identificar as soluções comuns para o problema básico. fazer a modelagem do mecanismo como uma colaboração, fornecendo seus aspectos estruturais, assim como os aspectos comportamentais. identificar as soluções específicas e particulares para o problema básico e reificá-la como um mecanismo. Respondido em 01/04/2020 13:06:13 Explicação: Na UML, modelamos os Casos de Uso, identificando os atores e definindo os Casos de Uso por Ator, construímos o Diagrama de Casos de Uso, modelamos as Classes Negociais, construímos o Diagrama de Transição de Estado e refinamos as Classes com suas operações. Gabarito Coment. 1a Questão O padrão Chain of Responsability é um Padrão Comportamental GoF. Qual afirmativa abaixo não está relacionada a esse padrão? Representa um encadeamento de objetos receptores para o processamento de uma série de solicitações diferentes; Os objetos receptores passam a solicitação ao longo da cadeia até que um ou vários objetos a tratem; Cada objeto receptor possui uma lógica descrevendo os tipos de solicitação que é capaz de processar e como passar adiante aquelas que requeiram processamento por outros receptores; Fornece um acoplamento mais fraco por evitar a associação explícita do remetente de uma solicitação ao seu receptor e dar a mais de um objeto a oportunidade de tratar a solicitação; Reduz a interconexão entre os objetos, ao invés de um objeto manter uma lista com todos os receptores candidatos, ele mantém uma referência única para o sucessor; Respondido em 01/04/2020 13:06:23 Explicação: Essa afirmativa está relacionada ao padrão Chain of Responsability, porque ela se refere a padrão Classe Handler. 2a Questão Analise as seguintes sentenças que descreve as características de um padrão de projeto. Em seguida marque a alternativa que corresponde o padrão de projeto correspondente. a. Sua aplicação é recomendada naquelas situações em que há necessidade de interpretar uma linguagem qualquer e, ao mesmo tempo, quando se quer representar sentenças da linguagem, como árvores abstratas sintáticas. b. Descreve como projetar um conjunto de classes para representar e interpretar uma gramática para linguagens simples. c. A estrutura do padrão sugere que a modelagem do problema seja realizada através de uma gramática recursiva. Chain Responsability Adapter Composite Façade Interpreter Respondido em 01/04/2020 13:06:43 Gabarito Coment. 3a Questão Dentre as opções colocadas abaixo, assinale aquela que corresponde ao padrão de projeto que requer para sua implementação, 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 classe Handler; Chain of Responsability ; Iterator; Template Method; Mediator; Respondido em 01/04/2020 13:06:40 Gabarito Coment. 4a Questão Qual o objetivo do padrão Interpreter? Assinale a opção CORRETA. Permitir que suas subclasses redefinam certos passos de um algoritmo sem mudar sua estrutura; Preencher certas partes do algoritmo por implementações que irão variar, ou seja, implementar um algoritmo em um método, postergando a definição de alguns passos do algoritmo, para que outras classes possam redefini-los; Fornece uma estrutura fixa, de um algoritmo, esta parte fixa deve estar presente na superclasse, sendo obrigatório uma classeAbstrata que possa conter um método concreto; Dada uma linguagem, definir uma representação para sua gramática junto com um interpretador que usa a representação para interpretar sentenças na linguagem; Definir o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem preenchidos pelas subclasses; Respondido em 01/04/2020 13:06:48 Explicação: Essa afirmativa está correta, porque as outras se referem ao padrão Template Method. 5a Questão Qual padrão se define uma dependência um-para-muitos entre objetos de forma que quando o objeto muda de estado todos os seus dependentes são notificados e atualizados automaticamente? Memento. Chain of Responsability. State. Nenhuma das anteriores. Observer. Respondido em 01/04/2020 13:06:56 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 Observer define uma dependência um para muitos, que será necessária para fazer a relação entre um conjunto de dados e várias representações, além de permitir que, quando um objeto mude de estado, todos os dependentes sejam notificados. 6a Questão (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? Observer. Singleton. Decorator. Interpreter. Template Method. Respondido em 01/04/2020 13:07:04 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. 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. 7a Questão Qual o objetivo do padrão Template Method? Assinale a opção CORRETA. Delega responsabilidades e escreve padrões não só voltados para classe, mas também no que tange a comunicação entre essas classes; Definir o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem preenchidos pelas subclasses; Descreve como projetar um conjunto de classes para representar e interpretar uma gramática para linguagens simples; É recomendada naquelas situações em que há necessidade de interpretar uma linguagem qualquer e ao mesmo tempo quando se quer representar sentenças da linguagem como árvores abstratas sintáticas; Dada uma linguagem, definir uma representação para sua gramática junto com um interpretador que usa a representação para interpretar sentenças na linguagem; Respondido em 01/04/2020 13:07:22 Explicação: Essa afirmativa está correta, porque as outras se referem ao padrão Interpreter. Além disso, Template Method permite que suas subclasses redefinam certos passos de um algoritmo sem mudar sua estrutura. 8a Questão Entre as vantagens do padrão Interpreter podem-se citar: I - facilidade para mudar e estender a gramática, pois, o padrão utiliza classes para representar as regras gramaticais. I i - Pode-se usar herança para mudar ou estender a gramática, assim como expressões existentes podem ser modificadas incrementalmente e novas expressões podem ser criadas a partir das existentes; Iii - a implementação da gramática é mais fácil, pois, classes que definem os nós folhas da árvore tem implementações similares. Por outro lado, uma das desvantagens é que o padrão Interpreter define, ao menos, uma classe para cada regra da gramática, logo, gramáticas com muitas regras são difíceis de manter e administrar. As afirmativas II, III estão corretas e a afirmativa I está errada. As afirmativas I, III, estão corretas e II errada As afirmativas I, II, estão corretas e a afirmativa III está errada. As afirmativas I, II, III estão incorretas As afirmativas estão todas corretas Respondido em 01/04/2020 13:07:30 Explicação: Há cinco padrões de criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton. O INTERPRETER é um Padrão de Operação. Tem a função de interpretar, interfacear delegando responsabilidade. Os padrões comportamentais têm como premissa se preocupar com algoritimos. Não só com algoritimos, mas com a relação entre objetos. Descreve como projetar um conjunto de classes para representar e interpretar uma gramática para linguagens simples. Sua aplicação é recomenda naquelas situações em que há necessidade de interpretar uma linguagem qualquer e ao mesmo tempo quando se quer representar sentenças da linguagem como árvores abstratas sintáticas.