Można na to odpowiedzieć, pisząc na ten temat książkę. Oto podstawowe porównanie
1. Programowanie zorientowane tematycznie
Programowanie zorientowane tematycznie to radykalne odejście od zorientowanego obiektowo w następujący sposób. W OO obiekty są definiowane w kategoriach wewnętrznych (tj. W oparciu o model, który samodzielnie to opisuje). i na tej podstawie wyprowadzane są jego atrybuty (właściwości) i metody (zachowanie). Aplikacja służy tylko do użytkutych właściwości i zachowania. Przeciwnie, w programowaniu zorientowanym tematycznie żaden obiekt nie istnieje (i nie jest modelowany) w takiej izolacji. W trakcie tego procesu, ale zachowania obiektów są zapewniane przez różne inne „podmioty” obiektów, które są poza zakresem i kontrolą autora oryginalnego obiektu. Pomyśl o tym jako o sposobie rozszerzenia różnych „niezależnie definiowalnych zachowań” „na obiekcie. Myślę, że byłoby to znacznie więcej niż zdefiniowanie szablonów dziedziczenia w porównaniu do tego, co jest tutaj omawiane.
Niekwestionowane pochodzenie terminów (i koncepcji) pochodzi z pracy „ Programowanie zorientowane tematycznie: krytyka czystych przedmiotów , William Harrison i Harold Ossher”. Oto kolejny dobry artykuł . Chociaż osobiście uważam, że jest to ramy teoretyczne. Nie wiem czy są jakieś języki / implementacje
Zobacz to , to i to, aby uzyskać więcej informacji.
2. Programowanie zorientowane na aspekt
Programowanie aspektowe wywodzi się z koncepcji „ oddzielenia problemów ”. Zasadniczo rozszerza programowanie proceduralne lub programowanie obiektowe dla zagadnień przekrojowych. Nad uproszczeniem można powiedzieć, że oprogramowanie ma wymagania funkcjonalne i niefunkcjonalne . Te wymagania przekrojowe obejmują przykłady takie jak rejestrowanie, obsługa wyjątków, synchronizacja wątków, zarządzanie pamięcią, optymalizacja i tak dalej. Te przekrojowe ASPEKTY należy wyrazić i wdrożyć osobno i niezależnie od wszelkich innych części funkcjonalnych.
Kompleksowa praca w tym obszarze pochodzi od IBM ; w zasadzie każdy taki problem lubaspekty mogą być od siebie niezależne, tworząc wielowymiarową „przestrzeń zainteresowań”. , (przeczytaj to ).
Niektóre z dobrych praktycznych implementacji programu Aspect Oriented to AspectJ i AspectC ++ i wiele innych . Zobacz to .
3. Programowanie zorientowane na role
Gdy ewoluujemy w kierunku agentów, wiele razy konieczne jest zdefiniowanie „ról” i celów, w których dokładne działania, które agent wykonuje, zależy od środowiska, w którym się znajduje. Jest to analogiczne do zrozumienia pojęć przez ludzi.
Podstawowym celem jest oddzielenie celu zadania od jego zdolności współpracy poprzez zdefiniowanie wyraźnego konstruktu zwanego procesami współpracy . Rola jest modelowana jako zestaw możliwości i oczekiwanego zachowania. podejścia te pozwalają jednak również na modelowanie środowiska wykonawczego oraz na to, jak agent / obiekt może postrzegać środowisko. Zobacz to .
W badaniach zaproponowano różne ramy modelowania i realizacji opartych na rolach. Kilka z nich to LINY , MÓZG , ALAADIN i wiele innych .