АОП против ООП
АОП (аспектно-ориентированное программирование) и ООП (объектно-ориентированное программирование) - это две парадигмы программирования. Парадигма программирования - это фундаментальный стиль компьютерного программирования. Парадигмы программирования различаются тем, как представлен каждый элемент программы и как определяется каждый шаг для решения задач. Как следует из названия, ООП фокусируется на представлении проблем с использованием объектов реального мира и их поведения, в то время как АОП занимается разбиением программ на отдельные сквозные задачи.
Что такое АОП?
АОП - это парадигма программирования, которая имеет дело с разбиением программы на связанные области функциональности (называемые проблемами), которые охватывают несколько областей, чтобы повысить модульность. Поддержка абстракций (таких как классы, методы и т. д.) для группировки и инкапсуляции задач в уникальные объекты предоставляется во многих других парадигмах программирования. Но проблемы (такие как «Ведение журнала») являются примерами сквозных проблем, потому что на каждую регистрируемую часть системы влияет стратегия, используемая для ведения журнала. Основное внимание во всех реализациях АОП уделяется подходящим сквозным выражениям для сбора всех проблем в одном месте.
Что такое ООП?
В ООП основное внимание уделяется размышлению о решаемой проблеме с точки зрения элементов реального мира и представлению проблемы с точки зрения объектов и их поведения. Классы отображают абстрактные представления объектов реального мира. Классы похожи на чертежи или шаблоны, которые собирают похожие элементы или вещи, которые можно сгруппировать вместе. Классы имеют свойства, называемые атрибутами. Атрибуты реализованы как глобальные переменные и переменные экземпляра. Методы в классах представляют или определяют поведение этих классов. Методы и атрибуты классов называются членами класса. Экземпляр класса называется объектом. Таким образом, объект - это структура данных, очень похожая на какой-либо объект реального мира.
Существует несколько важных концепций ООП, таких как абстракция данных, инкапсуляция, полиморфизм, обмен сообщениями, модульность и наследование. Как правило, инкапсуляция достигается за счет того, что атрибуты становятся закрытыми, а общедоступные методы можно использовать для доступа к этим атрибутам. Наследование позволяет пользователю расширять классы (называемые подклассами) из других классов (называемых суперклассами). Полиморфизм позволяет программисту подставлять объект класса вместо объекта его суперкласса. Как правило, существительные, встречающиеся в определении задачи, непосредственно становятся классами в программе. Точно так же глаголы становятся методами. Одними из самых популярных языков ООП являются Java и C.
В чем разница между АОП и ООП?
Ключевое различие между ООП и АОП заключается в том, что основное внимание в ООП уделяется разбиению задачи программирования на объекты, которые инкапсулируют данные и методы, в то время как основное внимание в АОП уделяется разбиению программы на сквозные задачи.. На самом деле АОП не является конкурентом ООП, потому что возник из парадигмы ООП. АОП расширяет ООП, решая несколько его проблем. АОП предлагает аккуратные способы реализации сквозных задач (которые могли быть разбросаны по нескольким местам в соответствующей реализации ООП) в одном месте. Таким образом, АОП делает программу более чистой и менее связанной.