Какую же цель преследовали сотрудники Xerox, когда его создавали? Судя по определениям, АОП призвано упростить разделение основной и второстепенной функциональности АОП (аспектно-ориентированное программирование) - достаточно новое "направление" в программировании, появившееся в начале XXI века. И совсем не важно что вы будете делать незадолго до и после достижения этой цели. Итак, основная цель АОП - предоставить варианты качественно отделять целевую задачу от сквозной (второстепенной). Например, такими являются AspectJ, AspectC++ и тому подобные.
Как говорят авторы АОП, к сквозной функциональности следует относить ведение журналов трассировки и журналов нестандартных ситуаций, авторизацию и проверку возможных прав доступа, форматирование текстов и тому подобные вещи. Но ведь одной из основных целей создания всех парадигм программирования, и объектно-ориентированного тоже, является отвлечение разработчика от общения с техникой и концентрация его усилий на функциональности разрабатываемой им программы. Цель - всем понятна, но окружением может быть обед дома или в ресторане, а может даже в столовой. У каждого окружения - свои правила, но цель-то одна.
А ведь существует и субъектно-ориентированное программирование (СОП). Так как применение этой концепции выделяет основную цель из второстепенных, то можно сказать, что аспектно-ориентированное программирование углубляет тему шаблонного программирования введением глобальных шаблонов для разных второстепенных композиций и одной целевой функциональности. Вернемся к теме данной статьи и попытаемся максимально просто изложить суть АОП. Конечно, все новые идеи, внедренные в АОП на фоне ООП, например, уже не кажутся чем-то ультрановым, поэтому их могут просто обойти вниманием. Думаем, стоит отметить что для основных языков, относящихся к ООП, уже разработаны расширения, позволяющие работать и с АОП. Используя эти расширения, вы как бы заранее предупреждаете компилятор о том, что хотите использовать АОП. Равнозначных примеров можно привести бесконечно много, а здесь (для простоты) мы разобрали на примере приема пищи. Именно методы отделения цели окружения и предполагает АОП.
Но при этом без лишних затрат изменять второстепенное и сохранять основное, или переносить главную функциональность из одного второстепенного окружения в другое.