AOP vs OOP
AOP (programação orientada a aspectos) e OOP (programação orientada a objetos) são dois paradigmas de programação. Um paradigma de programação é um estilo fundamental de programação de computadores. Os paradigmas de programação diferem em como cada elemento dos programas é representado e como cada etapa é definida para resolver problemas. Como o nome sugere, OOP se concentra em representar problemas usando objetos do mundo real e seu comportamento, enquanto o AOP lida com a divisão dos programas em interesses transversais separados.
O que é AOP?
AOP é um paradigma de programação, que trata de dividir um programa em áreas coesas de funcionalidade (chamadas de interesses) que atravessam várias áreas, a fim de aumentar a modularidade. Suporte para abstrações (como classes, métodos, etc.) para agrupar e encapsular interesses em entidades exclusivas é fornecido em muitos outros paradigmas de programação. Mas as preocupações (como “Registro”) são exemplos de preocupações transversais, porque cada parte registrada do sistema é afetada pela estratégia usada para o registro. O foco principal de todas as implementações de AOP é ter expressões transversais adequadas para capturar todas as preocupações em um único local.
O que é POO?
Na POO, o foco é pensar sobre o problema a ser resolvido em termos de elementos do mundo real e representar o problema em termos de objetos e seu comportamento. As classes descrevem as representações abstratas de objetos do mundo real. As classes são como plantas ou modelos, que reúnem itens semelhantes ou coisas que podem ser agrupadas. As classes têm propriedades chamadas atributos. Os atributos são implementados como variáveis globais e de instância. Os métodos nas classes representam ou definem o comportamento dessas classes. Métodos e atributos de classes são chamados de membros da classe. Uma instância de uma classe é chamada de objeto. Portanto, um objeto é uma estrutura de dados que se assemelha a algum objeto do mundo real.
Existem vários conceitos importantes de POO como abstração de dados, encapsulamento, polimorfismo, mensagens, modularidade e herança. Normalmente, o encapsulamento é obtido tornando os atributos privados, enquanto cria métodos públicos que podem ser usados para acessar esses atributos. A herança permite que o usuário estenda classes (chamadas subclasses) de outras classes (chamadas superclasses). O polimorfismo permite ao programador substituir um objeto de uma classe no lugar de um objeto de sua superclasse. Normalmente, os substantivos encontrados na definição do problema tornam-se diretamente classes no programa. E da mesma forma, os verbos tornam-se métodos. Algumas das linguagens OOP mais populares são Java e C.
Qual é a diferença entre AOP e OOP?
A principal diferença entre OOP e AOP é que o foco do OOP é dividir a tarefa de programação em objetos, que encapsulam dados e métodos, enquanto o foco do AOP é dividir o programa em interesses transversais. Na verdade, o AOP não é um concorrente do OOP, porque surgiu do paradigma OOP. AOP estende a OOP abordando alguns de seus problemas. AOP apresenta maneiras elegantes de implementar preocupações transversais (que podem ter sido espalhadas por vários lugares na implementação OOP correspondente) em um único local. Portanto, AOP torna o programa mais limpo e menos acoplado.