AOP проти OOP
AOP (Аспект-орієнтоване програмування) та OOP (Об'єктно-орієнтоване програмування) - це дві парадигми програмування. Парадигма програмування - це фундаментальний стиль комп'ютерного програмування. Парадигми програмування відрізняються тим, як представлений кожен елемент програм і як визначено кожен крок для вирішення завдань. Як випливає з назви, OOP зосереджується на представленні проблем із використанням об'єктів реального світу та їх поведінки, тоді як AOP займається розбиттям програм, щоб розділити проблеми перехресного перерізу..
Що таке АОП?
AOP - парадигма програмування, яка займається розбиттям програми на згуртовані області функціональності (звані занепокоєннями), що розрізаються на декілька областей, щоб збільшити модульність. Підтримка абстракцій (таких як класи, методи тощо) для групування та інкапсуляції проблем в унікальних сутностях надається у багатьох інших парадигмах програмування. Але занепокоєння (наприклад, "Ведення журналу") є прикладами проблем, пов'язаних з перекрестним вирізанням, тому що на кожну зареєстровану частину системи впливає стратегія, що використовується для ведення журналів. Основна увага в усіх реалізаціях AOP полягає в тому, щоб мати відповідні вирази для скріплення, щоб охопити всі проблеми в одному місці.
Що таке OOP?
В ООП основна увага приділяється роздумуванню над проблемою, яку слід вирішити з точки зору елементів реального світу, і представляє проблему з точки зору об'єктів та їх поведінки. На заняттях зображено абстрактні зображення об’єктів реального світу. Класи схожі на креслення або шаблони, які збирають подібні предмети або речі, які можна згрупувати. Класи мають властивості, звані атрибутами. Атрибути реалізовані як глобальні та екземпляри. Методи в класах представляють або визначають поведінку цих класів. Методи та атрибути класів називаються членами класу. Екземпляр класу називається об'єктом. Тому об’єкт - це структура даних, яка дуже нагадує якийсь об'єкт реального світу.
Існує кілька важливих концепцій OOP, таких як абстракція даних, інкапсуляція, поліморфізм, обмін повідомленнями, модульність та успадкування. Як правило, інкапсуляція досягається шляхом атрибутів приватними, створюючи загальнодоступні методи, які можуть бути використані для доступу до цих атрибутів. Спадкування дозволяє користувачеві розширювати класи (звані підкласи) з інших класів (звані суперкласи). Поліморфізм дозволяє програмісту замінити об’єкт класу замість об’єкта його суперкласу. Як правило, іменники, знайдені у визначенні проблеми, безпосередньо стають класами програми. І аналогічно дієслова стають методами. Деякі з найпопулярніших мов OOP - Java та C #.
Чим відрізняється AOP від OOP?
Ключова відмінність OOP від AOP полягає в тому, що основна увага OOP полягає в тому, щоб розбити завдання програмування на об'єкти, які інкапсулюють дані та методи, в той час як фокус AOP полягає в тому, щоб розбити програму на перехресні проблеми. Насправді AOP не є конкурентом для OOP, оскільки він з'явився поза парадигмою OOP. AOP розширює OOP, вирішуючи декілька своїх проблем. AOP вводить акуратні способи впровадження проблем з перекрестним вирізанням (які, можливо, були розкидані по декількох місцях у відповідній реалізації OOP) в одному місці. Тому AOP робить програму більш чистою та вільно пов'язаною.