Jump to content

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

(Перенаправлено с темы (программирование) )

В вычислительной технике субъектно -ориентированное программирование — это объектно-ориентированная парадигма программного обеспечения , в которой состояние (поля) и поведение (методы) объектов не рассматриваются как присущие самим объектам, а обеспечиваются различными субъективными восприятиями («субъектами»). объектов. Термин и концепции были впервые опубликованы в сентябре 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] с процедурным программированием, где имя процедуры напрямую или одномерно разрешается в подпрограмму, а также с субъектно-ориентированным программированием, где отправитель или субъект также имеет отношение к отправке, составляя третье измерение.

См. также

[ редактировать ]
  1. ^ Уильям Харрисон и Гарольд Осшер, Субъектно-ориентированное программирование - критика чистых объектов, Материалы конференции 1993 г. по системам, языкам и приложениям объектно-ориентированного программирования, сентябрь 1993 г.
  2. ^ «Самая влиятельная бумажная награда OOPSLA» .
  3. ^ Гарольд Осшер, Пери Тарр. Композиция на уровне операций: случай в точке (соединения), в ECOOP '98 Workshop Reader, 406–409
  4. ^ Кицалес, Г. ; Лампинг, Дж.; Мендекар, А.; Маэда, К.; Лопес, К.; Лойнтье, Дж. М.; Ирвин, Дж. (1997). Аспектно-ориентированное программирование (PDF) . ЭКООП '97. Материалы 11-й Европейской конференции по объектно-ориентированному программированию . ЛНКС . Том. 1241. С. 220–242. CiteSeerX   10.1.1.115.8660 . дои : 10.1007/BFb0053381 . ISBN  3-540-63089-9 .
  5. ^ Кичалес; Грегор Дж.; Освещение; Джон О.; Лопес; Кристина В.; Хугунин; Джеймс Дж.; Хилсдейл; Эрик А.; Бояпати; Чандрасекхар, Аспектно-ориентированное программирование, патент США 6 467 086, 15 октября 2002 г.
  6. ^ Уильям Харрисон. Деконструкция и реконструкция аспектной ориентации, Седьмой ежегодный семинар по основам аспектных языков, Брюссель, Бельгия, 1 апреля 2008 г., под редакцией Гэри Т. Ливенса, Цифровая библиотека ACM, 2008, стр. 43-50.
  7. ^ Фридрих Штайманн. Парадоксальный успех аспектно-ориентированного программирования, Материалы 21-й ежегодной конференции ACM SIGPLAN по системам, языкам и приложениям объектно-ориентированного программирования, Портленд, Орегон, США, 2006, стр. 481–497.
  8. ^ Сообщения ACM, Vol. 44, № 10, октябрь 1994 г., стр. 28-95.
  9. ^ http://aosd.net/
  10. ^ Гарольд Осшер, Мэтью Каплан, Уильям Харрисон, Александр Кац и Винсент Краскал, Правила предметно-ориентированной композиции, Материалы конференции 1995 г. по системам, языкам и приложениям объектно-ориентированного программирования, октябрь 1995 г.
  11. ^ Хафед Мили, Уильям Харрисон, Гарольд Осшер, Поддержка предметно-ориентированного программирования в Smalltalk, Proceedings of 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. ^ «Среда манипулирования озабоченностью (CME)» . 24 апреля 2015 г.
  20. ^ Журнал объектных технологий: контекстно-ориентированное программирование
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e80dded02f0bc422863acc67803bd452__1707417540
URL1:https://arc.ask3.ru/arc/aa/e8/52/e80dded02f0bc422863acc67803bd452.html
Заголовок, (Title) документа по адресу, URL1:
Subject-oriented programming - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)