AOP vs OOP
Ang AOP (Aspect-oriented programming) at OOP (Object-oriented programming) ay dalawang paradigm sa programming. Ang isang programming paradigm ay isang pangunahing istilo ng computer programming. Ang mga paradigma sa pagprograma ay naiiba sa kung paano kinakatawan ang bawat elemento ng mga programa at kung paano tinukoy ang bawat hakbang para sa paglutas ng mga problema. Gaya ng ipinahihiwatig ng pangalan, nakatuon ang OOP sa pagrepresenta ng mga problema gamit ang mga real-world na bagay at ang pag-uugali ng mga ito, habang ang AOP ay nakikitungo sa paghiwa-hiwalay ng mga programa sa paghiwalayin ang mga alalahanin sa crosscutting.
Ano ang AOP?
Ang AOP ay isang programming paradigm, na tumatalakay sa paghahati-hati ng isang programa sa magkakaugnay na mga bahagi ng functionality (tinatawag na mga alalahanin) na pumuputol sa maraming lugar, upang mapataas ang modularity. Ang suporta para sa mga abstraction (tulad ng mga klase, pamamaraan, atbp.) upang igrupo at i-encapsulate ang mga alalahanin sa mga natatanging entity ay ibinibigay sa maraming iba pang paradigm sa programming. Ngunit ang mga alalahanin (tulad ng "Pag-log") ay mga halimbawa ng mga alalahanin sa pag-crosscutting, dahil ang bawat naka-log na bahagi ng system ay apektado ng diskarte na ginagamit para sa pag-log. Ang pangunahing pokus ng lahat ng pagpapatupad ng AOP ay ang pagkakaroon ng angkop na mga crosscutting expression upang makuha ang lahat ng alalahanin sa isang lokasyon.
Ano ang OOP?
Sa OOP, ang focus ay ang pag-iisip tungkol sa problemang lulutasin sa mga tuntunin ng mga real-world na elemento, at kumakatawan sa problema sa mga tuntunin ng mga bagay at kanilang pag-uugali. Inilalarawan ng mga klase ang mga abstract na representasyon ng mga bagay sa totoong mundo. Ang mga klase ay tulad ng mga blueprint o template, na kumukuha ng mga katulad na item o bagay na maaaring pagsama-samahin. Ang mga klase ay may mga katangian na tinatawag na mga katangian. Ang mga katangian ay ipinapatupad bilang mga global at instance na variable. Ang mga pamamaraan sa mga klase ay kumakatawan o tumutukoy sa pag-uugali ng mga klase na ito. Ang mga pamamaraan at katangian ng mga klase ay tinatawag na mga miyembro ng klase. Ang isang halimbawa ng isang klase ay tinatawag na isang bagay. Samakatuwid, ang isang bagay ay isang istraktura ng data na malapit na kahawig ng ilang bagay sa totoong mundo.
May ilang mahahalagang konsepto ng OOP gaya ng Data abstraction, Encapsulation, Polymorphism, Messaging, Modularity at Inheritance. Karaniwan, nakakamit ang encapsulation sa pamamagitan ng paggawa ng mga katangian na pribado, habang gumagawa ng mga pampublikong pamamaraan na maaaring magamit upang ma-access ang mga katangiang iyon. Ang inheritance ay nagbibigay-daan sa user na mag-extend ng mga klase (tinatawag na mga sub class) mula sa ibang mga klase (tinatawag na super class). Pinapayagan ng polymorphism ang programmer na palitan ang isang object ng isang klase sa halip na isang object ng super class nito. Karaniwan, ang mga pangngalan na matatagpuan sa kahulugan ng problema ay direktang nagiging mga klase sa programa. At gayundin, ang mga pandiwa ay nagiging mga pamamaraan. Ang ilan sa mga pinakasikat na wika ng OOP ay ang Java at C.
Ano ang pagkakaiba ng AOP at OOP?
Ang pangunahing pagkakaiba sa pagitan ng OOP at AOP ay ang focus ng OOP ay ang paghiwa-hiwalayin ang programming task sa mga object, na nagsasama ng data at mga pamamaraan, habang ang focus ng AOP ay ang hatiin ang program sa mga pag-aalala. Sa katunayan, ang AOP ay hindi isang katunggali para sa OOP, dahil ito ay lumabas sa OOP paradigm. Pinapalawak ng AOP ang OOP sa pamamagitan ng pagtugon sa ilan sa mga problema nito. Ipinakilala ng AOP ang mga maayos na paraan upang ipatupad ang mga alalahanin sa crosscutting (na maaaring nakakalat sa ilang lugar sa kaukulang pagpapatupad ng OOP) sa isang lugar. Samakatuwid, ginagawang mas malinis at mas maluwag na pinagsama ng AOP ang programa.