Pular para o conteúdo principal

Questão de Programação — Programação Orientada a Objetos — Quadrix 2024

ProgramaçãoProgramaçã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.
  1. APrincípio da Responsabilidade Única (SRP)
  2. BPrincípio Aberto/Fechado (OCP)
  3. CPrincípio de Substituição de Liskov (LSP)
  4. DPrincípio da Segregação de Interfaces(ISP)
  5. 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.

1S — Responsabilidade Única (SRP)
Uma razão para mudar
2O — Aberto/Fechado (OCP)
Aberto para extensão
Fechado para modificação
3L — Substituição de Liskov (LSP)
Subtipo substitui o tipo base
4I — Segregação de Interfaces (ISP)
Interfaces específicas
5D — Inversão de Dependência (DIP)
Depender de abstrações
Princípios SOLID
LEVELsoulevel.com.br
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 💪.

Gabarito: letra A

Link permanente: /questoes/qg351067