Кіріспе

Аспектке бағытталған бағдарламалауда, нүктелі кесу – бірігу нүктелерінің жиынтығы. Нүктелі кесу кеңестерді нақты қай жерде қолдану керектігін көрсетеді, бұл мәселелерді бөлуге және бизнес-логиканы модулдеуге көмектеседі. Нүктелі кесулер көбінесе сыныптардың немесе әдістердің аттарын пайдаланып, кейде сыныптың немесе әдістің атына сәйкес келетін реттегіш өрнектер арқылы анықталады. Әртүрлі фреймворктер әртүрлі нүктелі кесу өрнектерін қолдайды; AspectJ синтаксисі – де-факто стандарт саналады. Нүктелі кесуді қолдайтын Java, Perl, Ruby және тағы да көптеген бағдарламалау тілдері үшін фреймворктер бар.

Өмірбаян

Түрлі бағдарламалау тілдеріндегі шектеулерге байланысты, жалпыға ортақ мәселе модульденбеген. Жалпыға ортақ мәселе дегеніміз – логикалық жағынан бір модульге жататын, бірақ тұтас жүйеге әсер ететін бағдарламалық құралдың бөліктері, мысалы, қауіпсіздік немесе журналдау. Аспектке бағытталған бағдарламалау, бағдарламашыларға белгілі бір жерде орындалатын кодты қамтитын "аспект" деп аталатын модульдерді жазуға мүмкіндік беру арқылы осы жалпыға ортақ мәселелерді шешуге тырысады. Белгілі бір жерді анықтау үшін қажетті өрнектер "Pointcut өрнектерінің" пайда болуына әкелді.

Атқару

Бағдарлама орындалуы нүктелі кесуде сипатталған бірігу нүктелерінің біріне жеткен кезде, нүктелі кесумен байланысты кодтың бір бөлігі (кеңес деп аталады) орындалады. Бұл бағдарламашыға қалыптан тыс мінез-құлыққа қосымша кодты қайда және қашан орындау керектігін анықтауға мүмкіндік береді. Нүктелі кесулер қолданыстағы бағдарламалық жасақтамаға аспектілерді қосуға, сондай-ақ мәселелерді анық бөліп, бағдарламалық жасақтаманы жобалауға мүмкіндік береді, онда бағдарламашы әртүрлі аспектілерді біртұтас қолданбаға енгізеді.

Мысал

Деректер қорындағы жазбаларды өзгерте алатын қолданба бар делік. Пайдаланушылар деректер қорын өзгертетін кезде, жазбаларды кім өзгертіп жатқаны туралы ақпаратты тіркегіміз келеді. Деректерді журналға жазудың дәстүрлі жолы – деректер қорын өзгертуден бірден бұрын журналдау әдісін шақыру. Аспектке бағытталған бағдарламалау арқылы біз «Деректер қорын өзгерту» әдісіне нүктелік кесім қолданып, қажетті ақпаратты тіркеу үшін шақырылатын кеңес ала аламыз.

Сындар

Тоқтап кесу тілдері бағдарламалық жасақтаманың эволюцияға қабілеттілігі және түсініктілігі сияқты маңызды қасиеттеріне кері әсер етеді. Дұрыс аспектіні анықтау үшін кодты қайта құру қажет болуы мүмкін, бірақ бұл жалпы жағдайда болмауы керек, себебі қайта құру – кодты жақсарту үшін жасалады. Егер бір кодқа бірнеше аспект қолданылуы керек болса және әр аспектке жеке қайта құру талап етілсе, мұндай жағдайда масштабтау қиынға соғады. Жалпы алғанда, әрбір аспект бағдарлама құрылымымен тығыз байланысты болады, өйткені тоқтап кесулер әдістің қолтаңбасын нақты көрсетеді, сондықтан бағдарлама өзгерген кезде тоқтап кесуді де өзгерту қажет. Бұл әзірлеуші үшін үлкен қиындық тудыруы мүмкін.