Questão de Programação — Programação orientada a aspectos — Quadrix 2024
- Código
- qg349489
- Banca
- Quadrix
- Órgão
- CREFITO - 8ª Região (PR)
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista de Sistemas
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: letra E (Errado). A programação orientada a aspectos (POA) não se resume à criação de herança entre classes; ela é um paradigma que visa modularizar preocupações transversais (cross-cutting concerns), como logging, segurança e transações, separando-as do código de negócio. A herança é um conceito da programação orientada a objetos (POO), não da POA.
A POA surgiu para resolver um problema da POO: a dispersão e o emaranhamento de código. Em sistemas complexos, certas funcionalidades (como auditoria, tratamento de erros, controle de permissões) precisam ser aplicadas em vários pontos do código, o que gera repetição (dispersão) e mistura com a lógica principal (emaranhamento). A POA introduz o conceito de aspecto, que encapsula essas preocupações transversais. Um aspecto define pointcuts (pontos de corte), que especificam onde a lógica transversal deve ser aplicada, e advices (conselhos), que são os trechos de código executados nesses pontos. Assim, a POA complementa a POO, permitindo que o código de negócio fique mais limpo e focado.
Um exemplo prático: imagine um sistema bancário com várias classes (Conta, Cliente, Transação). Se precisarmos registrar em log toda operação de débito, sem POA teríamos que adicionar chamadas de log em cada método de débito de cada classe. Com POA, criamos um aspecto LoggingAspect com um pointcut que captura a execução de qualquer método anotado com @Debito e um advice que registra o log antes e depois da execução. O código de negócio das classes permanece inalterado, e a preocupação transversal (logging) fica isolada no aspecto.
A confusão entre POA e herança é comum, mas são conceitos de paradigmas diferentes. A herança é um mecanismo da POO para reutilização de código e estabelecimento de hierarquias (é um relacionamento "é um"). A POA é um paradigma que lida com a modularização de comportamentos que atravessam várias classes. Enquanto a herança promove reuso vertical (entre classes pai e filha), a POA promove a separação de interesses horizontais (transversais).
A banca explora exatamente essa confusão: o candidato que não domina o conceito de POA pode associá-la erroneamente à herança, pois ambos envolvem reutilização de código. No entanto, a POA vai muito além, oferecendo mecanismos específicos (aspectos, pointcuts, advices) para tratar preocupações transversais, algo que a herança não resolve adequadamente.
Guarde a distinção central: POA ≠ herança. A POA é um paradigma complementar à POO, focado em separar preocupações transversais, enquanto a herança é um mecanismo da POO para reuso de código. É exatamente essa fronteira que a questão testa.
A afirmação está errada porque reduz a POA a um mecanismo da POO (herança). A POA é um paradigma próprio, com conceitos como aspecto, pointcut, advice e join point, voltados para a modularização de preocupações transversais. A herança é um conceito da POO, não da POA. A POA não se resume a herança; ela oferece uma abordagem diferente para reutilização e organização de código, tratando de interesses que atravessam múltiplas classes.
Gabarito: letra E (Errado).
Link permanente: /questoes/qg349489