Jakie są różnice między programowaniem aspektowym, tematycznym i rolowym?

14

Wiem, że jest wiele artykułów opisujących te trzy paradygmaty, ale szukam schematycznego wyjaśnienia.

Jest tu kilka bardzo dobrych opisów programowania zorientowanego na aspekty, więc zadaję to pytanie w nadziei, że otrzymam rodzaj wysokiej jakości odpowiedzi, których ludzie przyzwyczają w stosie.

Adam Lear
źródło
Jest to prawdopodobnie bardziej pytanie dla programistów.se, ale jest też naprawdę otwarte. Zobacz stackoverflow.com/faq#dontask - „Twoje pytania powinny mieć rozsądny zakres. Jeśli możesz sobie wyobrazić całą książkę, która odpowiada na twoje pytanie, zadajesz zbyt wiele”.
Merlyn Morgan-Graham
Zacznę od przeczytania oryginalnego Thomasa Kuhna: amazon.com/Structure-Scientific-Revolutions-Thomas-Kuhn/dp/…
Mogę również wyobrazić sobie krótką odpowiedź na moje pytanie. Na przykład, oto jak opisałbym programowanie zorientowane na aspekty: Jest to sposób na dodanie „jednostek przetwarzających” zwanych aspektami w sposób modułowy przed i po innych jednostkach przetwarzających za pomocą skrótów punktowych. Dla mnie przypomina to programowanie oparte na regułach, na przykład język programowania Inform7. inform7.com/learn/man/doc188.html

Odpowiedzi:

9

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 .

Dipan Mehta
źródło