Prévia do material em texto
Prova 4 - Princípios SOLID Questão 1 - Princípio da Responsabilidade Única (SRP) O princípio da responsabilidade única estabelece que uma classe deve ter apenas uma razão para mudar. Qual alternativa exemplifica a violação desse princípio? A) Uma classe que manipula dados do usuário e também gera relatórios sobre esses dados B) Uma classe que contém apenas métodos de cálculo matemático C) Uma classe que implementa uma interface e delega todas as ações a outras classes especializadas D) Uma classe que realiza consultas ao banco de dados e retorna os resultados E) Uma classe que segue a inversão de dependência e gerencia suas próprias instâncias Questão 2 - Princípio Aberto/Fechado (OCP) O princípio aberto/fechado afirma que uma entidade de software deve estar aberta para extensão, mas fechada para modificação. Qual das alternativas a seguir representa uma aplicação correta desse princípio? A) Alterar diretamente uma classe existente para adicionar novas funcionalidades B) Criar novas classes que herdam de uma classe-base e adicionam comportamentos específicos C) Modificar um método privado para incluir um novo parâmetro sem afetar outras classes D) Excluir partes do código original para simplificar sua lógica de execução E) Acoplar todas as funcionalidades a uma única classe para evitar múltiplas alterações Questão 3 - Princípio da Substituição de Liskov (LSP) O princípio da substituição de Liskov preconiza que uma subclasse deve poder substituir sua superclasse sem alterar o comportamento esperado do sistema. Qual alternativa abaixo exemplifica uma violação desse princípio? A) Uma subclasse altera o tipo de retorno de um método da superclasse, tornando-o incompatível B) Uma subclasse adiciona métodos extras, mas mantém o comportamento original dos métodos herdados C) Uma subclasse respeita todas as assinaturas dos métodos da superclasse sem modificações D) Uma subclasse estende a funcionalidade sem alterar a estrutura lógica da superclasse E) Uma subclasse apenas implementa interfaces sem modificar o comportamento esperado Questão 4 - Princípio da Segregação de Interfaces (ISP) O princípio da segregação de interfaces estabelece que classes não devem ser forçadas a implementar métodos que não utilizam. Qual abordagem respeita esse princípio? A) Criar interfaces menores e específicas para cada tipo de funcionalidade B) Definir uma única interface grande com diversos métodos, permitindo maior flexibilidade C) Implementar todas as funcionalidades em uma única classe sem separação lógica D) Criar classes com múltiplas dependências para atender a diferentes necessidades E) Extender uma classe base e sobrescrever métodos desnecessários para evitar erros Questão 5 - Princípio da Inversão de Dependência (DIP) O princípio da inversão de dependência recomenda que classes dependam de abstrações e não de implementações concretas. Qual alternativa exemplifica corretamente esse princípio? A) Utilizar dependências concretas dentro de uma classe sem injeção de dependência B) Instanciar diretamente objetos dentro de métodos sem utilizar abstrações C) Declarar variáveis do tipo interface e atribuir implementações específicas a elas D) Criar todas as dependências dentro da classe para evitar acoplamento externo E) Excluir completamente qualquer tipo de abstração para simplificar o código Questão 6 - Aplicação dos Princípios SOLID Qual dos seguintes benefícios pode ser alcançado ao seguir os princípios SOLID na programação? A) Código mais acoplado e difícil de reutilizar B) Maior facilidade na manutenção e escalabilidade do software C) Menor organização do código devido à segmentação excessiva D) Aumento da complexidade desnecessária no desenvolvimento E) Redução da modularidade e flexibilidade do sistema Questão 7 - Impacto do SRP em Projetos Grandes Em sistemas grandes, como o princípio da responsabilidade única pode ajudar no desenvolvimento? A) Evita que classes tenham múltiplas responsabilidades, facilitando a manutenção B) Permite que todas as funcionalidades sejam agrupadas em uma única classe C) Reduz o número de classes no projeto para melhorar a legibilidade D) Aumenta o nível de acoplamento entre os componentes do sistema E) Obriga o programador a utilizar herança para garantir compatibilidade Questão 8 - OCP em Bibliotecas e Frameworks Por que o princípio OCP é importante em bibliotecas e frameworks de software? A) Garante que novas funcionalidades possam ser adicionadas sem modificar o código original B) Exige que todas as classes sejam completamente reescritas para incorporar mudanças C) Impede que os desenvolvedores utilizem herança para especializar comportamentos D) Reduz a capacidade de extensão de componentes reutilizáveis E) Implica que todas as funções devem ser públicas para facilitar a modificação Questão 9 - ISP e Interfaces de Serviços Web Como o princípio ISP pode ser aplicado ao design de serviços web? A) Criando APIs menores e específicas para diferentes funcionalidades B) Desenvolvendo uma única API grande para atender a todas as necessidades do sistema C) Exigindo que todos os serviços implementem métodos desnecessários para compatibilidade D) Forçando clientes a utilizar apenas um conjunto fixo de operações E) Eliminando a necessidade de separação lógica entre serviços diferentes Questão 10 - DIP e Arquitetura Limpa No contexto da arquitetura limpa, como o princípio DIP contribui para um código mais robusto? A) Incentiva o uso de dependências concretas, tornando o sistema mais previsível B) Facilita o acoplamento entre módulos, garantindo maior interdependência C) Permite a substituição fácil de implementações sem afetar o código principal D) Dificulta a separação lógica entre componentes do sistema E) Exige que todas as classes dependam diretamente umas das outras