WikiDer > Композиционные фильтры - Википедия
В составные фильтры модель обозначает модульное расширение традиционного объектная модель. Он обеспечивает решение широкого круга задач при создании больших и сложных приложений. В частности, одна реализация фильтров композиции обеспечивает слой абстракции для систем передачи сообщений.
Фильтры композиции работают, изменяя поведение объекта путем манипулирования входящими и исходящими сообщениями. Это делается с помощью входных и выходных фильтров, которые управляются условиями.
История и мотивация
В одновременный и распределен вычислений, существует множество проблем, таких как разброс и запутывание кода, с которыми было трудно справиться с использованием традиционных объект-ориентированные модели. Возникла потребность в разработке новой модели разработки программного обеспечения, которая решила бы эти проблемы, и это привело к формированию Аспектно-ориентированная разработка программного обеспечения парадигма. Несколько моделей в этой парадигме были разработаны одновременно, и одна из них - объектная модель Composition Filters. Пионерами этой модели были Мехмет Аксит и различные аспиранты (Лодевийк Бергманс, Ян Бош, Бедир Текинердоган) и многие магистры наук. студенты группы TRESE на Университет Твенте в Нидерландах. Он был основан на языке Сина [1][2] который был разработан Мехметом Акситом в его кандидатской диссертации. С тех пор в модели было сделано много улучшений.[3][4]
Дизайн
Дизайн модели композиционных фильтров является расширением дизайна объектной модели ядра. Дизайн состоит из двух основных частей - ядра или части реализации и внешнего уровня или части интерфейса. Расширения сделаны в части интерфейса для создания модели фильтров композиции из традиционной объектной модели ядра.[5]
Часть реализации
Часть реализации или ядро состоит из одного слоя с тремя типами компонентов:
- Переменные экземпляра
- Методы
- Условия
Он также состоит из границы инкапсуляции, которая разделяет уровни реализации и интерфейса.
Переменные экземпляра
Переменные экземпляра - единственные полностью инкапсулированные компоненты ядра. Доступ к этим переменным из-за границы невозможен. В этой модели переменные экземпляра могут быть любого типа. Примитивные типы данных, такие как целые числа, символы и определяемые пользователем типы данных, такие как классы и перечисления, считаются переменными экземпляра.
Методы
Поведение объекта реализуется через его методы. Метод состоит из двух частей - тела метода и объявления метода. Действия, которые объект должен выполнить при вызове, определены в теле метода. Объявление метода состоит из имени метода, имени и типа параметров и возвращаемого типа. Методы не полностью инкапсулированы в ядре и могут использоваться в интерфейсной части.
Первоначальный метод
Первоначальный метод - это специальный метод, функция которого аналогична функции конструкторы в других объектно-ориентированных моделях.
Условия
Метод, который имеет тип возвращаемого значения Boolean и пустой список параметров, называется условием. Условия могут использоваться для предоставления информации о текущем состоянии объекта. Подобно методам, условия также могут использоваться в интерфейсной части, и большая часть использования условий находится вне части реализации.
Часть интерфейса
Интерфейсная часть объектной модели композиционных фильтров состоит из двух основных компонентов - входного и выходного фильтров. Он также содержит два вспомогательных компонента - внутреннее и внешнее. Более того, методы и условия из части реализации также могут быть доступны из части интерфейса.
Фильтры
Входные и выходные фильтры похожи по конструкции, но различаются по функциям. Входные фильтры предназначены для обработки сообщений, отправляемых объекту, а выходные фильтры - для сообщений, отправляемых объектом. Основная функция фильтров - манипулировать поступающими сообщениями и передавать их на следующий уровень. Фильтры спроектированы послойно, сообщение должно пройти через один уровень, чтобы добраться до следующего. Каждый слой может состоять из разных фильтров. Каждый фильтр задает определенный шаблон. Шаблон определяет синтаксис, которому должно соответствовать входящее или исходящее сообщение. Когда приходит сообщение, существуют две возможности: сообщение отклоняется фильтром или обрабатывается фильтром. Способ, которым сообщение отклоняется или обрабатывается, зависит от типа фильтра.
Дизайн фильтра
Фильтр разработан с использованием набора фильтрующих элементов. Этот набор упорядочен, поскольку каждое сообщение применяется слева направо. Это продолжается до совпадения.
Каждый фильтрующий элемент состоит из трех компонентов - условия, соответствующей части и замещающей части.
Условие - необходимое состояние, в котором должен находиться элемент, чтобы продолжить оценку сообщения.
Соответствующая часть - часть, в которой оцениваемое сообщение сопоставляется с шаблоном.
Часть замены - часть, в которой значения замены указываются для сообщения, которое было сопоставлено ранее.
Внутренности
Внутренние элементы - это вложенные объекты, которые ссылаются на входные фильтры. Они полностью заключены в интерфейсную часть. Они автоматически создаются при создании объекта.
Внешние
Внешние - это вложенные объекты, которые ссылаются на выходные фильтры. Они используются для объявления объектов, которые лежат за пределами модели фильтров композиции, но все еще находятся в ее области действия. Примером таких объектов являются глобальные переменные.
Язык программирования SINA
Язык программирования SINA - объектно-ориентированный программирование язык, который был разработан для реализации возможностей объектной модели композиционных фильтров. Каждая программа SINA представляет собой набор классов, каждый из которых может быть разделен на реализацию и интерфейс. Первая реализация SINA была для Болтовня и работал только в этой среде.[6]
Приложения
Абстрактные типы коммуникации
Объект абстрактного коммуникационного типа абстрагирует коммуникации и взаимодействия между объектами. Цели ACT - улучшить возможность повторного использования во всем приложении, скрыть детали реализации в отдельных модулях и снизить сложность моделирования многоуровневых архитектур связи.
Эксперты[ВОЗ?] считают, что обычные объектно-ориентированные модели слишком низкоуровневые, потому что семантика связи между двумя объектами не может быть легко распространена на другие объекты. Следовательно, возникла потребность в механизме языка высокого уровня, который можно использовать для моделирования многоуровневых системных архитектур, в которых каждая система на уровне обменивается данными со своими соседними уровнями. Такие механизмы, как наследование, обеспечивают абстракцию только на уровне объекта, но не могут абстрагировать связь между объектами.
Модель композиционных фильтров была применена к абстрактным коммуникациям между объектами. Объектный модуль расширен за счет введения фильтров ввода и вывода, которые определяют, что нужно делать с полученными и отправленными сообщениями.
Заметные преимущества ACT включают:
- ACT могут использоваться для перехвата и обработки сообщений, что достигается с помощью фильтров ввода и вывода.
- ACT снижает сложность программ, скрывая код взаимодействия (детали взаимодействия) в отдельных модулях. Программисты могут применять объектно-ориентированные механизмы для повторного использования этих компонентов.[7]
Модель интеграции базы данных
Фильтры композиции могут использоваться для включения функций базы данных, таких как постоянная динамическая данные структуры, совместное использование данных, транзакции, несколько представлений и ассоциативный доступ к объект-ориентированный язык. Основные объектно-ориентированные механизмы, такие как наследование и делегирование, также предоставляются фильтрами композиции. В модели интеграции базы данных операции с базой данных, такие как объединение, пересечение, исключение и выбор, разрабатываются с использованием фильтров композиции без нарушения объектно-ориентированных механизмов, таких как данные абстракция, инкапсуляция, передача сообщений и наследование.[8]
Другие реализации
Существует множество реализаций композиционных фильтров (включая SmallTalk и Ява реализации). Преимущество существующих реализаций заключается в отсутствии разницы между концептуальной моделью и моделью реализации, что упрощает понимание реализации определенных функций. Однако недостатком является то, что эти реализации медленные и имеют много накладных расходов. Одна реализация на Java, а именно ComposeJ, решает эту проблему с помощью подхода модификации исходного кода, ориентированного на время компиляции.[9]
Смотрите также
- Аспектно-ориентированное программирование
- Аспектно-ориентированная разработка программного обеспечения
- AspectJ
внешняя ссылка
- Домашняя страница фильтра композиции
- Реализация композиционных фильтров
- http://trese.cs.utwente.nl/oldhtml/publications/papers/CF_superimposition_bergmans_aksit.pdf
- Фильтры - История
- Язык программирования SINA
- - Фильтры композиции в C ++
Рекомендации
- ^ Аксит, Мехмет (1989-03-23). «О дизайне объектно-ориентированного языка Sina». Информация об исследованиях Университета Твенте.
- ^ Аксит, Мехмет. "Механизмы абстракции данных в Sina / st". ACM Press. ISSN 0362-1340.
- ^ Аксит, Мехмет (1992). "Объектно-ориентированная модель интеграции языка и базы данных: подход композиционных фильтров". ECOOP '92 Европейская конференция по объектно-ориентированному программированию. Конспект лекций по информатике. 615. Springer Verlag, Берлин. С. 372–395. Дои:10.1007 / BFb0053047. ISBN 3-540-55668-0.
- ^ Аксит, Мехмет (1992). «Препятствия в разработке объектно-ориентированного программного обеспечения». Уведомления ACM SIGPLAN. 27 (10): 341–358. Дои:10.1145/141937.141965.
- ^ "Объектная модель фильтров композиции". trese.cs.utwente.nl. Получено 18 апреля 2019.
- ^ Зиринг, Нил. «Словарь языков программирования». cgibin.erols.com. Получено 2016-02-06.
- ^ Мехмет Аксит, Кен Вакита, Ян Бош, Лодевийк Бергманс и Акинори Йонезава, «Абстрагирование взаимодействий объектов с использованием композиционных фильтров», Университет Твенте, Токийский университет и Токийский технологический институт
- ^ Мехмет Аксит, Лодевийк Бергманс и Синан Вурал, «Модель интеграции объектно-ориентированного языка и базы данных: подход составных фильтров», факультет компьютерных наук, Университет Твенте
- ^ Йоханнес Корнелис Вичман, «ComposeJ - разработка препроцессора для упрощения составных фильтров на языке Java», Университет Твенте