Среда, 27.11.2024
Ukrainiancontet.at.ua
Меню сайта
Категории раздела
Програмування [35]
Мови веб-програмування [5]
О компании [0]
Новости игры
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0
Главная » 2015 » Октябрь » 25 » Аспектно-орієнтоване програмування
22:22
Аспектно-орієнтоване програмування
Аспектно-орієнтоване програмування (АОП) — парадигма програмування, заснована на ідеї поділу функціональності для поліпшення розбиття програми на модулі.

Методологія АОП була запропонована групою інженерів дослідницького центру Xerox PARC під керівництвом Грегора Кичалеса (Gregor Kiczales). Ними було розроблено аспектно-орієнтоване розширення для мови Java, що отримало назву AspectJ — (2001 рік).

Існуючі парадигми програмування — процедурне, модульне, об'єктно-орієнтоване програмування (ООП) і предметно-орієнтоване проектування — надають певні способи поділу та виділення функціональності: функції, модулі, класи, але деяку функціональність за допомогою запропонованих методів неможливо виділити в окремі сутності. Таку функціональність називають наскрізний (від англ. scattered — розкиданий або англ. tangled — переплетений), так як її реалізація розподілена по різних модулів програми. Наскрізна функціональність призводить до рассредоточенному і заплутаному кодом, складного для розуміння і супроводу.

Ведення логу і обробка виключень — типові приклади наскрізної функціональності. Інші приклади: трасування; аутентифікація і перевірка прав доступу; контрактне програмування (зокрема, перевірка перед - і марнослівями). Для програми, написаної в парадигмі ООП, будь функціональність, за якою не була проведена декомпозиція, є наскрізною.

Проте, як стверджують деякі автори[], АОП може успішно застосовуватися і для вирішення завдань захисту, багатопоточності, управління транзакціями і багатьох інших.

Всі мови АОП надають засоби для виділення наскрізної функціональності в окрему сутність. Так як AspectJ є родоначальником цього напрямку, використовувані в цьому розширенні концепції поширилися на більшість мов АОП.

Основні поняття АОП:

Аспект (англ. aspect) — модуль або клас, що реалізує наскрізну функціональність. Аспект змінює поведінку іншого коду, застосовуючи рада в точках з'єднання, визначених деякими зрізом.
Рада (англ. advice) — засіб оформлення коду, яке повинно бути викликано з точки з'єднання. Рада може бути виконаний до, після або замість точки з'єднання.

Точка з'єднання (англ. join point) — точка в виконуваної програмі, де слід застосувати рада. Багато реалізації АОП дозволяють використовувати виклики методів і звернення до полів об'єкта в якості точок з'єднання.

Зріз (англ. pointcut) — набір точок з'єднання. Зріз визначає, чи підходить дана точка з'єднання до цієї поради. Найбільш зручні реалізації АОП використовують для визначення зрізів синтаксис основної мови (наприклад, у AspectJ застосовуються Java-сигнатури) і дозволяють їх повторне використання з допомогою перейменування і комбінування.

Впровадження (англ. introduction, введення) — зміна структури класу та/або зміна ієрархії успадкування для додавання функціональності аспекту в сторонній код. Зазвичай реалізується за допомогою деякої метаобъектного протоколу (англ. metaobject protocol, MOP).
Категория: Програмування | Просмотров: 462 | Добавил: Admin | Теги: Аспектно-орієнтоване програмування | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Вход на сайт

Поиск
Интернет
Здоровье
Афиша
Ситуация на восток
Религия
Архив записей
Каталог сайтов Всего.RU
Рейтинг@Mail.ru
Copyright Ukrainiancontet.at.ua © 2024
uCozЯндекс.Метрика