Просмотров-287
0

Что такое аспектно-ориетированное программирование?

Ранее в статье Что такое программирование? мы писали, что процесс создания программы в основном определяется теми закономерностями, которые концентрируются в понятиях виды и парадигмы программирования. В данной статье показано, что аспектно ориентированное программирование как новая парадигма программирования расширяет свои возможности при разработке современного программного обеспечения. Расширение возможностей связано, прежде всего, с возможностью программировать, так называемую сквозную функциональность.

Функциональность называется сквозной (scattered — разбросанный, tangled — переплетённый), потому что её реализация распределена по различным модулям программы. Типичными примерами сквозной функциональности являются: ведение лога(журнала), обработка исключений, трассировка, аутентификация и проверка прав доступа, оценка производительности информационной системы и т.п.

Традиционные парадигмы процедурного программирования при проектировании программы используют функциональную декомпозицию задачи при которой сквозную функциональность запрограммировать трудно или не возможно.

Аналогично парадигма объектно-ориентированного программирования использует при проектировании программы объектную декомпозицию задачи. Однако с помощью объектов также трудно локализовать, так называемую, сквозную функциональность в отдельных модулях. На помощь приходит аспектно-ориентированный подход к созданию программного обеспечения.

Аспектно ориентированное программи́рование (АОП) это новая парадигма программирования, основанная на идее разделения сквозной функциональности для улучшения разбиения программы на модули.

Иными словами аспектно-ориентированное программирование предназначено для решения сквозных задач, которые могут представлять собой любой код, многократно повторяющийся разными методами, который нельзя полностью структурировать в отдельный модуль.

Аспектно-ориентированное программирование — это парадигма горизонтального программирования, при которой определенный тип поведения применяется к нескольким классам, которые не разделяют одно и то же вертикальное объектно-ориентированное наследование.

Основные понятия аспектно ориентированного программирования:

  • Аспект — модуль или класс, реализующий сквозную функциональность. Аспект изменяет поведение остального кода, применяя совет в точках соединения, определённых некоторым срезом.
  • Совет  — средство оформления кода, которое должно быть вызвано из точки соединения. Совет может быть выполнен до, после или вместо точки соединения.
  • Точка соединения — точка в выполняемой программе, где следует применить совет. Многие реализации АОП позволяют использовать вызовы методов и обращения к полям объекта в качестве точек соединения.
  • Срез — набор точек соединения. Срез определяет, подходит ли данная точка соединения к данному совету. Самые удобные реализации АОП используют для определения срезов синтаксис основного языка (например, в AspectJ применяются Java-сигнатуры) и допускают их повторное использование с помощью переименования и комбинирования.
  • Внедрение  — изменение структуры класса и/или изменение иерархии наследования для добавления функциональности аспекта в инородный код. Обычно реализуется с помощью некоторого метаобъектного протокола.

Применяя аспектно-ориентированное программирование, программисты реализуют сквозные задачи(функциональность), создавая аспект, а затем применяя его условно на основе точки соединения. Это называется применением рекомендаций.

Аспектно-ориентированный  подход рассматривает программную систему как набор модулей, каждый из которых отражает определенный аспект — цель, особенность функционирования системы и т.п.

Главный недостаток аспектно-ориентированного программирования состоит в том, что он он скрывает логику и сложность. Но неумелое его применение может приводить к побочным эффектам, причину которых трудно понять сходу.

Аспектно ориентированное программирование может поддерживаться в рамках уже существующих языков программирования. Так, в частности, исследовательский центр Xerox PARC разработал расширение AspectJ, поддерживающее аспектно-ориентированное программирование в рамках языка Java. Кроме того, на практике уже используется модуль АОП Spring Python.

Заключение

Таким образом, аспектно ориентированное программирование как новая парадигма программирования расширяет свои возможности при разработке программного обеспечения, обеспечивая решение задач сквозной функциональности.

Смотрите также…

  1. Как стать программистом?
  2. Как стать Web программистом?
Внимание! Кто хочет своевременно узнавать о выходе новой статьи на сайте должен подписаться.

ПОДПИСКА НА РАССЫЛКУ

Статьи об онлайн курсах обучения

Дистанционное обучение
Обучение программированию
Проектирование информационных систем
 
Реклама. Информация о рекламодателе по ссылкам в статье.

brasm

Пенсионер с 33 - летним педагогическим стажем

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *