ID 1159579 Banca CESPE / CEBRASPE Órgão TJ-CE Ano 2014 Provas CESPE - 2014 - TJ-CE - Analista Judiciário - Ciências Computação Disciplina Arquitetura de Software Assuntos Padrões de projeto (Design Patterns) Com relação aos padrões GRASP, assinale a opção correta. Alternativas 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 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. 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 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. 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. Responder Comentários Vamos analisar cada uma das opções: a) 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 (INCORRETO) O padrão que é responsável por tratar interface com o usuário é o padrão CONTROLLER ou CONTROLADOR. b) 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. (INCORRETO) O padrão que controle a criação de instâncias de classes é o padrão CREATOR, e não o controlador. c) 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 (INCORRETO) Quando pensamos em dependência entre classes, o padrão a ser lembrado é o padrão BAIXO ACOPLAMENTO, e não o alta coesão. d) 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. (INCORRETO) Se A registra B, quem deve registrar B é a classe A, e não o contrário! e) 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. (CORRETA) Realmente é o padrão ESPECIALISTA que é responsável por atribuir responsabilidades a cada uma das classes! GRASP - Expert •Problema : –Qual é o princípio mais básico de atribuição de responsabilidades em projeto OO? –Em um sistema com centenas de classes, como selecionamos quais responsabilidades devem estar em quais classes? –Exemplo: Em um sistema de PDV, quem deveria ser o responsável pelo cálculo do total de um pedido? •Solução: –Atribuir a responsabilidade ao especialista –O especialista é a classe que tem a informação necessária para satisfazer a responsabilidade –Exemplo: Em um sistema de PDV, o responsável pelo cálculo do total de um pedido deveria ser a própria classe Pedido É o padrão mais usado para atribuir responsabilidades.