AOP vs OOP
AOP (programowanie aspektowe) i OOP (programowanie obiektowe) to dwa paradygmaty programowania. Paradygmat programowania to podstawowy styl programowania komputerowego. Paradygmaty programowania różnią się tym, jak reprezentowany jest każdy element programu i jak każdy krok jest definiowany w celu rozwiązywania problemów. Jak sama nazwa wskazuje, OOP koncentruje się na reprezentowaniu problemów przy użyciu obiektów świata rzeczywistego i ich zachowania, podczas gdy AOP zajmuje się rozbiciem programów na oddzielne zagadnienia przekrojowe.
Co to jest AOP?
AOP to paradygmat programowania, który zajmuje się rozbiciem programu na spójne obszary funkcjonalności (zwane obawami), które przecinają wiele obszarów, w celu zwiększenia modułowości. Obsługa abstrakcji (takich jak klasy, metody itp.) w celu grupowania i enkapsulacji problemów w unikalne jednostki jest zapewniona w wielu innych paradygmatach programowania. Ale obawy (takie jak „Logging”) są przykładami problemów przekrojowych, ponieważ na każdą zarejestrowaną część systemu ma wpływ strategia używana do rejestrowania. Głównym celem wszystkich implementacji AOP jest posiadanie odpowiednich wyrażeń przekrojowych, aby uchwycić wszystkie problemy w jednym miejscu.
Co to jest OOP?
W programowaniu obiektowym nacisk kładziony jest na myślenie o problemie do rozwiązania w kategoriach elementów świata rzeczywistego oraz przedstawianie problemu w kategoriach obiektów i ich zachowania. Zajęcia przedstawiają abstrakcyjne reprezentacje obiektów świata rzeczywistego. Zajęcia są jak schematy lub szablony, które gromadzą podobne przedmioty lub rzeczy, które można pogrupować. Klasy mają właściwości zwane atrybutami. Atrybuty są implementowane jako zmienne globalne i instancyjne. Metody w klasach reprezentują lub definiują zachowanie tych klas. Metody i atrybuty klas nazywane są członkami klasy. Instancja klasy nazywana jest obiektem. Dlatego obiekt jest strukturą danych, która bardzo przypomina jakiś obiekt ze świata rzeczywistego.
Istnieje kilka ważnych koncepcji OOP, takich jak abstrakcja danych, enkapsulacja, polimorfizm, przesyłanie wiadomości, modułowość i dziedziczenie. Zazwyczaj enkapsulację osiąga się, czyniąc atrybuty prywatnymi, tworząc jednocześnie metody publiczne, których można użyć w celu uzyskania dostępu do tych atrybutów. Dziedziczenie pozwala użytkownikowi na rozszerzenie klas (nazywanych subklasami) z innych klas (nazywanych superklasami). Polimorfizm pozwala programiście na podstawienie obiektu klasy w miejsce obiektu jego superklasy. Zazwyczaj rzeczowniki znajdujące się w definicji problemu stają się bezpośrednio klasami w programie. I podobnie, czasowniki stają się metodami. Niektóre z najpopularniejszych języków OOP to Java i C.
Jaka jest różnica między AOP a OOP?
Kluczowa różnica między OOP a AOP polega na tym, że program OOP skupia się na rozbiciu zadania programistycznego na obiekty, które hermetyzują dane i metody, podczas gdy AOP skupia się na rozbiciu programu na zagadnienia przekrojowe. W rzeczywistości AOP nie jest konkurentem dla OOP, ponieważ wyłonił się z paradygmatu OOP. AOP rozszerza OOP, rozwiązując kilka jego problemów. AOP wprowadza zgrabne sposoby realizacji problemów przekrojowych (które mogły być rozproszone w kilku miejscach w odpowiedniej implementacji OOP) w jednym miejscu. Dlatego AOP sprawia, że program jest czystszy i bardziej luźno powiązany.