Baixe o app para aproveitar ainda mais
Prévia do material em texto
1a Questã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(); } Variation Indirection Information Expert Pure Fabrication 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. 2a Questão 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 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 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. 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 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. 3a Questão 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 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 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 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. 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 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. 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 4a Questão 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. No conhecer, eu delego quem é o responsável por saber o estado de uma determinada classe; As responsabilidades ¿conhecer¿ estão relacionadas com a distribuição do comportamento do sistema entre as classes; No conhecer, eu delego a responsabilidade de quem é que vai ser responsável por criar; No fazer, vai demonstrar quem é que vai saber o estado; As responsabilidades ¿fazer¿ estão relacionadas à distribuição das características 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. 5a Questão Pode-se sucintamente definir o padrão Variation do GRASP como: Criar classes que permitam sobrecarga e sobreescrita. Criar camadas para melhor organizar a aplicação. Criar classes altamente coesas. Criar classes controladoras. Criar classe que resolva problemas de inconsistência, criando adaptações para saná-las. 6a Questão Marque a alternativa que apresenta apenas padrões GRASP? Observer, visitor, strategy Coesão alta, controlador e polimorfismo Coesão alta, polimorfismo, visitor Controlador, polimorfismo e Memento Coesão alta, controlador, strategy Explicação: Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo Acoplamento (Acoplamento Fraco). 7a Questão qual das afirmativas abaixo não é verdadeira. acoplamento é o grau de dependência entre dois artefatos. É uma medida de quão forte um elemento está conectado ou tem conhecimento de, ou depende de outros elementos. Dessa forma o padrão Acoplamento Baixo é utilizado para atribuir responsabilidades de modo que o acoplamento permaneça baixo. Um alto acoplamento aumenta a dificuldade de entendimento da solução proposta, a diminuição das chances de reutilização, além de aumentar a complexidade da aplicação. O ideal que dois artefatos tenham alta dependência. Isto garante um bom desempenho e facilita a manutenção dos artefatos. Um acoplamento definido para que classes que contenham métodos que possibilitem alterações de requisitos deve ser a menor possível, desta forma se favorece futuras manutenções. 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. Vamos entender o conceito de Acoplamento e Artefato. Acoplamento é o grau de dependência entre dois artefatos. Artefato refere-se a qualquerelemento de um projeto de software orientado a objetos, tais como classe, método, componente, pacote, entre outros. Essa afirmativa é verdadeira 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. O padrão Acoplamento Baixo é utilizado para atribuir responsabilidades de modo que o acoplamento permaneça baixo. 8a Questão 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? Criador; Acoplamento fraco; Coesão Alta; Expert (Especialista da informação); Controlador; 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.
Compartilhar