Prévia do material em texto
13/06/2019 EPS estacio.webaula.com.br/Classroom/index.html?id=2082197&courseId=12861&classId=1133582&topicId=2869774&p0=03c7c0ace395d80182db0… 1/5 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? PADRÕES DE PROJETO DE SOFTWARE CCT0425_A8_201702334351_V1 Lupa Calc. Vídeo PPT MP3 Aluno: EDILSON CORRÊA Matr.: 201702334351 Disc.: PAD.PROJ.SOFTWARE 2019.1 EAD (G) / EX 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. Coesão Alta; Controlador; Acoplamento fraco; Criador; Expert (Especialista da informação); 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. 2. javascript:voltar(); javascript:voltar(); javascript:diminui(); javascript:aumenta(); javascript:calculadora_on(); javascript:abre_frame('1','8','','GKFME0IE963NOCFG7C12','315368641'); javascript:abre_frame('2','8','','GKFME0IE963NOCFG7C12','315368641'); javascript:abre_frame('3','8','','GKFME0IE963NOCFG7C12','315368641'); 13/06/2019 EPS estacio.webaula.com.br/Classroom/index.html?id=2082197&courseId=12861&classId=1133582&topicId=2869774&p0=03c7c0ace395d80182db0… 2/5 Em relação a aplicação dos padrões GRASP, para o diagrama de classe da figura acima é correto afirmar que: Em relação a aplicação dos padrões GRASP, para o diagrama de classe da figura acima é correto afirmar que: Padrão Criador: a Classe Engenheiro tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe Engenheiro tem a responsabilidade de saber quantas Etapas uma determinada Obra possui. Padrão Criador: a Classe Obra tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe Obra tem a responsabilidade de saber quantas Etapas uma determinada Obra possui. Padrão Criador: a Classe Engenheiro tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe Etapa tem a responsabilidade de saber quantas Etapas uma determinada Obra possui. Padrão Criador: a Classe Obra tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe Etapa tem a responsabilidade de saber quantas Etapas uma determinada Obra possui. Padrão Criador: a Classe Engenheiro tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe Obra tem a responsabilidade de saber quantas Etapas uma determinada Obra possui. 3. 13/06/2019 EPS estacio.webaula.com.br/Classroom/index.html?id=2082197&courseId=12861&classId=1133582&topicId=2869774&p0=03c7c0ace395d80182db0… 3/5 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. Padrão Criador: a Classe Parcela tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão Especialista: a Classe Parcela tem a responsabilidade de saber quais são as parcelas devedoras. Padrão Criador: a Classe Cliente tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão Especialista: a Classe Empréstimo tem a responsabilidade de saber quais são as parcelas de um determinado Empréstimo. Padrão Criador: a Classe Cliente tem a responsabilidade de criar instâncias da classe Parcela. Padrão Especialista: a Classe Parcela tem a responsabilidade de saber quais são as parcelas devedoras. Padrão Criador: a Classe Empréstimo tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão Especialista: a Classe Parcela tem a responsabilidade de saber quais são as parcelas de um determinado Empréstimo. Padrão Criador: a Classe Empréstimo tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão Especialista: a Classe Empréstimo tem a responsabilidade de saber quais são as parcelas de um determinado Empréstimo. Explicação: 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. Creator (Criador) - O Creator do GoF está focando um problema específico (por exemplo, encapsulando código), este não, é decidir quem é o responsável por criar determinado recurso, ou artefato, e escolher quem vai criar. A criação de objetos é uma das mais comuns atividades em um sistema orientado a objetos. Descobrir qual classe é responsável por criar objetos é uma propriedade fundamental da relação entre objetos de classes particulares. 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 4. No conhecer, eu delego a responsabilidade de quem é que vai ser responsável por criar; As responsabilidades ¿fazer¿ estão relacionadas à distribuição das características do sistema entre as classes; 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; No conhecer, eu delego quem é o responsável por saber o estado de uma determinada classe; 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. 13/06/2019 EPS estacio.webaula.com.br/Classroom/index.html?id=2082197&courseId=12861&classId=1133582&topicId=2869774&p0=03c7c0ace395d80182db0… 4/5 Com relação aos padrões GRASP, assinale a opção correta: O que é MELHOR para uma aplicação: acoplamento alto ou acoplamento fraco? Qual a afirmativa está INCORRETA. 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. 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. 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 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. 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. 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, quem é que vai assumir a responsabilidade de um determinado conhecimento ou de uma determinada ação. 6. 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 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, é 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. 13/06/2019 EPS estacio.webaula.com.br/Classroom/index.html?id=2082197&courseId=12861&classId=1133582&topicId=2869774&p0=03c7c0ace395d80182db0… 5/5 Os 9 padrões definidos pela General Responsability Assignment Software Pattener são? 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(); } Explicação: 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. 1.Creator; 2.High Coesion; 3.Low Coupling; 4.Controller; 5.Polymorphis; 6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Facade. 1.Creator; 2.High Coesion; 3.Low Coupling; 4.Buider; 5.Bridge; 6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Variation. 1.Singleton; 2.High Coesion; 3.Low Coupling; 4.Controller; 5.Polymorphis; 6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Variation. 1.Creator; 2.High Coesion; 3.Low Coupling; 4.Controller; 5.Polymorphis; 6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Variation. 1.Creator; 2.Decoretor; 3.FlyWeight; 4.Controller; 5.Polymorphis; 6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Variation. 8. Indirection Information Expert Pure Fabrication Variation High Coesion Explicação: Padrões GRASP: Expert (Especialista), Creator (Criador), High Coesion, Low Coupling (Baixo Acoplamento), Controller. 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. Legenda: Questão não respondida Questão não gravada Questão gravada Exercício inciado em 13/06/2019 21:20:01. javascript:abre_colabore('35649','156541183','3208757182');