Предметно-ориентированное программирование
В этой статье используются голые URL-адреса , которые неинформативны и уязвимы к порче ссылок . ( Август 2022 г. ) |
В вычислительной технике субъектно -ориентированное программирование — это объектно-ориентированная парадигма программного обеспечения , в которой состояние (поля) и поведение (методы) объектов не рассматриваются как присущие самим объектам, а обеспечиваются различными субъективными восприятиями («субъектами»). объектов. Термин и концепции были впервые опубликованы в сентябре 1993 года в докладе конференции. [1] который позже был признан одним из трех наиболее влиятельных документов, представленных на конференции в период с 1986 по 1996 год. [2] Как показано в этой статье, проводится аналогия с контрастом философских взглядов Платона и Канта на характеристики «реальных» объектов, но применительно к программным. Например, хотя мы все можем воспринимать дерево как имеющее измеримую высоту, вес, массу листьев и т. д., с точки зрения птицы дерево также может иметь показатели относительной ценности для еды или гнездования, или с точки зрения налогового инспектора, он может иметь определенную налогооблагаемую стоимость в данном году. Дополнительную информацию о состоянии ни птицы, ни сборщика налогов не следует рассматривать как внутреннюю для дерева, она добавляется восприятием птицы и сборщика налогов, и, согласно анализу Канта, то же самое может быть верно даже для характеристик, о которых мы думаем. как внутреннее.
Предметно-ориентированное программирование предполагает организацию классов , описывающих объекты , в «субъекты», которые можно объединять в более крупные субъекты. В точках доступа к полям или методам могут быть составлены вклады нескольких субъектов. Эти точки были охарактеризованы как точки соединения. [3] предметов. Например, если дерево срублено, используемые методы могут потребовать объединения поведения птицы и испытуемых налогового инспектора с поведением самого дерева. Таким образом, по сути, это взгляд на композиционную природу разработки программного обеспечения, в отличие от алгоритмической (процедурной) или скрывающей представление (объектной) природы.
Отношения
[ редактировать ]Связь с аспектно-ориентированным программированием
[ редактировать ]Внедрение аспектно-ориентированного программирования в 1997 году. [4] поднял вопросы о его отношении к предметно-ориентированному программированию, а также о разнице между предметами и аспектами. Некоторое время эти вопросы оставались без ответа, но были решены в патенте на аспектно-ориентированное программирование, поданном в 1999 году. [5] в котором два момента выступают как характерные отличия от более раннего искусства:
- аспектная программа включает в себя как а) сквозной фрагмент, который содержит точку выполнения, в которую должно быть включено сквозное поведение; и b) сквозное действие, содержащее часть реализации, связанную с сквозным переходом, причем эта часть реализации содержит машиночитаемый программный код, который реализует сквозное поведение.
- этот аспект прозрачно навязывает сквозное поведение классам объектов и другим объектам программного обеспечения.
В предметно-ориентированной перспективе поперечное сечение может быть помещено отдельно от аспекта (субъекта), и поведение не навязывается аспектом, а регулируется правилами композиции. Оглядываясь назад [6] позволяет также различать аспектно-ориентированное программирование за счет введения и использования концепции точечного разреза, подобного запросу , для внешнего наложения точек соединения, используемых аспектами в общих чертах.
В представлении предметно-ориентированного программирования точки соединения были намеренно ограничены доступом к полям и вызовом методов на том основании, что это были точки, в которых хорошо спроектированные структуры были спроектированы так, чтобы допускать функциональное расширение. Использование навязанных извне точек является важной лингвистической возможностью, но остается одной из наиболее противоречивых особенностей аспектно-ориентированного программирования. [7]
Связь с аспектно-ориентированной разработкой программного обеспечения
[ редактировать ]На рубеже тысячелетий стало ясно, что ряд исследовательских групп разрабатывали различные технологии, которые использовали композицию или присоединение отдельно упакованного состояния и функции для формирования объектов. [8] Чтобы отличить общую область интересов от аспектно-ориентированного программирования с его конкретными патентными определениями и подчеркнуть, что композиционная технология имеет дело не только с этапом кодирования разработки программного обеспечения, эти технологии были объединены под термином « Аспектно-ориентированная разработка программного обеспечения» . [9] а также организация и серия международных конференций, начатых по этой теме. Как и аспектно-ориентированное программирование, предметно-ориентированное программирование, композиционные фильтры, функционально-ориентированное программирование и адаптивные методы считаются аспектно-ориентированными подходами к разработке программного обеспечения.
Размеры
[ редактировать ]Многомерное разделение задач, Hyper/J и среда манипулирования проблемами
[ редактировать ]Первоначальная формулировка предметно-ориентированного программирования сознательно рассматривала его как технологию упаковки, позволяющую расширять пространство функций и типов данных в любом измерении. Первые реализации были для C++, [10] и Смолток. [11] В этих реализациях использовались концепции программных меток и правил композиции для описания объединения субъектов.
Чтобы решить проблему, связанную с тем, что необходимо обеспечить лучшую основу для анализа и составления программного обеспечения не только с точки зрения его упаковки, но и с точки зрения различных проблем, решаемых этими пакетами, была разработана явная организация материала с точки зрения многообразия. многомерная «матрица», в которой проблемы связаны с программными модулями, которые их реализуют. Эта организация называется многомерным разделением задач , и описывающая ее статья [12] был признан самым влиятельным документом конференции ICSE 1999 года. [13]
Эта новая концепция была реализована для создания программного обеспечения Java названием Hyper/J . с использованием инструмента под [14]
Композиция и концепция субъекта могут применяться к программным артефактам, не имеющим исполняемой семантики, например к спецификациям требований или документации. исследовательский инструмент для Eclipse , получивший название Concern Manipulation Environment (CME). Описан [15] в каких инструментах для запросов, анализа, моделирования, [16] и композиция применяются к артефактам на любом языке или представлении посредством использования соответствующих подключаемых адаптеров для управления представлением.
Преемник механизма композиции Hyper/J. [17] был разработан как часть CME, который использует общий подход для нескольких элементов механизма композиции:
- язык запросов с унификацией для определения точек соединения,
- гибкая модель структурного крепления,
- спецификация вложенного графа для упорядочивания идентифицированных элементов,
- и спецификация порядка приоритетов для разрешения конфликтов между конфликтующими правилами.
Доступны как Hyper/J, так и CME от AlphaWorks. [18] или исходный код, [19] соответственно, но ни один из них активно не поддерживается.
Предметно-ориентированное программирование как «третье измерение»
[ редактировать ]Диспетчерию метода в объектно-ориентированном программировании можно рассматривать как «двумерную» в том смысле, что выполняемый код зависит как от имени метода, так и от рассматриваемого объекта. Это можно противопоставить [20] с процедурным программированием, где имя процедуры напрямую или одномерно разрешается в подпрограмму, а также с субъектно-ориентированным программированием, где отправитель или субъект также имеет отношение к отправке, составляя третье измерение.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Уильям Харрисон и Гарольд Осшер, Субъектно-ориентированное программирование - критика чистых объектов, Материалы конференции 1993 г. по системам, языкам и приложениям объектно-ориентированного программирования, сентябрь 1993 г.
- ^ «Самая влиятельная бумажная награда OOPSLA» .
- ^ Гарольд Осшер, Пери Тарр. Композиция на уровне операций: случай в точке (соединения), в ECOOP '98 Workshop Reader, 406–409
- ^ Кицалес, Г. ; Лампинг, Дж.; Мендекар, А.; Маэда, К.; Лопес, К.; Лойнтье, Дж. М.; Ирвин, Дж. (1997). Аспектно-ориентированное программирование (PDF) . ЭКООП '97. Материалы 11-й Европейской конференции по объектно-ориентированному программированию . ЛНКС . Том. 1241. С. 220–242. CiteSeerX 10.1.1.115.8660 . дои : 10.1007/BFb0053381 . ISBN 3-540-63089-9 .
- ^ Кичалес; Грегор Дж.; Освещение; Джон О.; Лопес; Кристина В.; Хугунин; Джеймс Дж.; Хилсдейл; Эрик А.; Бояпати; Чандрасекхар, Аспектно-ориентированное программирование, патент США 6 467 086, 15 октября 2002 г.
- ^ Уильям Харрисон. Деконструкция и реконструкция аспектной ориентации, Седьмой ежегодный семинар по основам аспектных языков, Брюссель, Бельгия, 1 апреля 2008 г., под редакцией Гэри Т. Ливенса, Цифровая библиотека ACM, 2008, стр. 43-50.
- ^ Фридрих Штайманн. Парадоксальный успех аспектно-ориентированного программирования, Материалы 21-й ежегодной конференции ACM SIGPLAN по системам, языкам и приложениям объектно-ориентированного программирования, Портленд, Орегон, США, 2006, стр. 481–497.
- ^ Сообщения ACM, Vol. 44, № 10, октябрь 1994 г., стр. 28-95.
- ^ http://aosd.net/
- ^ Гарольд Осшер, Мэтью Каплан, Уильям Харрисон, Александр Кац и Винсент Краскал, Правила предметно-ориентированной композиции, Материалы конференции 1995 г. по системам, языкам и приложениям объектно-ориентированного программирования, октябрь 1995 г.
- ^ Хафед Мили, Уильям Харрисон, Гарольд Осшер, Поддержка предметно-ориентированного программирования в Smalltalk, Proceedings of Tools USA 96, август 1996 г.
- ^ Гарольд Осшер, Пери Тарр, Уильям Харрисон, Стэнли Саттон, N степеней разделения: многомерное разделение задач, материалы Международной конференции по разработке программного обеспечения 1999 г., май 1999 г.
- ^ «SIGSOFT — Специальная группа ACM по разработке программного обеспечения» .
- ^ Гарольд Осшер, Пери Тарр. Hyper/J: Многомерное разделение задач для Java, Материалы 23-й Международной конференции по разработке программного обеспечения, Торонто, Онтарио, Канада, 2001 г., Страницы: 821–822.
- ^ Уильям Чанг, Уильям Харрисон, Винсент Краскал, Гарольд Осшер, Стэнли М. Саттон-младший, Пери Тарр, Мэтью Чепмен, Эндрю Клемент, Хелен Хокинс, Сиан Январь. Среда манипулирования озабоченностью, Содержание 27-й международной конференции по программной инженерии, Сент-Луис, Миссури, США, 2005 г.
- ^ Уильям Харрисон, Гарольд Осшер, Стэнли Саттон, Пери Тарр. Моделирование проблем в среде манипулирования проблемами, Материалы семинара 2005 г. по моделированию и анализу проблем в программном обеспечении, Сент-Луис, Миссури, 2005 г.
- ^ Уильям Харрисон, Гарольд Осшер, Пери Тарр. Общая композиция артефактов программного обеспечения, Материалы семинара по композиции программного обеспечения 2006 г., март 2006 г., Springer-Verlag, LNCS 4089, страницы 194–210.
- ^ «Устаревшие сообщества — сообщество IBM» .
- ^ «Среда манипулирования озабоченностью (CME)» . 24 апреля 2015 г.
- ^ Журнал объектных технологий: контекстно-ориентированное программирование