AOP vs. OOP
AOP (Aspektovo orientované programovanie) a OOP (Objektovo orientované programovanie) sú dve programovacie paradigmy. Programovacia paradigma je základným štýlom počítačového programovania. Programovacie paradigmy sa líšia v tom, ako je reprezentovaný každý prvok programov a ako je definovaný každý krok na riešenie problémov. Ako už názov napovedá, OOP sa zameriava na reprezentáciu problémov pomocou objektov reálneho sveta a ich správania, zatiaľ čo AOP sa zaoberá rozdelením programov na samostatné prierezové problémy.
Čo je AOP?
AOP je programovacia paradigma, ktorá sa zaoberá rozdelením programu na súdržné oblasti funkčnosti (nazývané obavy), ktoré sa týkajú viacerých oblastí, aby sa zvýšila modularita. Podpora abstrakcií (ako sú triedy, metódy atď.) na zoskupenie a zapuzdrenie obáv do jedinečných entít je poskytovaná v mnohých iných programovacích paradigmách. Ale obavy (ako napríklad „Logging“) sú príkladmi prierezových obáv, pretože každá logovaná časť systému je ovplyvnená stratégiou používanou na logovanie. Hlavným zameraním všetkých implementácií AOP je mať vhodné prierezové výrazy na zachytenie všetkých problémov na jednom mieste.
Čo je OOP?
V OOP sa zameriavame na premýšľanie o probléme, ktorý sa má vyriešiť, z hľadiska prvkov reálneho sveta a na reprezentáciu problému z hľadiska objektov a ich správania. Triedy zobrazujú abstraktné reprezentácie objektov reálneho sveta. Triedy sú ako plány alebo šablóny, ktoré zhromažďujú podobné položky alebo veci, ktoré možno zoskupiť. Triedy majú vlastnosti nazývané atribúty. Atribúty sú implementované ako globálne a inštancie premenné. Metódy v triedach reprezentujú alebo definujú správanie týchto tried. Metódy a atribúty tried sa nazývajú členovia triedy. Inštancia triedy sa nazýva objekt. Preto je objekt dátovou štruktúrou, ktorá sa veľmi podobá nejakému objektu skutočného sveta.
Existuje niekoľko dôležitých konceptov OOP, ako je abstrakcia údajov, zapuzdrenie, polymorfizmus, odosielanie správ, modularita a dedičnosť. Zapuzdrenie sa zvyčajne dosiahne tak, že sa atribúty stanú súkromnými, pričom sa vytvoria verejné metódy, ktoré možno použiť na prístup k týmto atribútom. Dedičnosť umožňuje používateľovi rozširovať triedy (nazývané podtriedy) z iných tried (nazývaných supertriedy). Polymorfizmus umožňuje programátorovi nahradiť objekt triedy namiesto objektu svojej nadtriedy. Zvyčajne sa podstatné mená nachádzajúce sa v definícii problému priamo stanú triedami v programe. A podobne aj slovesá sa stávajú metódami. Niektoré z najpopulárnejších jazykov OOP sú Java a C.
Aký je rozdiel medzi AOP a OOP?
Kľúčový rozdiel medzi OOP a AOP je v tom, že cieľom OOP je rozdeliť programovaciu úlohu na objekty, ktoré zapuzdrujú údaje a metódy, zatiaľ čo cieľom AOP je rozdeliť program na prierezové problémy. V skutočnosti AOP nie je konkurentom OOP, pretože vyšiel z paradigmy OOP. AOP rozširuje OOP tým, že rieši niekoľko jeho problémov. AOP predstavuje elegantné spôsoby implementácie prierezových problémov (ktoré mohli byť rozptýlené na niekoľkých miestach v zodpovedajúcej implementácii OOP) na jednom mieste. Preto AOP robí program čistejším a voľnejšie spojeným.