Які відмінності між орієнтованим на аспекти, предметно-орієнтованим та рольовим програмуванням?


14

Я знаю, що існує багато робіт, що описують ці три парадигми, але я шукаю схематичне пояснення.

Тут є декілька дуже хороших описів програмового орієнтування, тому я задаю це питання, сподіваючись отримати якісний відповідь, який люди в Stack Overflow звикли надавати.


Це, мабуть, більше питання programmers.se, але воно також справді відкрите. Дивіться stackoverflow.com/faq#dontask - "Ваші питання повинні бути обґрунтовано розширені. Якщо ви можете уявити всю книгу, яка відповідає на ваше запитання, ви занадто багато задаєте".
Мерлін Морган-Грехем

Я б почав з читання оригіналу Томаса Куна: amazon.com/Structure-Scientist-Revolutions-Thomas-Kuhn/dp/…

Я також можу уявити собі коротку відповідь на моє запитання. Наприклад, ось як я описав би програмування, орієнтоване на аспекти: Це спосіб додавати "одиниці обробки", що називаються аспектами, модульно до і після інших одиниць обробки за допомогою точкових розрізів. Для мене це дуже схоже на програмування на основі правил, наприклад, мова програмування Inform7. inform7.com/learn/man/doc188.html

Відповіді:


9

На це можна відповісти, написавши про це книгу. Однак ось основне порівняння

1. Предметно-орієнтоване програмування

Предметно-орієнтоване програмування - це радикальний відхід від об'єктно-орієнтованого наступним чином. В ОО об'єкти визначаються з точки зору внутрішнього характеру (тобто на основі моделі, яка незалежно описує це). і на основі цього виводяться його атрибути (властивості) та методи (поведінка). Програма використовує лише використанняцих властивостей та поведінки. На противагу цьому, у предметно-орієнтованому програмуванні жоден об'єкт не існує (і моделюється) в такій ізоляції. У процесі, але поведінка об'єктів забезпечується різними іншими "суб'єктами" об'єктів, які виходять за рамки та контроль автора оригінального об'єкта. Подумайте про це як про спосіб поширення різних "незалежно визначених способів поведінки" "на об'єкті. Я думаю, що це буде далеко не визначати шаблони успадкування порівняно з тим, що тут обговорюється.

Безперечне походження термінів (і понять) походить з статті " Тематичне орієнтоване програмування: Критика чистих об'єктів , Вільям Гаррісон та Гарольд Остер". Ось ще один хороший папір . Хоча особисто я вважаю, що це теоретична база. Не знаю, чи є якісь мови / реалізація

Дивіться це , це та це для отримання додаткової інформації.

2. Програмно-орієнтоване програмування

Аспектно-орієнтоване програмування виникла з концепції " Розмежування виразів ". В основному це розширює або процедурне, або об'єктно-орієнтоване програмування на проблеми, які є наскрізними. Над спрощенням можна сказати, що програмне забезпечення має функціональні вимоги та нефункціональні . Ці наскрізні вимоги включають такі приклади, як реєстрація, обробка виключень, синхронізація потоків, управління пам'яттю, оптимізація тощо. Ці наскрізні АСПЕКТИ слід виражати та впроваджувати окремо та незалежно від будь-яких інших функціональних частин.
Комплексна робота в цій галузі - від IBM ; в основному кожен з таких питань стосується абоаспекти можуть бути незалежними один від одного, утворюючи багатовимірний "простір". , (читайте це ).

Деякі з хороших практичних реалізацій орієнтованих на аспекти - це AspectJ та AspectC ++ та багато інших . Дивіться це .

3. Програмування, орієнтоване на ролі.
Коли ми розвиваємось до агентів, багато разів доводиться визначати "ролі" та цілі, коли як точна діяльність, яку агент закінчує, залежить від середовища, в якому він знаходиться. Це аналогічно концептуальним розумінням людини.

Основна мета - відокремити мету завдання від її можливостей співпраці шляхом визначення явної конструкції, що називається процесами співпраці . Роль моделюється як сукупність можливостей та очікуваної поведінки. однак, ці підходи також дозволяють моделювати середовище виконання та те, як агент / об'єкт може сприймати також середовище. Дивіться це .

Існують різні рамки, запропоновані в дослідженні для рольового моделювання та реалізації. Деякі з них є КАНАТ , МОЗОК , ALAADIN і більш .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.