Ассириология
- 1 year ago
- 0
- 0
Аспе́ктно-ориенти́рованное программи́рование (АОП) — парадигма программирования , основанная на идее разделения функциональности для улучшения разбиения программы на модули .
Методология АОП была предложена группой инженеров исследовательского центра Xerox PARC под руководством Грегора Кичалеса (Gregor Kiczales). Ими же было разработано аспектно-ориентированное расширение для языка Java , получившее название AspectJ — (2001 год).
Существующие парадигмы программирования — процедурное , модульное , объектно-ориентированное программирование (ООП) и предметно-ориентированное проектирование — предоставляют определённые способы для разделения и выделения функциональности: функции , модули , классы , но некоторую функциональность с помощью предложенных методов невозможно выделить в отдельные сущности. Такую функциональность называют сквозной (от англ. scattered — разбросанный или англ. tangled — переплетённый), так как её реализация распределена по различным модулям программы. Сквозная функциональность приводит к рассредоточенному и запутанному коду, сложному для понимания и сопровождения.
Ведение лога и обработка исключений — типичные примеры сквозной функциональности. Другие примеры: трассировка ; аутентификация и проверка прав доступа ; контрактное программирование (в частности, проверка пред- и постусловий). Для программы, написанной в парадигме ООП, любая функциональность, по которой не была проведена декомпозиция , является сквозной.
Однако, как утверждают некоторые авторы , АОП может успешно применяться и для решения задач защиты, многопоточности , управления транзакциями и многих других.
Все языки АОП предоставляют средства для выделения сквозной функциональности в отдельную сущность. Так как AspectJ является родоначальником этого направления, используемые в этом расширении концепции распространились на большинство языков АОП.
Основные понятия АОП:
Для улучшения этой статьи
желательно
:
|