AOP vs OOP
AOP (Aspect-oriented programming) ja OOP (Object-oriented programming) ovat kaksi ohjelmointiparadigmaa. Ohjelmointiparadigma on tietokoneohjelmoinnin perustyyli. Ohjelmointiparadigmat eroavat toisistaan siinä, miten kukin ohjelmien elementti on esitetty ja miten kukin vaihe määritellään ongelmien ratkaisemiseksi. Kuten nimestä voi päätellä, OOP keskittyy ongelmien esittämiseen käyttämällä reaalimaailman objekteja ja niiden käyttäytymistä, kun taas AOP käsittelee ohjelmien hajottamista poikkileikkauksiksi.
Mikä on AOP?
AOP on ohjelmointiparadigma, joka käsittelee ohjelman hajottamista yhteenkuuluville toiminnallisille alueille (kutsutaan huolenaiheiksi), jotka ulottuvat useille alueille modulaarisuuden lisäämiseksi. Monissa muissa ohjelmointiparadigoissa on tukea abstraktioille (kuten luokat, menetelmät jne.) huolenaiheiden ryhmittämiseksi ja kapseloimiseksi ainutlaatuisiksi kokonaisuuksiksi. Mutta huolenaiheet (kuten "Lokikirjaus") ovat esimerkkejä laaja-alaisista huolenaiheista, koska kirjaamiseen käytetty strategia vaikuttaa jokaiseen järjestelmän kirjautuneeseen osaan. Kaikkien AOP-toteutusten pääpaino on sopivien poikkileikkausten ilmaisujen avulla kaikkien huolenaiheiden t altioimiseksi yhdessä paikassa.
Mikä on OOP?
OOP:ssa painopiste on ratkaistavan ongelman ajattelussa todellisten elementtien muodossa ja ongelman esittämisessä esineiden ja niiden käyttäytymisen kann alta. Luokat kuvaavat reaalimaailman esineiden abstrakteja esityksiä. Luokat ovat kuin piirustuksia tai malleja, joihin kerätään samanlaisia kohteita tai asioita, jotka voidaan ryhmitellä yhteen. Luokilla on ominaisuuksia, joita kutsutaan attribuuteiksi. Attribuutit toteutetaan globaaleina ja ilmentymämuuttujina. Luokkien menetelmät edustavat tai määrittelevät näiden luokkien käyttäytymistä. Luokkien menetelmiä ja attribuutteja kutsutaan luokan jäseniksi. Luokan esiintymää kutsutaan objektiksi. Siksi objekti on tietorakenne, joka muistuttaa läheisesti jotakin todellisen maailman objektia.
On olemassa useita tärkeitä OOP-käsitteitä, kuten tiedon abstraktio, kapselointi, polymorfismi, viestit, modulaarisuus ja periytyminen. Tyypillisesti kapselointi saavutetaan tekemällä attribuuteista yksityisiä, samalla kun luodaan julkisia menetelmiä, joita voidaan käyttää näiden määritteiden käyttämiseen. Perinnön avulla käyttäjä voi laajentaa luokkia (jota kutsutaan alaluokiksi) muista luokista (kutsutaan superluokiksi). Polymorfismin avulla ohjelmoija voi korvata luokan objektin sen superluokan objektin tilalle. Tyypillisesti ongelmanmäärittelystä löytyvistä substantiivista tulee suoraan ohjelman luokkia. Ja samoin verbeistä tulee menetelmiä. Jotkut suosituimmista OOP-kielistä ovat Java ja C.
Mitä eroa on AOP:n ja OOP:n välillä?
Avainero OOP:n ja AOP:n välillä on, että OOP:n painopiste on jakaa ohjelmointitehtävä objekteiksi, jotka kapseloivat dataa ja menetelmiä, kun taas AOP:n painopiste on hajottaa ohjelma monialaisiin huolenaiheisiin.. Itse asiassa AOP ei ole OOP:n kilpailija, koska se syntyi OOP-paradigmasta. AOP laajentaa OOP:tä käsittelemällä muutamia sen ongelmista. AOP esittelee siistejä tapoja toteuttaa monialaiset huolenaiheet (jotka ovat saattaneet olla hajallaan useissa paikoissa vastaavassa OOP-toteutuksessa) yhdessä paikassa. Siksi AOP tekee ohjelmasta puhtaamman ja löyhemmän kytketyn.