WikiDer > АспектС ++
Разработчики) | Олаф Спинчик (руководитель проекта), Георг Блашке, Кристоф Борхерт, Бенджамин Крамер, Даниэль Ломанн, Хорст Ширмайер, Уте Спинчик, Рейнхард Тартлер, Маттиас Урбан [1] |
---|---|
изначальный выпуск | 6 ноября 2001 г.[2] |
Стабильный выпуск | 2.2 / 10 марта 2017 |
Написано в | C ++ |
Операционная система | Кроссплатформенность |
Тип | Компилятор исходного кода |
Лицензия | GPL 2+ |
Интернет сайт | www |
АспектС ++ является аспектно-ориентированный расширение C и C ++ языков. Оно имеет компилятор исходного кода, который переводит AspectC ++ исходный код в компилируемый C ++. Компилятор доступен под GNU GPLхотя некоторые расширения специфичные для Майкрософт Виндоус доступны только через pure-systems GmbH.
Аспектно-ориентированное программирование позволяет объединить сквозные задачи в единую модуль, аспект. Аспекты могут изменять существующие классы, но чаще всего они предоставляют «советы», которые выполняются до, после или вокруг существующих функций.
пример
Все вызовы конкретной функции можно отследить с помощью аспекта, а не вставляя во многих местах операторы cerr или print:
аспект Tracer{ совет вызов("%% Iter :: Reset (...)") : перед() { Cerr << "собирается вызвать Iter :: Reset для" << JoinPoint::подпись() << конец; }};
Аспект Tracer распечатает сообщение перед любым вызовом % Iter :: Сброс
. В % Iter
синтаксис означает, что он будет соответствовать всем классам, заканчивающимся на Iter.
Каждое «совпадающее» место в исходном коде называется точка соединения- совет присоединяется к этому коду (или советует). AspectC ++ предоставляет API точки соединения для предоставления и доступа к информации о точке соединения. Например, функция:
JoinPoint::подпись()
возвращает имя функции (которая соответствует % Iter :: Сброс
), который будет вызван.
API точки соединения также предоставляет время компиляции информация о типе, которую можно использовать в аспекте для доступа к типу или значению аргументов, а также к типу и возвращаемому значению метода или функции.
использованная литература
внешние ссылки
- АспектС ++
- Статьи по аспектно-ориентированному программированию и AspectC ++ на прошлых конференциях AOSD
Эта программная инженерия-связанная статья является заглушка. Вы можете помочь Википедии расширяя это. |