Аспектно-ориентирано програмиране: Разлика между версии

Изтрито е съдържание Добавено е съдържание
Denitsar (беседа | приноси)
Denitsar (беседа | приноси)
Ред 71:
 
== Модели на съединени точки ==
Компонентът ''adviceадвайс'' на аспектно – ориентирания език дефинира модели на съединени точки (МСТ).
МСТ определят три неща:
# Кога adviceадвайс-а може да бъде пуснат. Наречени са съединени точки, защото те са точки на работеща програма, където допълнително поведение може да бъде полезно присъединено. За да бъде полезна, съединената точка трябва да може да бъде адресирана и разбрана от всеки обикновен програмист. Трябва също да бъде стабилна при незначителни промени в програмата, за да може всеки отделен аспект да бъде стабилен при такива промени. Много АОП имплементации поддържат метод за изпълнение и полеви препратки във вид на съединени точки.
# Поинткътс се нарича начина за определяне (или количествено определяне) на съединени точки. Поинткътс определят дали дадена съединени точка съвпада. Най-полезните поинткътс програмни езици използват подобен синтаксис на базовия език за програмиране (например използва Джава сигнатури) и позволяват повторна употреба чрез наименуване и комбиниране.
# Средство да се зададе на кода да тръгне по съединени точка. [[:bg:AspectJ|AspectJ]] нарича това adviceадвайс и може да го пусне преди, след и около съединени точка. Някои имплементации също поддържат неща като дефиниране на метод по отношение на друг клас.
Моделите на съединени точки могат да бъдат сравнени на базата на изложените съединени точки, по какъв начин те са специфицирани, позволените им операции, и структурните подобрения, които могат да бъдат изразени.
 
==== Модел на съединени точки на AspectJ ====
''Главна статия: [[:bg:AspectJ|AspectJ]]''
* Съединените точки в [[:bg:AspectJ|AspectJ]] включват извикването на метод или конструкция или изпълнението, инициализирането на клас или обект, достъпа до поле за четене и писане, обработка на изключения и тн. Те не включват цикли, супер извиквания, хвърляне на клаузи, множество изявления, и др.
* Съединените точки са определят чрез комбинирането на обозначители на примитивни съединени точки (ОПСТ).
„Типова“ ОПСТ съвпада със съединена точка от определен тип (например изпълнението на метод) и обикновено взима за вход сигнатура като при Джава. Подобна поинткът би изглеждала така:
Ред 96:
</source>
Този поинткът съвпада със съединена точка на метод execution, ако името на метода започва със „set“ и this е инстанция на тип Point в пакет com.company. Moже да бъде реферирана като се използва името "set()".
* AdviceАдвайс-а определя да пусне (преди, след или около) съединена точка (определена чрез поинткът) определен код (специфициран като код в метод). АОП рънтайм извиква AdviceАдвайс-а автоматично, когато поинткъта съвпада със съединената точка. Например:
 
after() : set() {
Ред 105:
 
==== Други потенциални модели на съединени точки ====
Има и други типове МСТ. Всички езици с adviceадвайс могат да бъдат определени от гледна точка на техните МСТ. Например, предполагаем аспектен език за [[:bg:UML|UML]] може да има следната МСТ:
* Съединените точки за всички елементи от модела.
* Поинткътите са булеви изрази, комбиниращи елементите на модела.