Prévia do material em texto
06/12/2018 Conteúdo Interativo http://estacio.webaula.com.br/Classroom/index.html?id=1926176&classId=981186&topicId=2652646&p0=03c7c0ace395d80182db07ae2c30f034… 1/5 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? São causas comuns de refactoring, exceto: 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 tratar alternativas com base no tipo? Qual afirmativa abaixo se refere a primeira 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. 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): 1. Variações protegidas; Invenção pura; Controlador; Coesão Alta; Criador; 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. 2. Forte acoplamento Criação de objetos especificando diretamente uma classe concreta Dependência em operações específicas Dependências de algoritmo Forte coesão 3. Somente os itens II e III; Somente o item III; Somente o item I; 06/12/2018 Conteúdo Interativo http://estacio.webaula.com.br/Classroom/index.html?id=1926176&classId=981186&topicId=2652646&p0=03c7c0ace395d80182db07ae2c30f034… 2/5 O General Responsability Assignment Software Pattener que define a responsabilidade: Comportamentos com o mesmo nome mas que fazem operações deferentes. Trata-se de? (FCC - 2012) O componente Controller do MVC: Somente os itens I e II; Somente o item II; Explicação: O item III está INCORRETO porque ela se refere a segunda pergunta do padrão Polimorfismo, que é: Como criar componentes de software interconectáveis? 4. Information Expert High Coesion Indirection Polymorphis Pure Fabrication 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. 5. 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. 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. Notifica os componentes de apresentação das mudanças efetuadas nos dados e expõe a funcionalidade da aplicação. Responde às solicitações de queries e encapsula o estado da aplicação. 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. 06/12/2018 Conteúdo Interativo http://estacio.webaula.com.br/Classroom/index.html?id=1926176&classId=981186&topicId=2652646&p0=03c7c0ace395d80182db07ae2c30f034… 3/5 Considere a figura abaixo E escolha a opção correta sobre a gravura: 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? 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) Representa um tratador oficial de todos os eventos de sistema de um caso de uso (controlador de caso de uso). 6. A Classe instanciada assinalada como :???? Não pode ser decomposta em outros controladores. Assim temos que trabalhar com o tipo de coesão resultante (temporal, funcional...) A Classe instanciada assinalada como :???? Deveria estar incorporada na classe emprestar para evitar criar uma serie de novas classes. Isto facilita o projeto. A Classe instanciada assinala como :???? É de baixo acoplamento e baixa coesão pela natureza de sua criação. A classe instanciada assinalada como :???? Permite desacoplar as classes e métodos de apresentação. E isto aumenta a reutilização das classes de negocio. uma classe de controle exige que sempre se tem há uma classe de apresentação. Desta forma não podemos ter mais de uma classe de controle por sistema Explicação: Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo Acoplamento (Acoplamento Fraco). Outros padrões GRASP considerados Avançados são Inversão Pura, Indireção e Variações Protegidas. Essa afirmativa é a correta porque em uma Coesão Alta as classes com estes tipos de coesão são mais fáceis de implementar, testar e manter. No entanto, outros tipos de coesão podem aparecer, tais como, seqüencial, procedural, temporal e utilidade, as quais, segundo Pressman (2006), são menos desejáveis e devem ser evitados quando existirem alternativas de projeto. Ainda segundo Larman (2007), uma classe com coesão baixa faz muitas atividades que não estão relacionadas e trabalha em demasia, acarretando os seguintes problemas: dificuldade de compreensão e manutenção, dificuldade de reutilização, além de apresentar bastante sensibilidade a modificações. 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. 7. 06/12/2018 Conteúdo Interativo http://estacio.webaula.com.br/Classroom/index.html?id=1926176&classId=981186&topicId=2652646&p0=03c7c0ace395d80182db07ae2c30f034… 4/5 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. 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 servidorsem precisar modificar ou afetar a classe cliente. Est(á)ão correta(s) a(s) afirmativa(s): sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: Somente o item II; Somente o item I; Somente os itens I e II; Somente o item III; 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? 8. 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 vários métodos. Cada método deve ter uma estrutura IF...THEN...para cada situação. Isto é polimorfismo. 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 uma estrutura de herança. Automaticamente fica definido uma estrutura de métodos. Isto é polimorfismo Define-se um método na classe PAI. Este método é copiado nas classes que herdam a classe PAI. Isto é polimorfismo. 06/12/2018 Conteúdo Interativo http://estacio.webaula.com.br/Classroom/index.html?id=1926176&classId=981186&topicId=2652646&p0=03c7c0ace395d80182db07ae2c30f034… 5/5 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.