-
qual o erro?
-
Também não achei. :-)
-
Caros colegas o conceito está todo correto com exceção do NÃO na última linha, este NÃO torna a questão errada, pois, Todo o programa escrito no paradigma orientado a objetos possui código que é alheio a implementação do comportamento do objeto.
Este código é todo aquele utilizado para implementar funcionalidades
secundárias e que encontra-se espalhado por toda a aplicação (crosscutting concern). A POA permite que esse código seja encapsulado e modularizado.
fonte: http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_orientada_a_aspecto
-
Eu também não achei nenhum erro na questão, pra mim CORRETA.
·
Conceitos Básicos:
o Um Concern é um requisito
específico de um sistema. Existem dois tipos de Concern, são eles:
o Core Concerns (interesses
Básicos/Primários) – são os requisitos das funcionalidades centrais de um
módulo (núcleo)
o Crosscutting Concerns
(Interesses Transversais) – são os requistos das funcionalidades periférias do
sistemas, onde, são usados em diversos módulos do sistema
·
Problemas da POO:
o Implementações OO acoplam Concerns com os Crosscutting
Concerns
o Quando são adicionadas ou
removidas funcionalidades, na maior parte dos casos, é modificado o núcleo do sistema
o Muitas propriedades
importantes espalham-se por vários módulos e misturam-se com
outras propriedades de maneira intrusiva
·
A programação Orientada a Aspectos (POA) é uma nova metodologia
que:
o Separa os interesses, responsabilidades e requisistos (Concerns)
de um sistema
o A modularização dos
Aspectos (encapsulação do interesses transversais) produz uma arquitetura fácil
de projetar, implementar e manter, evitando
o problema do Espalhamento (scattering) e o Entrelaçamento (tangling)
por vários módulos.
Fonte:
·
http://homepages.dcc.ufmg.br/~figueiredo/disciplinas/aulas/aspectos-review_v01.pdf
· http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_orientada_a_aspecto
·
http://pt.slideshare.net/dyegoitallo/egenharia-de-software-orientado-a-aspectos
-
"s interesses transversais (crosscutting concerns) ficam separados dos interesses básicos" correto até um certo ponto. os aspectos ficam sim separados dos interesses basicos (core concerns) isso na sua definição, agora na hora de projetar e programar os aspectos possui em sua definição os pointcuts que vai dizer para o sistema de weaving onde inserir o codigo do aspecto junto com o codigo dos interesses basicos, o que cria um certo acoplamento entre esses dois interesses. Podemos forçar a barra e dizer que está correto
"não espalhados pelo sistema" Ai está errado pois os aspectos se espalham por todo o sistema, cortando os core concerns em diversos join points. Nao confundir com a capacidade de os aspectos evitar o Scattering(Espalhamento), que é a capacidade de evitar com que a implementaçao de um concern se espalhe em diversos componentes do programa. o Aspecto faz com que a implementaçao de um concern que afeta diversos componentes do programa seja centralizada.
-
A questão versa sobre
o paradigma de programação orientada a aspectos. No
âmbito da linguagem JAVA, cita-se o AspectJ como
exemplo de uma extensão orientada a aspectos.
Em breve síntese,
pode-se dizer que a Orientação a Aspectos visa a modularização dos
interesses transversais (crosscutting
concerns), os quais, no bojo da Orientação a Objetos, tendem a ficar entrelaçados e espalhados
com os interesses básicos do sistema, impactando
negativamente, por conseguinte, na manutenibilidade do sistema (SANTOS, 2008)
[1].
Como exemplo de
interesses transversais, citam-se a verificação e tratamento de erros, sincronização,
comportamento sensível ao contexto, otimizações de desempenho, monitoramento e
registro, suporte a depuração e protocolos multi-objeto [2]. Nesse
contexto, um Aspecto é uma unidade modular que encapsula
um interesse transversal [3].
Conforme exposto
acima, verifica-se que o primeiro trecho do enunciado da questão, "A
programação orientada a aspectos constitui-se como um paradigma
de programação para a construção de programas em que os interesses transversais
(crosscutting concerns) ficam separados dos interesses básicos"
está correto.
O problema, todavia,
reside no último trecho "e não espalhados pelo sistema". Pessoal, de
início, confesso que tive que ler várias vezes o enunciado e revisar vários
documentos sobre Orientação a Aspectos para entender o porquê da incorreção da
questão.
Assim, retomando o
que foi exposto anteriormente, ressalta-se que o problema que a Orientação a
Aspectos visa a resolver é o entrelaçamento e espalhamento dos interesses
transversais pelo CÓDIGO do sistema. Ou seja, poderíamos ter um
mesmo interesse transversal implementado em diferentes classes, espalhados pelo
código do sistema, o que prejudicaria a reusabilidade e dificultaria a
manutenção. Desse modo, na Orientação a Aspectos, seria necessário identificar esse interesse transversal e encapsulá-lo como um
Aspecto.
Por outro lado, os interesses transversais podem afetar diversas classes
espalhadas pelo sistema. Além disso, por outra ótica, dado que
um sistema geralmente consiste em diversos módulos agrupados em pacotes
(bibliotecas), os interesses transversais também podem estar encapsulados em
diferentes pacotes.
Nesse sentido, entende-se que é normal que os interesses transversais
encapsulados em Aspectos estejam espalhados PELO SISTEMA, mas NÃO PELO CÓDIGO
DO SISTEMA. Perceberam a nuance?
Logo, em que pese, na
minha visão, a infeliz pegadinha introduzida pela banca, a questão está INCORRETA.
Referências:
[1] SANTOS, Isanio
Lopes Araújo. Uma abordagem baseada em
Aspectos e Composição Dinâmica para a construção de Aplicações Adaptativas
Cientes ao Contexto. 2008. Dissertação (Mestrado em Sistemas e Computação) –
Programa de Pós-Graduação em Sistemas e Computação do Departamento de
Informática e Matemática Aplicada da Universidade do Rio Grande do Norte,
Natal, 2008.
[2] ECLIPSE FOUNDATION. ASPECTJ. Disponível em: site
oficial do projeto AspectJ. Acesso em: 8/6/2021.
[3] CENTRO DE
INFORMÁTICA DA UFPE. Aspect Semantics: Chapter 1. Getting Started with AspectJ. Disponível em: página do Cin
UFPE. Acesso em: 8/6/2021.
Gabarito do Professor: ERRADO.