Questão nº 7
Questão de Arquitetura de Desenvolvimento de Software · FGV SEFAZ-AM 2022 - Prova II (nº 7)
Os padrões GRASP descrevem princípios fundamentais de atribuição de responsabilidades em projetos de software orientado a objeto.
De acordo com esses padrões, o polimorfismo é um princípio orientador para atribuir responsabilidades
- Aa classes artificiais que não representem nada no domínio do problema de maneira a obter uma coesão alta.
- Ba classes abstratas que representem o comportamento de classes concretas para permitir ao sistema lidar com vários tipos de maneira homogênea. (alternativa correta)
- Ca uma classe controladora global para centralizar o tratamento de todas as mensagens e eventos do sistema.
- Da classes que têm a informação necessária para satisfazer à responsabilidade e colaborar para que o acoplamento permaneça alto.
- Ea classes estáticas, altamente coesas e que são utilizadas no sistema sem a necessidade de instanciar objetos.
Resposta comentada
Gabarito Alternativa B
GRASP (General Responsibility Assignment Software Patterns) são princípios que ajudam a decidir qual objeto deve ter qual responsabilidade. O padrão de Polimorfismo dentro do GRASP sugere usar a capacidade de objetos de diferentes tipos responderem a uma mesma mensagem de maneiras distintas para lidar com variações de comportamento.
- (A) Incorreta: O padrão Polimorfismo não foca em "classes artificiais que não representem nada no domínio" para alta coesão (isso seria mais próximo de Pure Fabrication). Ele lida com variações de comportamento de entidades que podem ou não ter representação direta no domínio.
- (B) Correta: O polimorfismo é usado para definir uma interface ou classe abstrata que estabelece um comportamento comum. Classes concretas implementam esse comportamento de suas próprias maneiras, permitindo que o sistema interaja com elas de forma uniforme, sem precisar saber o tipo exato de cada objeto.
- (C) Incorreta: Atribuir responsabilidades a uma "classe controladora global para centralizar o tratamento de todas as mensagens e eventos" é um anti-padrão conhecido como "God Object" ou "Controlador Anêmico". Isso leva a baixo acoplamento e alta coesão, o oposto do que se busca. A armadilha da banca aqui é tentar confundir o padrão GRASP Controller (que atribui responsabilidades de controle de forma específica e limitada) com um controlador global e centralizador, que é prejudicial ao design.
- (D) Incorreta: Enquanto "classes que têm a informação necessária" se refere ao padrão Information Expert, a ideia de "colaborar para que o acoplamento permaneça alto" é fundamentalmente errada. GRASP e um bom design de software buscam baixo acoplamento, não alto.
- (E) Incorreta: O polimorfismo em orientação a objetos, como descrito no GRASP, geralmente se aplica a métodos de instância de objetos que podem ser instanciados e que implementam ou sobrescrevem comportamentos. Classes estáticas não são o mecanismo principal para implementar polimorfismo nesse contexto.
Fonte: FGV SEFAZ-AM 2022 - Prova II Analista de Tecnologia da Informação da Fazenda Estadual (Caderno Tipo 1). Reproduzida para fins de estudo.