AOP vs OOP
AOP (Aspekt-orienteret programmering) og OOP (Objektorienteret programmering) er to programmeringsparadigmer. Et programmeringsparadigme er en grundlæggende stil inden for computerprogrammering. Programmeringsparadigmer adskiller sig i, hvordan hvert element i programmerne er repræsenteret, og hvordan hvert trin er defineret til løsning af problemer. Som navnet antyder, fokuserer OOP på at repræsentere problemer ved at bruge objekter fra den virkelige verden og deres adfærd, mens AOP beskæftiger sig med at nedbryde programmerne i adskilte tværgående bekymringer.
Hvad er AOP?
AOP er et programmeringsparadigme, som beskæftiger sig med at nedbryde et program i sammenhængende områder af funktionalitet (kaldet bekymringer), der går på tværs af flere områder, for at øge modulariteten. Understøttelse af abstraktioner (såsom klasser, metoder osv.) til at gruppere og indkapsle bekymringer i unikke entiteter findes i mange andre programmeringsparadigmer. Men bekymringer (såsom "logning") er eksempler på tværgående bekymringer, fordi alle loggede dele af systemet er påvirket af den strategi, der bruges til logning. Hovedfokus for alle AOP-implementeringer er at have passende tværgående udtryk til at fange alle bekymringer på et enkelt sted.
Hvad er OOP?
I OOP er fokus på at tænke på problemet, der skal løses, i form af elementer fra den virkelige verden, og at repræsentere problemet i form af objekter og deres adfærd. Klasser skildrer de abstrakte repræsentationer af objekter i den virkelige verden. Klasser er som tegninger eller skabeloner, der samler lignende genstande eller ting, der kan grupperes sammen. Klasser har egenskaber kaldet attributter. Attributter implementeres som globale og instansvariabler. Metoder i klasserne repræsenterer eller definerer disse klassers adfærd. Metoder og attributter for klasser kaldes medlemmer af klassen. En forekomst af en klasse kaldes et objekt. Derfor er et objekt en datastruktur, der ligner et objekt i den virkelige verden.
Der er flere vigtige OOP-koncepter såsom dataabstraktion, indkapsling, polymorfi, meddelelser, modularitet og arv. Typisk opnås indkapsling ved at gøre attributterne private, mens der skabes offentlige metoder, der kan bruges til at få adgang til disse attributter. Nedarvning giver brugeren mulighed for at udvide klasser (kaldet underklasser) fra andre klasser (kaldet superklasser). Polymorfi tillader programmøren at erstatte et objekt i en klasse i stedet for et objekt i dens superklasse. Typisk bliver de navneord, der findes i problemdefinitionen, direkte klasser i programmet. Og på samme måde bliver verber til metoder. Nogle af de mest populære OOP-sprog er Java og C.
Hvad er forskellen mellem AOP og OOP?
Nøgleforskellen mellem OOP og AOP er, at fokus for OOP er at nedbryde programmeringsopgaven i objekter, som indkapsler data og metoder, mens fokus for AOP er at opdele programmet i tværgående bekymringer. Faktisk er AOP ikke en konkurrent til OOP, fordi det opstod ud af OOP-paradigmet. AOP udvider OOP ved at løse nogle få af dets problemer. AOP introducerer smarte måder at implementere tværgående bekymringer (som kunne have været spredt over flere steder i den tilsvarende OOP-implementering) på et enkelt sted. Derfor gør AOP programmet renere og mere løst koblet.