В вычислительном , предметно-ориентированном программировании является объектно-ориентированной парадигмой программного обеспечения , в котором состояние (поля) и поведение (методы) объекты не рассматривается как присущие сами объектами, но при условии , различным субъективным восприятием ( «субъекты») объектов. Термин и концепции были впервые опубликованы в сентябре 1993 года в документе конференции [1], который позже был признан одним из трех наиболее влиятельных документов, представленных на конференции между 1986 и 1996 годами. [2] Как показано в этой статье, проводится аналогия с контрастом философских взглядов Платона и Канта.относительно характеристик «реальных» объектов, но применительно к программным. Например, хотя мы все можем воспринимать дерево как имеющее измеримую высоту, вес, массу листьев и т. Д., С точки зрения птицы, дерево также может иметь меры относительной ценности для целей питания или гнездования, или с точки зрения налогового инспектора, он может иметь определенную налогооблагаемую стоимость в данном году. Ни птица, ни дополнительная информация о состоянии налогоплательщика не должны рассматриваться как неотъемлемая часть дерева, она добавляется восприятием птицы и налогового инспектора, и, исходя из анализа Канта, то же самое может быть верно даже в отношении характеристик, о которых мы думаем. как внутреннее.
Субъектно-ориентированное программирование отстаивает организацию классов , описывающих объекты, в «субъекты», которые могут быть составлены для формирования более крупных субъектов. В точках доступа к полям или методам могут быть составлены статьи нескольких субъектов. Эти точки были охарактеризованы как точки соединения [3] испытуемых. Например, если дерево срублено, задействованные методы могут потребовать объединения поведения птиц и подопытных налогоплательщиков с поведением самого дерева. Таким образом, это, по сути, взгляд на композиционную природу разработки программного обеспечения, в отличие от алгоритмической (процедурной) или скрывающей представление (объектной) природы.
Отношения
Отношение к аспектно-ориентированному программированию
Введение аспектно-ориентированного программирования в 1997 г. [4] подняло вопросы о его отношении к предметно-ориентированному программированию и о разнице между предметами и аспектами. На эти вопросы в течение некоторого времени не было ответа, но они были рассмотрены в патенте на аспектно-ориентированное программирование, поданном в 1999 г. [5], в котором два момента проявляются как характерные отличия от более раннего уровня техники:
- программа аспекта включает в себя: а) поперечный разрез, который содержит точку в исполнении, в которую должно быть включено поведение поперечного разреза; и b) действие поперечного разреза, включающее часть реализации, связанную с разрезом, часть реализации, содержащую машиночитаемый программный код, который реализует поведение пересечения.
- аспект прозрачно заставляет сквозное поведение классов объектов и других программных сущностей
В субъектно-ориентированном виде разрез может быть размещен отдельно от аспекта (объекта), и поведение не определяется аспектом, а регулируется правилами композиции. Ретроспективный взгляд [6] также позволяет различать аспектно-ориентированное программирование путем введения и использования концепции pointcut, подобной запросу, для внешнего наложения точек соединения, используемых аспектами в общих чертах.
В представлении предметно-ориентированного программирования точки соединения намеренно ограничивались доступом к полям и вызовом методов на том основании, что это были точки, в которых были разработаны хорошо спроектированные фреймворки, допускающие функциональное расширение. Использование навязываемых извне pointcuts является важной лингвистической возможностью, но остается одной из самых спорных особенностей аспектно-ориентированного программирования. [7]
Отношение к аспектно-ориентированной разработке программного обеспечения
На рубеже тысячелетий стало ясно, что ряд исследовательских групп занимался различными технологиями, которые использовали композицию или присоединение отдельно упакованного состояния и функции для формирования объектов. [8] Чтобы отличить общую область интересов от Аспектно-ориентированного программирования с его конкретными патентными определениями и подчеркнуть, что композиционная технология имеет дело не только с этапом кодирования при разработке программного обеспечения, эти технологии были объединены под термином Аспектно-ориентированное. Разработка программного обеспечения , [9] и организация и серия международных конференций, начатых по этой теме. Как и аспектно-ориентированное программирование, предметно-ориентированное программирование, фильтры композиции, функционально-ориентированное программирование и адаптивные методы считаются аспектно-ориентированными подходами к разработке программного обеспечения.
Габаритные размеры
Многомерное разделение проблем, Hyper / J и среда манипулирования проблемами
Первоначальная формулировка предметно-ориентированного программирования преднамеренно рассматривала его как упаковочную технологию, позволяющую расширять пространство функций и типов данных в любом измерении. Первые реализации были для C ++, [10] и Smalltalk. [11] Эти реализации использовали концепции меток программного обеспечения и правила композиции для описания объединения предметов.
Чтобы устранить озабоченность по поводу того, что должна быть обеспечена лучшая основа для анализа и составления программного обеспечения не только с точки зрения его упаковки, но и с точки зрения различных проблем, которые решаются в этих пакетах, была разработана явная организация материала с точки зрения множества компонентов. размерная «матрица», в которой проблемы связаны с программными модулями, которые их реализуют. Эта организация называется многомерным разделением интересов , и статья с ее описанием [12] была признана наиболее влиятельной статьей конференции ICSE 1999 года. [13]
Эта новая концепция была реализована для создания программного обеспечения Java с использованием названия инструмента Hyper / J. [14]
Композиция и концепция предмета могут применяться к программным артефактам, не имеющим исполняемой семантики, таким как спецификации требований или документация. Средство исследования для Eclipse , называемое средой манипулирования проблемами (CME), было описано [15], в котором инструменты для запроса, анализа, моделирования [16] и композиции применяются к артефактам на любом языке или представлении с помощью соответствующие подключаемые адаптеры для управления представлением.
Преемник механизма композиции Hyper / J [17] был разработан как часть CME, который использует общий подход для нескольких элементов механизма композиции:
- язык запросов с унификацией для определения точек соединения,
- гибкая конструктивно-крепежная модель,
- спецификация вложенного графа для упорядочивания идентифицированных элементов,
- и спецификацию упорядочения приоритетов для разрешения конфликтов между конфликтующими правилами.
И Hyper / J, и CME доступны из alphaWorks [18] или sourceforge, [19] соответственно, но ни один из них активно не поддерживается.
Предметно-ориентированное программирование как «третье измерение»
Диспетчеризация методов в объектно-ориентированном программировании может рассматриваться как «двумерная» в том смысле, что выполняемый код зависит как от имени метода, так и от рассматриваемого объекта. Это можно противопоставить [20] процедурному программированию, где имя процедуры разрешается напрямую или одномерно в подпрограмму, а также предметно-ориентированному программированию, где отправитель или субъект также имеют отношение к отправке, составляя третье измерение.
Смотрите также
Рекомендации
- ^ Уильям Харрисон и Гарольд Ошер, Субъектно-ориентированное программирование - критика чистых объектов, Труды конференции 1993 года по системам, языкам и приложениям объектно-ориентированного программирования, сентябрь 1993 г.
- ^ http://www.sigplan.org/Awards/OOPSLA
- ^ Гарольд Ошер, Пери Тарр. Состав рабочего уровня: случай в точке (присоединения), в ECOOP '98 Workshop Reader, 406–409
- ^ Кицалес, Г .; Lamping, J .; Mendhekar, A .; Maeda, C .; Lopes, C .; Loingtier, JM; Ирвин, Дж. (1997). Аспектно-ориентированное программирование (PDF) . ЭКООП '97. Материалы 11-й Европейской конференции по объектно-ориентированному программированию . LNCS . 1241 . С. 220–242. CiteSeerX 10.1.1.115.8660 . DOI : 10.1007 / BFb0053381 . ISBN 3-540-63089-9.
- ^ Kiczales; Грегор Дж .; Освещение; John O .; Лопес; Кристина В .; Хугунин; Джеймс Дж .; Хилсдейл; Эрик А .; Бояпати; Чандрасекар, Аспектно-ориентированное программирование, Патент США 6 467 086, 15 октября 2002 г.
- ^ Уильям Харрисон. De-constructing and Re-Construction Aspect-Orientation, седьмой ежегодный семинар по основам аспектных языков, Брюссель, Бельгия, 1 апреля 2008 г., под редакцией Гэри Т. Ливенса, ACM Digital Library, 2008, стр. 43-50
- ^ Фридрих Штайманн. Парадоксальный успех аспектно-ориентированного программирования, Материалы 21-й ежегодной конференции ACM SIGPLAN по системам, языкам и приложениям объектно-ориентированного программирования, Портленд, Орегон, США, 2006 г., стр. 481 - 497
- ^ Сообщения ACM, Vol. 44, No. 10, October 1994, pp. 28-95.
- ^ http://aosd.net/
- ^ Гарольд Ошер, Мэтью Каплан, Уильям Харрисон, Александр Кац и Винсент Крускал, Субъектно-ориентированные правила композиции, Труды конференции 1995 г. по системам объектно-ориентированного программирования, языкам и приложениям, октябрь 1995 г.
- ^ Hafedh Mili, Уильям Харрисон, Гарольд Ossher, поддерживая Предметно-ориентированное программирование на Smalltalk, Труды TOOLS USA 96, август 1996
- ^ Гарольд Ошер, Пери Тарр, Уильям Харрисон, Стэнли Саттон, N степеней разделения: многомерное разделение проблем, Труды Международной конференции по разработке программного обеспечения 1999 г., май 1999 г.
- ^ http://www.sigsoft.org/awards/mostInfPapAwd.htm
- ^ Гарольд Ошер, Пери Тарр. Hyper / J: многомерное разделение проблем для Java, Труды 23-й Международной конференции по разработке программного обеспечения, Торонто, Онтарио, Канада, 2001 г., страницы: 821 - 822
- ^ Уильям Чанг, Уильям Харрисон, Винсент Крускал, Гарольд Ошер, Стэнли М. Саттон младший, Пери Тарр, Мэтью Чепмен, Эндрю Клемент, Хелен Хокинс, Сиан Январь. Среда манипулирования концерном, Труды 27-й международной конференции по оглавлению программной инженерии, Сент-Луис, Миссури, США, 2005 г.
- ^ Уильям Харрисон, Гарольд Ошер, Стэнли Саттон, Пери Тарр. Моделирование проблем в среде манипулирования проблемами, Материалы семинара 2005 г. по моделированию и анализу проблем в программном обеспечении, Сент-Луис, штат Миссури, 2005 г.
- ^ Уильям Харрисон, Гарольд Ошер, Пери Тарр. Общая композиция программных артефактов, Proceedings of Software Composition Workshop 2006, март 2006, Springer-Verlag, LNCS 4089, страницы 194-210
- ^ http://www.alphaworks.ibm.com/tech/hyperj
- ^ http://sourceforge.net/projects/cme/
- ^ Журнал объектных технологий: контекстно-ориентированное программирование
Внешние ссылки
- Распределенные характеристики предметно-ориентированного программирования: оценка с помощью процессной и объектно-ориентированной парадигм
- alphaWorks: HyperJ
- Архивные технологические проекты Eclipse
- Аметист: библиотека JavaScript для предметно-ориентированного программирования