برنامه‌نویسی جنبه‌گرا

برنامه‌نویسی جنبه‌گرا  یک پارادایم برنامه‌نویسی است که پس از برنامه و برای رفع مشکلات آن به وجود آمد. هدف از برنامه‌نویسی جنبه‌گرا، مستقل کردن وظایف (در قالب ماژول‌ها) است به‌طوری‌که کمترین تداخل را در یکدیگر داشته باشند تا نهایتاً بتوان از آن‌ها در برنامه‌های دیگر نیز استفاده نمود. واحد ماژول بندی در AOP جنبه است. برای مثال؛ وظیفهٔ احراز هویت در یک برنامه را می‌توان به عنوان یک جنبه در نظر گرفت و ماژول جداگانه‌ای برای آن ساخت تا از این پس در تمام پروژه‌های مشابه بتوان از آن استفاده کرد. بیشتر زبان‌های برنامه‌نویسی، از برنامه‌نویسی جنبه‌گرا پشتیبانی خوبی به عمل می‌آورند. می‌توان از آن جمله به جاوا و روش AspectJ اشاره کرد.
به عنوان مثال برنامه‌ای را تصور کنید که از ماژول‌های مختلفی تشکیل شده‌است و حال می‌خواهید تمام پرس و جوهای پایگاه داده را در محلی ذخیره نموده و گزارشی تهیه نمایید. بدون استفاده از برنامه‌نویسی جنبه گرا بایستی در هر ماژول توابع جدید افزوده شوند و در تمام ماژول‌ها ممکن است بخشی از کد تکرار شود. اما با استفاده از برنامه‌نویسی جنبه گرا شما می‌توانید بدون اینکه در ماژول‌های دیگر تغییری ایجاد کنید یک ماژول دیگر بنویسید تا به صورت خودکار در ماژول‌های دیگر فراخوانی شده و اجرا شود. در این راستا امکان تنظیم اینکه هر متد در ماژول جدید در کدام قسمت از هر ماژول دیگر اجرا شود وجود دارد. شما می‌توانید بعد از اتمام اجرای بدنه کد، در تمام متدهای ماژول‌های دیگر، متدی با نام LogQuery را از ماژول جدید اجرا نمایید. بدون اینکه کد جدیدی به متدها افزوده شود.

برای برنامه‌سازی جنبه گرا می‌توان از زبان‌های عادی مانند C, C++ یا جاوا استفاده کرد و بخش‌هایی را برای مشخص کردن قوانین تلاقی به آن اضافه نمود. این مفاهیم شامل برش نقطه‌ای (Point cut)، نقاط اتصال (Join point)، ابلاغیه (Advice) و جنبه (Aspect) هستند.

منابع 
 
What is AOP - Mihanlearn

پیوند به بیرون 

 Eric Bodden's list of AOP tools in .net framework
 Aspect-Oriented Software Development, annual conference on AOP
 AspectJ Programming Guide
 The AspectBench Compiler for AspectJ, another Java implementation
 Series of IBM developerWorks articles on AOP
  A detailed series of articles on basics of aspect-oriented programming and AspectJ
 What is Aspect-Oriented Programming?, introduction with RemObjects Taco
 Constraint-Specification Aspect Weaver
 Aspect- vs. Object-Oriented Programming: Which Technique, When? 
 Gregor Kiczales, Professor of Computer Science, explaining AOP, video 57 min.
 Aspect Oriented Programming in COBOL 
 Aspect-Oriented Programming in Java with Spring Framework
 Wiki dedicated to AOP methods on.NET
Early Aspects for Business Process Modeling (An Aspect Oriented Language for BPMN)
 Spring AOP and AspectJ Introduction
 AOSD Graduate Course at Bilkent University
 Introduction to AOP - Software Engineering Radio Podcast Episode 106
 An Objective-C implementation of AOP by Szilveszter Molnar
 Aspect-Oriented programming for iOS and OS X by Manuel Gebele
 DevExpress MVVM Framework. Introduction to POCO ViewModels

 
برنامه‌نویسی
پارادایم‌های برنامه‌نویسی
توسعه نرم‌افزار جنبه‌گرا