Quali sono le differenze tra programmazione orientata all'aspetto, orientata all'argomento e orientata al ruolo?


14

So che ci sono molti articoli che descrivono questi tre paradigmi, ma sto cercando una spiegazione schematica.

Ci sono alcune ottime descrizioni della programmazione orientata all'aspetto qui, quindi sto facendo questa domanda nella speranza di ottenere il tipo di risposta di alta qualità che le persone di Stack Overflow sono abituate a fornire.


Questa è probabilmente più una domanda programmers.se, ma è anche davvero a tempo indeterminato. Vedi stackoverflow.com/faq#dontask - "Le tue domande dovrebbero essere ragionate in modo ragionevole. Se riesci a immaginare un intero libro che risponda alla tua domanda, stai chiedendo troppo."
Merlyn Morgan-Graham,

Comincerei leggendo l'originale Thomas Kuhn: amazon.com/Structure-Scientific-Revolutions-Thomas-Kuhn/dp/…

Posso anche immaginare una breve risposta alla mia domanda. Ad esempio, ecco come descriverei la programmazione orientata all'aspetto: è un modo per aggiungere "unità di elaborazione" chiamate aspetti in modo modulare prima e dopo altre unità di elaborazione mediante tagli di punti. A me assomiglia molto alla programmazione basata su regole, ad esempio il linguaggio di programmazione Inform7. inform7.com/learn/man/doc188.html

Risposte:


9

Si può rispondere a questo scrivendo un libro su questo. Tuttavia, ecco un confronto di base

1. Programmazione orientata al soggetto

La programmazione orientata al soggetto è una deviazione radicale dall'oggetto orientata come segue. In OO, gli oggetti sono definiti in termini intrinseci (cioè basati su un modello che lo descrive in modo indipendente). e in base a ciò derivano i suoi attributi (proprietà) e metodi (comportamento). L'applicazione fa solo l' usodi queste proprietà e comportamenti. Contrariamente a questo, nella programmazione orientata al soggetto, nessun oggetto (e modellato) esiste in un tale isolamento. Nel processo, ma i comportamenti degli oggetti sono stati forniti dai vari altri "soggetti" degli oggetti che vanno oltre lo scopo e il controllo dell'autore dell'oggetto originale. Consideralo come un modo per estendere vari "comportamenti definibili indipendentemente "sull'oggetto. Penso che ciò andrebbe ben oltre la definizione di modelli di eredità rispetto a ciò che viene discusso qui.

L'origine indiscussa dei termini (e del concetto) deriva dall'articolo " Programmazione orientata al soggetto: una critica agli oggetti puri , William Harrison e Harold Ossher". Ecco un altro buon documento . Anche se personalmente credo che questo sia un quadro teorico. Non so se ci siano lingue / implementazioni

Vedi questo , questo e questo per maggiori informazioni.

2. Programmazione orientata all'aspetto

La programmazione orientata all'aspetto ha avuto origine dal concetto di " Separazione delle preoccupazioni ". Fondamentalmente estende la programmazione procedurale o orientata agli oggetti per preoccupazioni che sono trasversali. Una semplificazione eccessiva può dire che il software ha requisiti funzionali e non funzionali . Questi requisiti trasversali includono esempi come registrazione, gestione delle eccezioni, sincronizzazione dei thread, gestione della memoria, ottimizzazione e così via. Questi ASPETTI trasversali dovrebbero essere espressi e implementati separatamente e indipendentemente da qualsiasi altra parte funzionale.
Un lavoro completo in questo settore è di IBM ; fondamentalmente ciascuno di questi interessi ogli aspetti possono essere indipendenti gli uni dagli altri formando uno "spazio spaziale" multidimensionale. , (leggi questo ).

Alcune delle buone implementazioni pratiche di Aspect Oriented sono AspectJ e AspectC ++ e molte altre . Vedere questo .

3. Programmazione orientata al ruolo
Mentre ci evolviamo verso gli agenti, molte volte è necessario definire "ruoli" e obiettivi in ​​cui le attività esatte che l'agente finisce per svolgere dipendono dall'ambiente in cui si trova. Ciò è analogo alla comprensione concettuale umana.

L'obiettivo principale è quello di separare l'obiettivo del compito dalla sua capacità di cooperazione definendo un costrutto esplicito chiamato processi di cooperazione . Un ruolo è modellato come un insieme di capacità e un comportamento previsto. tuttavia, questi approcci consentono anche la modellizzazione dell'ambiente di esecuzione e il modo in cui l'agente / oggetto può percepire anche l'ambiente. Vedere questo .

Esistono vari framework proposti nella ricerca per la modellizzazione e le implementazioni basate sui ruoli. Alcuni di essi sono ROPE , BRAIN , ALAADIN e altri .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.