stringtranslate.com

Предметно-ориентированное программирование

В вычислительной технике субъектно -ориентированное программирование — это объектно-ориентированная парадигма программного обеспечения , в которой состояние (поля) и поведение (методы) объектов не рассматриваются как присущие самим объектам, а предоставляются различными субъективными восприятиями («субъектами») объектов. Термин и концепции были впервые опубликованы в сентябре 1993 года в докладе на конференции [1], который позже был признан одним из трех наиболее влиятельных докладов, представленных на конференции между 1986 и 1996 годами. [2] Как показано в этой статье, проводится аналогия с контрастом между философскими взглядами Платона и Канта в отношении характеристик «реальных» объектов, но примененных к программным. Например, хотя мы все можем воспринимать дерево как имеющее измеримую высоту, вес, массу листьев и т. д., с точки зрения птицы дерево может также иметь меры относительной ценности для пищевых целей или гнездования, или с точки зрения налогового оценщика оно может иметь определенную налогооблагаемую стоимость в данном году. Ни дополнительная информация о состоянии птицы, ни налогового оценщика не должна рассматриваться как внутренняя по отношению к дереву, но добавляется восприятием птицы и налогового оценщика, и из анализа Канта то же самое может быть верно даже для характеристик, которые мы считаем внутренними.

Субъектно-ориентированное программирование выступает за организацию классов, описывающих объекты , в «субъекты», которые могут быть составлены для формирования более крупных субъектов. В точках доступа к полям или методам могут быть составлены вклады нескольких субъектов. Эти точки были охарактеризованы как точки соединения [3] субъектов. Например, если дерево срублено, задействованным методам может потребоваться объединить поведение субъектов птицы и налогового инспектора с поведением самого дерева. Поэтому это фундаментально взгляд на композиционную природу разработки программного обеспечения, в отличие от алгоритмической (процедурной) или скрывающей представление (объектной) природы.

Отношения

Связь с аспектно-ориентированным программированием

Введение аспектно-ориентированного программирования в 1997 году [4] подняло вопросы о его связи с субъектно-ориентированным программированием и о разнице между субъектами и аспектами. Эти вопросы оставались без ответа в течение некоторого времени, но были рассмотрены в патенте на аспектно-ориентированное программирование, поданном в 1999 году [5] , в котором два момента выступают как характерные отличия от более раннего искусства:

В субъектно-ориентированном представлении cross-cut может быть размещен отдельно от аспекта (субъекта), и поведение не навязывается аспектом, а регулируется правилами композиции. Ретроспективный взгляд [6] также позволяет отличить аспектно-ориентированное программирование по его введению и использованию концепции pointcut, похожего на запрос, для внешнего навязывания точек соединения, используемых аспектами общими способами.

В представлении субъектно-ориентированного программирования точки соединения были намеренно ограничены доступом к полю и вызовом метода на том основании, что это были точки, в которых хорошо спроектированные фреймворки были разработаны для допуска функционального расширения. Использование внешних навязанных точек среза является важной лингвистической возможностью, но остается одной из самых спорных особенностей аспектно-ориентированного программирования. [7]

Связь с аспектно-ориентированной разработкой программного обеспечения

К началу тысячелетия стало ясно, что ряд исследовательских групп занимались различными технологиями, которые использовали композицию или присоединение отдельно упакованных состояний и функций для формирования объектов. [8] Чтобы выделить общую область интересов из аспектно-ориентированного программирования с его конкретными патентными определениями и подчеркнуть, что композиционная технология имеет дело не только с фазой кодирования разработки программного обеспечения, эти технологии были объединены под термином « Аспектно-ориентированная разработка программного обеспечения» [9] , а также была начата организация и серия международных конференций по этой теме. Подобно аспектно-ориентированному программированию, предметно-ориентированное программирование, композиционные фильтры, функционально-ориентированное программирование и адаптивные методы считаются подходами к аспектно-ориентированной разработке программного обеспечения.

Размеры

Многомерное разделение интересов, Hyper/J и среда манипуляции интересами

Первоначальная формулировка предметно-ориентированного программирования намеренно представляла его как технологию упаковки – позволяющую расширить пространство функций и типов данных в любом измерении. Первые реализации были для C++, [10] и Smalltalk. [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] или sourceforge [19] соответственно, но ни один из них активно не поддерживается.

Предметно-ориентированное программирование как «третье измерение»

Метод диспетчеризации в объектно-ориентированном программировании можно рассматривать как «двумерный» в том смысле, что выполняемый код зависит как от имени метода, так и от рассматриваемого объекта. Это можно сравнить [20] с процедурным программированием, где имя процедуры разрешается напрямую или одномерно в подпрограмму, а также с субъектно-ориентированным программированием, где отправитель или субъект также имеют отношение к диспетчеризации, составляя третье измерение.

Смотрите также

Ссылки

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

Внешние ссылки