Man kann das beantworten, indem man ein Buch darüber schreibt. Hier ist jedoch ein grundlegender Vergleich
1. Fachorientierte Programmierung
Subjektorientierte Programmierung ist eine radikale Abkehr von der objektorientierten wie folgt. In OO werden Objekte intrinsisch definiert (dh basierend auf einem Modell, das es unabhängig beschreibt). und basierend darauf werden seine Attribute (Eigenschaften) und Methoden (Verhalten) abgeleitet. Die Anwendung macht nur den Gebrauchdieser Eigenschaften und Verhalten. Im Gegensatz dazu existiert (und modelliert) in der subjektorientierten Programmierung kein Objekt in einer solchen Isolation. Dabei wird aber das Verhalten der Objekte durch die verschiedenen anderen "Subjekte" der Objekte bereitgestellt, die sich dem Umfang und der Kontrolle des Autors des ursprünglichen Objekts entziehen. Betrachten Sie es als einen Weg, verschiedene "unabhängig definierbare Verhaltensweisen zu erweitern Ich denke, dies würde weit über die Definition von Vererbungsschablonen hinausgehen, verglichen mit dem, was hier diskutiert wird.
Der unbestrittene Ursprung von Begriffen (und Konzepten) stammt aus der Arbeit " Subject Oriented Programming: A Critique of Pure Objects , William Harrison und Harold Ossher". Hier ist noch ein gutes Papier . Obwohl ich persönlich glaube, dass dies ein theoretischer Rahmen ist. Ich weiß nicht, ob es irgendwelche Sprachen / Implementierungen gibt
Siehe dies , dies und das für mehr Infos.
2. Aspektorientierte Programmierung
Die aspektorientierte Programmierung ist aus dem Konzept der " Oncern-Trennung " hervorgegangen. Grundsätzlich wird die prozedurale oder objektorientierte Programmierung für übergreifende Anliegen erweitert. Über die Vereinfachung kann man sagen, dass Software funktionale und nicht funktionale Anforderungen hat . Diese übergreifenden Anforderungen umfassen Beispiele wie Protokollierung, Ausnahmebehandlung, Thread-Synchronisierung, Speicherverwaltung, Optimierung usw. Diese Querschnitt ASPEKTE sollte exprimierenden und getrennt und unabhängig voneinander auf beliebige andere Funktionsteile umgesetzt.
Eine umfassende Arbeit in diesem Bereich stammt von IBM . grundsätzlich betrifft jeder solche oderaspekte können unabhängig voneinander sein und einen mehrdimensionalen "interessensraum" bilden. , (lies das ).
Einige der guten praktischen Implementierungen von Aspect Oriented sind AspectJ und AspectC ++ und viele mehr . Sieh das .
3. Rollenorientiertes Programmieren
Wenn wir uns zu Agenten entwickeln, ist es oft notwendig, "Rollen" und Ziele zu definieren, bei denen die genauen Aktivitäten, die der Agent letztendlich ausführt, von der Umgebung abhängen, in der er sich befindet. Dies entspricht dem menschlichen konzeptuellen Verständnis.
Das Hauptziel besteht darin, das Ziel der Aufgabe von ihrer Kooperationsfähigkeit zu entkoppeln, indem explizite Konstrukte definiert werden, die als Kooperationsprozesse bezeichnet werden . Eine Rolle wird als Satz von Fähigkeiten und erwartetem Verhalten modelliert. Diese Ansätze ermöglichen jedoch auch die Modellierung der Ausführungsumgebung und wie Agent / Objekt die Umgebung ebenfalls wahrnehmen können. Sieh das .
In der Forschung werden verschiedene Frameworks für die rollenbasierte Modellierung und Implementierung vorgeschlagen. Einige davon sind ROPE , BRAIN , ALAADIN und mehr .