Diferença Entre AOP e OOP
AOP vs OOP
AOP (Programação Orientada a Aspecto) 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, o OOP se concentra em representar problemas usando objetos do mundo real e seu comportamento, enquanto a AOP trata de dividir os programas para separar as preocupações transversais.
O que é AOP?
AOP é um paradigma de programação, que trata de dividir um programa em áreas coesas de funcionalidade (chamadas preocupações) que atravessam várias áreas, para aumentar a modularidade. O suporte para abstrações (como classes, métodos, etc.) para agrupar e encapsular preocupações em entidades únicas é fornecido em muitos outros paradigmas de programação. Mas preocupações (como "Logging") são exemplos de preocupações transversais, porque cada parte registrada do sistema é afetada pela estratégia usada para o log. O foco principal de todas as implementações AOP é ter expressões transversais adequadas para capturar todas as preocupações em um único local.
O que é OOP?
No OOP, o foco é pensar no problema a ser resolvido em termos de elementos do mundo real e representar o problema em termos de objetos e seu comportamento. As aulas descrevem as representações abstratas dos objetos do mundo real. As aulas são como modelos ou modelos, que reúnem itens semelhantes ou coisas que podem ser agrupadas. As classes possuem propriedades chamadas atributos. Os atributos são implementados como variáveis globais e de instâncias. Os métodos nas classes representam ou definem o comportamento dessas classes. Os métodos e atributos das 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 muito a algum objeto do mundo real.
Existem vários conceitos OOP importantes, tais como abstração de dados, encapsulamento, polimorfismo, mensagens, modularidade e herança. Normalmente, o encapsulamento é alcançado ao tornar os atributos privados, ao criar métodos públicos que podem ser usados para acessar esses atributos. A herança permite ao usuário estender as classes (chamadas sub-classes) de outras classes (chamadas super-classes). O polimorfismo permite que o programador substitua um objeto de uma classe em lugar de um objeto de sua super classe. Normalmente, os substantivos encontrados na definição do problema se tornam classes diretamente no programa. E da mesma forma, os verbos se tornam 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 preocupações transversais. Na verdade, a AOP não é concorrente da OOP, porque emergiu do paradigma OOP. AOP estende o OOP abordando alguns de seus problemas. O AOP apresenta maneiras legais de implementar preocupações transversais (que podem ter sido espalhadas em vários lugares na implementação OOP correspondente) em um único local. Portanto, o AOP torna o programa mais limpo e mais acoplado.