AOP prieš OOP
AOP (į aspektą orientuotas programavimas) ir OOP (objektinis programavimas) yra dvi programavimo paradigmos. Programavimo paradigma yra pagrindinis kompiuterio programavimo stilius. Programavimo paradigmos skiriasi tuo, kaip vaizduojamas kiekvienas programos elementas ir kaip kiekvienas žingsnis yra apibrėžtas sprendžiant problemas. Kaip rodo pavadinimas, OOP daugiausia dėmesio skiria problemų vaizdavimui naudojant realaus pasaulio objektus ir jų elgseną, o AOP nagrinėja programų suskaidymą į atskiras skersines problemas.
Kas yra AOP?
AOP yra programavimo paradigma, skirta programos išskaidymui į vientisas funkcines sritis (vadinamus susirūpinimą keliančius dalykus), kurios apima kelias sritis, siekiant padidinti moduliškumą. Daugelyje kitų programavimo paradigmų teikiama abstrakcijų (pvz., klasių, metodų ir tt) palaikymas, skirtas sugrupuoti ir įtraukti problemas į unikalius objektus. Tačiau rūpesčiai (pvz., „Registravimas“) yra universalių problemų pavyzdžiai, nes kiekviena užregistruota sistemos dalis turi įtakos registravimui naudojama strategija. Pagrindinis visų AOP diegimų tikslas yra turėti tinkamas skersines išraiškas, kad būtų galima užfiksuoti visus rūpesčius vienoje vietoje.
Kas yra OOP?
OOP pagrindinis dėmesys skiriamas problemos, kurią reikia išspręsti, mąstymui, atsižvelgiant į realaus pasaulio elementus, ir problemos vaizdavimui pagal objektus ir jų elgesį. Klasės vaizduoja abstrakčius realaus pasaulio objektų vaizdus. Klasės yra tarsi brėžiniai ar šablonai, kuriuose surenkami panašūs daiktai ar daiktai, kuriuos galima sugrupuoti. Klasės turi savybių, vadinamų atributais. Atributai įgyvendinami kaip pasauliniai ir egzempliorių kintamieji. Klasių metodai atspindi arba apibrėžia šių klasių elgesį. Klasių metodai ir atributai vadinami klasės nariais. Klasės egzempliorius vadinamas objektu. Todėl objektas yra duomenų struktūra, labai panaši į kokį nors realaus pasaulio objektą.
Yra keletas svarbių OOP sąvokų, tokių kaip duomenų abstrakcija, inkapsuliavimas, polimorfizmas, pranešimų siuntimas, moduliškumas ir paveldėjimas. Paprastai inkapsuliavimas pasiekiamas padarant atributus privačiais, tuo pačiu sukuriant viešuosius metodus, kuriuos galima naudoti norint pasiekti šiuos atributus. Paveldėjimas leidžia vartotojui išplėsti klases (vadinamas subklasėmis) iš kitų klasių (vadinamų super klasėmis). Polimorfizmas leidžia programuotojui pakeisti klasės objektą vietoj jo super klasės objekto. Paprastai problemos apibrėžime rasti daiktavardžiai tiesiogiai tampa programos klasėmis. Ir panašiai veiksmažodžiai tampa metodais. Kai kurios iš populiariausių OOP kalbų yra Java ir C.
Kuo skiriasi AOP ir OOP?
Pagrindinis skirtumas tarp OOP ir AOP yra tas, kad OOP tikslas yra suskirstyti programavimo užduotį į objektus, kurie apima duomenis ir metodus, o AOP tikslas yra suskirstyti programą į visas sritis.. Tiesą sakant, AOP nėra OOP konkurentas, nes jis atsirado iš OOP paradigmos. AOP išplečia OOP spręsdama keletą jo problemų. AOP pristato tvarkingus būdus, kaip vienoje vietoje įgyvendinti kompleksinius klausimus (kurie galėjo būti išsklaidyti keliose atitinkamo OOP įgyvendinimo vietose). Todėl AOP programa tampa švaresnė ir laisviau susieta.