На это можно ответить, написав книгу об этом. Тем не менее, вот базовое сравнение
1. Предметно-ориентированное программирование
Предметно-ориентированное программирование - это радикальный отход от объектно-ориентированного программирования следующим образом. В ОО объекты определяются с точки зрения внутренней (т.е. основаны на модели, которая независимо их описывает). и на основании этого получены его атрибуты (свойства) и методы (поведение). Приложение делает только использованиеиз этих свойств и поведения. В противоположность этому, в предметно-ориентированном программировании ни один объект не существует (и не моделируется) в такой изоляции. В процессе, но поведение объектов обеспечивается различными другими «субъектами» объектов, которые находятся за пределами сферы действия и контроля автора исходного объекта. Думайте об этом как о способе расширения различных «независимо определяемых поведений». «на объекте. Я думаю, что это будет далеко за пределами определения шаблонов наследования по сравнению с тем, что обсуждается здесь.
Бесспорное происхождение терминов (и понятия) исходит из бумаги « Тема Oriented Programming: Критика чистых объектов , Уильям Харрисона и Гарольд Ossher». Вот еще одна хорошая статья . Хотя лично я считаю, что это теоретическая основа. Я не знаю, есть ли языки / реализация
Смотрите это , это и это для получения дополнительной информации.
2. Аспектно-ориентированное программирование
Аспектно-ориентированное программирование возникло из концепции « Разделение связей ». По сути, это расширяет процедурное или объектно-ориентированное программирование для проблем, которые являются сквозными. За упрощением можно сказать, что программное обеспечение имеет функциональные и нефункциональные требования . Эти сквозные требования включают в себя примеры, такие как ведение журнала, обработка исключений, синхронизация потоков, управление памятью, оптимизация и так далее. Эти сквозные АСПЕКТЫ должны быть выражены и реализованы отдельно и независимо от любых других функциональных частей.
Всесторонняя работа в этой области от IBM ; в основном каждая такая проблема илиаспекты могут быть независимы друг от друга, образуя многомерное «пространство забот». (читать это ).
Некоторые из хороших практических реализаций Aspect Oriented являются AspectJ и AspectC ++ и многие более . Смотрите это .
3. Роль-ориентированное программирование.
По мере того, как мы развиваемся в направлении агентов, во многих случаях необходимо определять «роли» и цели, когда точные действия, которые в конечном итоге выполняет агент, зависят от среды, в которой он находится. Это аналогично человеческому концептуальному пониманию.
Основная цель состоит в том, чтобы отделить цель задачи от ее способности к сотрудничеству путем определения явной конструкции, называемой процессами сотрудничества . Роль моделируется как набор возможностей и ожидаемого поведения. однако эти подходы также позволяют моделировать среду выполнения и то, как агент / объект может воспринимать среду также. Смотрите это .
В исследовании предлагаются различные подходы к ролевому моделированию и реализации. Некоторые из них являются КАНАТ , МОЗГ , ALAADIN и более .