
Необходимость общения на иностранном языке – аспект, оказывающий серьезное влияние на весь процесс пребывания за границей…И все же, возвращаясь к теме этой статьи, я попытаюсь простым языком изложить суть аспектно-ориентированного программирования (читайте выделенный текст). Приведу пару примеров из жизни и затем “притяну их за уши” к философии рассматриваемой парадигмы. Рассмотрим, к примеру, процесс приема пищи. Цель этого процесса всем понятна, но его окружение может быть весьма разнообразным, например: обед дома, обед в ресторане и обед в заведении с самообслуживанием, например в столовой. Окружение диктует свои правила, и эти правила, если следовать терминологии АОП, являют собой аспект окружения целевого действа. В первом случае до приема пищи вы ее должны купить в магазине и приготовить, а то, что происходит после приема – определяется особенностями поведения индивида. Во втором случае: приходим, изучаем меню и делаем заказ. После платим по счету и, возможно, оставляем “на чай” официанту. В третьем случае сначала стоим в очереди с подносом, потом оплачиваем то, что показалось нам съедобным, а то, что происходит после завершения основного процесса, как и в первом случае, никем не регламентируется, разве что в некоторых местах заставляют убирать за собой. Вот три разных контекста, три разных окружения или три разных аспекта
целевого процесса приема пищи. И именно методику отделения целевой функциональности от функциональности аспекта окружения - сквозной функциональности предлагает АОП. Аналогично можно привести примеры различных аспектов окружения, рассмотрев процесс покупки чего-либо, например: в магазине, в интернете или на аукционе.Спецодежда – еще один пример аспекта повседневной жизни...
Также, особенности пребывания в конкретной стране за пределами родины можно отнести к сквозной функциональности по отношению к самой туристической поездке. Последний пример даже более наглядный, поскольку в этом случае аспект вбирает в себя все особенности нашего окружения в процессе того, как мы делаем покупки, ужинаем в ресторане или занимаемся еще чем-либо за рубежом. Например, то, что мы общаемся с людьми - является целевой функциональностью, а то, что нам приходится делать это на иностранном языке – сквозной функциональностью аспекта пребывания в конкретной стране. На самом деле любые примеры можно назвать удачными или неудачными и с любыми примерами спорить. Вызвано это тем, что в реальном мире мы постоянно меняем окружение и сами не замечаем, как принимаем правила каждого нового аспекта. Цель АОП – предоставить способы эффективно отделять целевую функциональность от сквозной, с тем чтобы без лишних затрат менять второе и сохранять первое, или переносить целевую функциональность из одного окружения в другое.
Как говорят сами авторы, в первую очередь к сквозной функциональности любого программного окружения следует относить такие вещи, как ведение журналов операций (трассировки) и журналов исключительных ситуаций, авторизацию пользователей и процесс проверки прав доступа, форматирование текстовых сообщений, процедуры управления памятью и формирования “КЭШа” часто используемых данных, а также, выделение прочих вычислительных ресурсов. Не буду здесь приводить терминологию АОП, поскольку как раз эта часть в достаточной мере отражена в той же Википедии, но все же отмечу, что для основных объектно-ориентированных языков программирования уже разработаны расширения, позволяющие реализовывать концепции аспектно-ориентированного программирования на практике. К ним относятся AspectJ, Aspect.NET, AspectC++ и т.д.