AOP ընդդեմ OOP
AOP (Aspect-oriented Programming) և OOP (Object-oriented Programming) երկու ծրագրավորման պարադիգմներ են: Ծրագրավորման պարադիգմը համակարգչային ծրագրավորման հիմնարար ոճն է: Ծրագրավորման պարադիգմները տարբերվում են նրանով, թե ինչպես է ներկայացված ծրագրերի յուրաքանչյուր տարրը և ինչպես է յուրաքանչյուր քայլը սահմանվում խնդիրների լուծման համար: Ինչպես անունն է հուշում, OOP-ը կենտրոնանում է իրական աշխարհի օբյեկտների և դրանց վարքագծի օգտագործմամբ խնդիրների ներկայացման վրա, մինչդեռ AOP-ն զբաղվում է ծրագրերը բաժանելով՝ բաժանելով խաչմերուկային մտահոգությունները:
Ի՞նչ է AOP:
AOP-ը ծրագրավորման պարադիգմ է, որն առնչվում է ծրագրի բաժանմանը ֆունկցիոնալության համահունչ ոլորտներին (կոչվում են մտահոգություններ), որոնք կտրում են բազմաթիվ ոլորտներ՝ մոդուլյարությունը բարձրացնելու նպատակով:Աբստրակցիաների (օրինակ՝ դասերի, մեթոդների և այլն) աջակցությունը` մտահոգությունները եզակի սուբյեկտների մեջ խմբավորելու և ամփոփելու համար տրամադրվում է բազմաթիվ այլ ծրագրավորման պարադիգմներում: Սակայն մտահոգությունները (օրինակ՝ «Գրանցումը») խաչաձեւ մտահոգությունների օրինակներ են, քանի որ համակարգի յուրաքանչյուր գրանցված մասի վրա ազդում է գրանցման համար օգտագործվող ռազմավարությունը: AOP-ի բոլոր ներդրման հիմնական նպատակն է ունենալ համապատասխան խաչաձեւ արտահայտություններ՝ բոլոր մտահոգությունները մեկ վայրում գրավելու համար:
Ի՞նչ է OOP?
OOP-ում ուշադրությունը կենտրոնանում է իրական աշխարհի տարրերի տեսանկյունից լուծվելիք խնդրի մասին մտածելու վրա և խնդիրը առարկաների և նրանց վարքագծի տեսքով ներկայացնելու վրա: Դասերը պատկերում են իրական աշխարհի օբյեկտների վերացական պատկերները: Դասերը նման են գծագրերի կամ ձևանմուշների, որոնք հավաքում են նմանատիպ իրեր կամ բաներ, որոնք կարող են խմբավորվել միասին: Դասերն ունեն հատկություններ, որոնք կոչվում են ատրիբուտներ: Հատկանիշներն իրականացվում են որպես գլոբալ և օրինակելի փոփոխականներ: Դասերի մեթոդները ներկայացնում կամ սահմանում են այս դասերի վարքագիծը:Դասերի մեթոդները և ատրիբուտները կոչվում են դասի անդամներ: Դասի օրինակը կոչվում է օբյեկտ։ Հետևաբար, օբյեկտը տվյալների կառուցվածք է, որը շատ նման է իրական աշխարհի որոշ օբյեկտների:
Կան մի քանի կարևոր OOP հասկացություններ, ինչպիսիք են Տվյալների վերացումը, Էկապսուլյացիան, Պոլիմորֆիզմը, Հաղորդագրությունների փոխանակումը, մոդուլյարությունը և ժառանգականությունը: Սովորաբար, ինկապսուլյացիան ձեռք է բերվում ատրիբուտները մասնավոր դարձնելով, միաժամանակ ստեղծելով հանրային մեթոդներ, որոնք կարող են օգտագործվել այդ ատրիբուտները մուտք գործելու համար: Ժառանգությունը թույլ է տալիս օգտվողին ընդլայնել դասերը (կոչվում են ենթադասեր) այլ դասերից (կոչվում են սուպեր դասեր): Պոլիմորֆիզմը թույլ է տալիս ծրագրավորողին փոխարինել դասի առարկան իր սուպեր դասի օբյեկտի փոխարեն: Որպես կանոն, խնդրի սահմանման մեջ հայտնաբերված գոյականներն ուղղակիորեն դառնում են դասեր ծրագրում: Եվ նմանապես, բայերը դառնում են մեթոդներ: OOP-ի ամենատարածված լեզուներից են Java-ն և C-ը:
Ո՞րն է տարբերությունը AOP-ի և OOP-ի միջև:
OOP-ի և AOP-ի հիմնական տարբերությունն այն է, որ OOP-ի նպատակը ծրագրավորման առաջադրանքը բաժանելն է օբյեկտների մեջ, որոնք ամփոփում են տվյալներն ու մեթոդները, մինչդեռ AOP-ի նպատակն է բաժանել ծրագիրը դեպի խաչաձև խնդիրներ:. Փաստորեն, AOP-ը OOP-ի մրցակից չէ, քանի որ այն առաջացել է OOP պարադիգմից: AOP-ն ընդլայնում է OOP-ը՝ անդրադառնալով իր մի քանի խնդիրներին: AOP-ը ներկայացնում է խաչաձեւ մտահոգությունները (որոնք կարող էին ցրված լինել համապատասխան OOP-ի իրականացման մի քանի վայրերում) մեկ տեղում իրականացնելու հստակ ուղիներ: Հետևաբար, AOP ծրագիրը դարձնում է ավելի մաքուր և թույլ միացված: