Buscar

PADRÕES DE PROJETO DE SOFTWARE 09

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.

Mais conteúdos dessa disciplina