Каковы различия между аспектно-ориентированным, предметно-ориентированным и ролевым программированием?

14

Я знаю, что есть много работ, описывающих эти три парадигмы, но я ищу схематическое объяснение.

Здесь приведено несколько очень хороших описаний аспектно-ориентированного программирования, поэтому я задаю этот вопрос в надежде получить качественный ответ, к которому привыкли люди из Stack Overflow.

Адам Лир
источник
Вероятно, это скорее вопрос programmers.se, но он также действительно открытый. См. Stackoverflow.com/faq#dontask - «Ваши вопросы должны быть разумно ограничены. Если вы можете представить целую книгу, которая отвечает на ваш вопрос, вы задаете слишком много».
Мерлин Морган-Грэм
Я бы начал с чтения оригинального Томаса Куна: amazon.com/Structure-Scientific-Revolutions-Thomas-Kuhn/dp/…
Я также могу представить короткий ответ на мой вопрос. Например, вот как я бы описал Аспектно-ориентированное программирование: это способ добавления «модулей обработки», называемых аспектами, модульным способом до и после других модулей обработки с помощью точек. Для меня это выглядит как программирование на основе правил, например, язык программирования Inform7. inform7.com/learn/man/doc188.html

Ответы:

9

На это можно ответить, написав книгу об этом. Тем не менее, вот базовое сравнение

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

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

Бесспорное происхождение терминов (и понятия) исходит из бумаги « Тема Oriented Programming: Критика чистых объектов , Уильям Харрисона и Гарольд Ossher». Вот еще одна хорошая статья . Хотя лично я считаю, что это теоретическая основа. Я не знаю, есть ли языки / реализация

Смотрите это , это и это для получения дополнительной информации.

2. Аспектно-ориентированное программирование

Аспектно-ориентированное программирование возникло из концепции « Разделение связей ». По сути, это расширяет процедурное или объектно-ориентированное программирование для проблем, которые являются сквозными. За упрощением можно сказать, что программное обеспечение имеет функциональные и нефункциональные требования . Эти сквозные требования включают в себя примеры, такие как ведение журнала, обработка исключений, синхронизация потоков, управление памятью, оптимизация и так далее. Эти сквозные АСПЕКТЫ должны быть выражены и реализованы отдельно и независимо от любых других функциональных частей.
Всесторонняя работа в этой области от IBM ; в основном каждая такая проблема илиаспекты могут быть независимы друг от друга, образуя многомерное «пространство забот». (читать это ).

Некоторые из хороших практических реализаций Aspect Oriented являются AspectJ и AspectC ++ и многие более . Смотрите это .

3. Роль-ориентированное программирование.
По мере того, как мы развиваемся в направлении агентов, во многих случаях необходимо определять «роли» и цели, когда точные действия, которые в конечном итоге выполняет агент, зависят от среды, в которой он находится. Это аналогично человеческому концептуальному пониманию.

Основная цель состоит в том, чтобы отделить цель задачи от ее способности к сотрудничеству путем определения явной конструкции, называемой процессами сотрудничества . Роль моделируется как набор возможностей и ожидаемого поведения. однако эти подходы также позволяют моделировать среду выполнения и то, как агент / объект может воспринимать среду также. Смотрите это .

В исследовании предлагаются различные подходы к ролевому моделированию и реализации. Некоторые из них являются КАНАТ , МОЗГ , ALAADIN и более .

Дипан Мехта
источник