AOP pret OOP
AOP (Aspektorientētā programmēšana) un OOP (Objektorientētā programmēšana) ir divas programmēšanas paradigmas. Programmēšanas paradigma ir datorprogrammēšanas pamatstils. Programmēšanas paradigmas atšķiras ar to, kā katrs programmas elements ir attēlots un kā katrs solis ir definēts problēmu risināšanai. Kā norāda nosaukums, OOP koncentrējas uz problēmu attēlošanu, izmantojot reālās pasaules objektus un to uzvedību, savukārt AOP nodarbojas ar programmu sadalīšanu, lai nodalītu starpnozaru problēmas.
Kas ir AOP?
AOP ir programmēšanas paradigma, kas nodarbojas ar programmas sadalīšanu saskaņotās funkcionalitātes jomās (sauktas par problēmām), kas aptver vairākas jomas, lai palielinātu modularitāti. Daudzās citās programmēšanas paradigmās tiek nodrošināts atbalsts abstrakcijām (piemēram, klasēm, metodēm utt.), lai grupētu un iekapsulētu bažas unikālās entītijās. Taču bažas (piemēram, “reģistrēšana”) ir visaptverošu problēmu piemēri, jo katru reģistrēto sistēmas daļu ietekmē reģistrēšanai izmantotā stratēģija. Visu AOP ieviešanu galvenais uzsvars ir uz piemērotām transversālām izteiksmēm, lai visas problēmas ietvertu vienuviet.
Kas ir OOP?
OOP uzmanības centrā ir domāšana par risināmo problēmu, izmantojot reālās pasaules elementus, un problēmas attēlošana, ņemot vērā objektus un to uzvedību. Klases attēlo reālās pasaules objektu abstraktus attēlojumus. Nodarbības ir kā rasējumi vai veidnes, kurās apkopoti līdzīgi priekšmeti vai lietas, kuras var grupēt. Klasēm ir īpašības, ko sauc par atribūtiem. Atribūti tiek ieviesti kā globālie un instanču mainīgie. Klasēs izmantotās metodes atspoguļo vai definē šo klašu uzvedību. Klašu metodes un atribūtus sauc par klases dalībniekiem. Klases gadījumu sauc par objektu. Tāpēc objekts ir datu struktūra, kas ļoti atgādina kādu reālās pasaules objektu.
Ir vairāki svarīgi OOP jēdzieni, piemēram, datu abstrakcija, iekapsulēšana, polimorfisms, ziņojumapmaiņa, modularitāte un mantošana. Parasti iekapsulēšanu panāk, padarot atribūtus privātus, vienlaikus izveidojot publiskas metodes, kuras var izmantot, lai piekļūtu šiem atribūtiem. Mantojums ļauj lietotājam paplašināt klases (sauktas par apakšklasēm) no citām klasēm (sauktas par superklasēm). Polimorfisms ļauj programmētājam aizstāt klases objektu tās superklases objekta vietā. Parasti problēmas definīcijā atrodamie lietvārdi tieši kļūst par klasēm programmā. Un līdzīgi darbības vārdi kļūst par metodēm. Dažas no populārākajām OOP valodām ir Java un C.
Kāda ir atšķirība starp AOP un OOP?
Galvenā atšķirība starp OOP un AOP ir tāda, ka OOP mērķis ir sadalīt programmēšanas uzdevumu objektos, kas iekapsulē datus un metodes, savukārt AOP mērķis ir sadalīt programmu līdz starpnozaru problēmām.. Faktiski AOP nav OOP konkurents, jo tas parādījās ārpus OOP paradigmas. AOP paplašina OOP, risinot dažas no tā problēmām. AOP ievieš glītus veidus, kā vienā vietā īstenot transversālās problēmas (kas, iespējams, ir izkaisītas vairākās vietās attiecīgajā OOP ieviešanā). Tāpēc AOP padara programmu tīrāku un brīvāku savienojumu.