Questão de Programação — Programação Orientada a Objetos — Quadrix 2024
Programação›Programação Orientada a Objetos
Código
qg351067
Banca
Quadrix
Órgão
CRN - 8ª Região (PR)
Ano
2024
Nível
Médio
Cargo
Assistente de Tecnologia da Informação Júnior
Assinale a alternativa que apresenta o princípio SOLID, que está relacionado, na programação orientada a objetos (POO), ao conceito de que uma classe deve ter apenas uma razão para mudar.
APrincípio da Responsabilidade Única (SRP)
BPrincípio Aberto/Fechado (OCP)
CPrincípio de Substituição de Liskov (LSP)
DPrincípio da Segregação de Interfaces(ISP)
EPrincípio da Inversão de Dependência (DIP)
Revelar gabarito e comentário▾
GabaritoA — Princípio da Responsabilidade Única (SRP)
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Princípios SOLID: a Responsabilidade Única
Gabarito: letra A. O princípio SOLID que estabelece que uma classe deve ter apenas uma razão para mudar é o Princípio da Responsabilidade Única (SRP — Single Responsibility Principle), que defende que cada classe deve ter uma única responsabilidade, um único motivo para ser alterada. Essa é a definição clássica do SRP, o primeiro dos cinco princípios SOLID.
Os princípios SOLID formam um conjunto de boas práticas de design de software orientado a objetos, criados por Robert C. Martin (Uncle Bob), que visam tornar o código mais legível, flexível e de fácil manutenção. O acrônimo SOLID representa cinco princípios: Single Responsibility Principle (SRP), Open/Closed Principle (OCP), Liskov Substitution Principle (LSP), Interface Segregation Principle (ISP) e Dependency Inversion Principle (DIP). Cada um ataca um aspecto diferente do design, e a banca explora justamente a capacidade do candidato de associar cada princípio à sua definição correta.
O SRP (Princípio da Responsabilidade Única) é o mais básico e, muitas vezes, o mais mal compreendido. Ele não diz que a classe deve fazer apenas uma coisa, mas sim que ela deve ter apenas uma razão para mudar. Em outras palavras, a classe deve ter um único ator ou fonte de mudança. Se uma classe tem múltiplas responsabilidades, uma alteração em uma delas pode quebrar as outras, tornando o código frágil e difícil de manter. Por exemplo, uma classe Funcionario que calcula salário, gera relatório e salva no banco de dados tem três razões para mudar: mudanças nas regras de cálculo, mudanças no formato do relatório e mudanças na persistência. O SRP sugere dividir essa classe em três, cada uma com uma responsabilidade única.
Na prática, aplicar o SRP significa que, ao identificar que uma classe tem mais de um motivo para ser alterada, devemos separar essas responsabilidades em classes distintas. Isso promove a coesão (cada classe faz bem uma coisa) e reduz o acoplamento (classes independentes entre si). A pegadinha da banca nesta questão é justamente a troca de definições entre os princípios: o candidato que decora apenas os nomes e siglas, sem entender o conceito de cada um, pode facilmente confundir o SRP com o OCP ou com o ISP.
Guarde a essência de cada princípio: SRP = uma razão para mudar; OCP = aberto para extensão, fechado para modificação; LSP = subtipos podem substituir seus tipos base; ISP = interfaces específicas em vez de uma interface geral; DIP = depender de abstrações, não de implementações. É exatamente nessa fronteira que as alternativas se dividem.
Princípios SOLID: S — Responsabilidade Única (SRP) (Uma razão para mudar); O — Aberto/Fechado (OCP) (Aberto para extensão, Fechado para modificação); L — Substituição de Liskov (LSP) (Subtipo substitui o tipo base); I — Segregação de Interfaces (ISP) (Interfaces específicas); D — Inversão de Dependência (DIP) (Depender de abstrações)
Alternativa A — ✅ Correta ⟵ GABARITO
O Princípio da Responsabilidade Única (SRP) é exatamente o que o enunciado descreve: uma classe deve ter apenas uma razão para mudar. A alternativa espelha a definição clássica do SRP, o que a torna a resposta correta.
Alternativa B — ❌ Incorreta
O Princípio Aberto/Fechado (OCP) afirma que as entidades de software devem estar abertas para extensão, mas fechadas para modificação. Ou seja, o comportamento de uma classe deve ser estendido sem alterar seu código-fonte, geralmente por meio de herança ou composição. A alternativa confunde o OCP com o SRP, pois o OCP trata da extensibilidade, não da quantidade de responsabilidades.
Alternativa C — ❌ Incorreta
O Princípio de Substituição de Liskov (LSP) estabelece que subtipo deve poder substituir seu tipo base sem alterar a corretude do programa. Se uma classe derivada não pode ser usada no lugar da classe base, o design viola o LSP. A alternativa troca o conceito de responsabilidade única pelo de substituição de tipos, que é o foco do LSP.
Alternativa D — ❌ Incorreta
O Princípio da Segregação de Interfaces (ISP) preconiza que nenhum cliente deve ser forçado a depender de métodos que não utiliza. Em vez de uma interface grande e genérica, é melhor criar interfaces menores e mais específicas. A alternativa confunde o ISP com o SRP, pois o ISP trata da granularidade das interfaces, não da responsabilidade das classes.
Alternativa E — ❌ Incorreta
O Princípio da Inversão de Dependência (DIP) afirma que módulos de alto nível não devem depender de módulos de baixo nível; ambos devem depender de abstrações, e que abstrações não devem depender de detalhes, mas sim o contrário. A alternativa troca o conceito de responsabilidade única pelo de inversão de dependências, que é o foco do DIP.
NÃO CAIA NESSA!
A banca explora a troca de definições entre os princípios SOLID. O candidato que decora apenas as siglas (SRP, OCP, LSP, ISP, DIP) sem entender o conceito de cada um pode facilmente cair na armadilha. A dica é memorizar a essência de cada princípio: SRP = uma razão para mudar; OCP = aberto/fechado; LSP = substituição; ISP = segregação de interfaces; DIP = inversão de dependência. Com treino, você reconhece essas definições de longe 💪.