برنامه نویسی جنبه گرا (aspect-oriented programming) (جشنواره عید تا عید)

(این مقاله توسط آقای بهرام براتی برای جشنواره عید تا عید جاواکاپ ارسال شده است و محتوای این مطلب لزوماً موردتأیید جاواکاپ نیست)
در فصول گرم تابستان در دماهای خیلی بالا و در چنین شرایطی دستگاهها ی خنک کننده هوا مثل کولر خیلی لازم میباشد اما نقطه ضعف این وسایل الکترونیکی این است که از الکتریسیته استفاده میکنند و الکتریسیته هزینه بر است و به ناچار برای داشتن خانهای خنک و راحت باید هزینه کرد.به خاطر این است که در هر خانهای دستگاهی دارد که هر یک کیلوواتی که مصرف میکنیم به ثبت می رساند. و هر ماهی یک بار یک نفر از طرف اداره برق مقدار مصرفی الکتریسیته را از دستگاه میخواند تا اداره برق مطلع شود چقدر برای ما صورتحساب صادر کند .
تصور کنید چه اتفاقی میافتاد اگر کسی به خانه ما نمیآمد و مقدار مصرفی الکتریسیته را اندازهگیری نمیکرد.فرض کنید به عهده مالک خانه بود که با اداره برق تماس بگیرد و میزان الکتریسیته مصرفی را گزارش دهد.هر چند ممکن است افرادی وظیفه شناس با دقت میزان مصرفی وسایل روشنایی ،تلویزیون و کولر و… را ثبت کنند .اما اکثراً خودشان را به دردسر نمی اندازند.الکتریسیته ای که براساس سازگان اعتماد (اعتماد اداره برق به مشتری ) باشد برای مشتری عالی است.اما برای اداره برق آنچنان ایدهآل نیست .اندازه گیری مصرف اکتریسیته یک وظیفه خیلی مهم است اما در ذهن یک خانه دار در اولویت نیست .چمن زنی ،جاروبرقی کشیدن و تمیز کردن حمام از جمله کارهایی هستند که خود خانه دار ها انجام میدهند .اندازه گیری میزان الکتریسیته مصرفی از نظر خانه دار ها یک رویداد منفعل است .
برخی از عملکرد سیستمهای نرم افزاری شبیه به دستگاه اندازهگیری الکتریسیته در خانهها میباشد .این عملکرد ها باید در چندین نقطه از برنامه اعمال شوند اما فراخوانی آنها در هر نقطه از برنامه به صورت صریح مناسب نیست .به طور مثال مدیریت Logging ,security,transactional . اما آیا آنها باید فعالیتی باشد که اشیاء برنامه شما به صورت فعال در آنها شرکت میکند یا بهتر است اشیاء برنامه شما بر روی مشکلات مربوط به کاری که این برنامه برایش طراحی شده تمرکز کند.و بگذارد یک سری جنبهها توسط شخص دیگری انجام شود .
در توسعه نرمافزار عملکردهایی (functions) که چندین نقطه از برنامه را پوشش میدهند را cross-cutting concerns می نامند.معمولا cross-cutting concerns جدا از مفاهیم منطق برنامه (business logic) هستند. جدا کردن cross-cutting concerns از منطق برنامه ،جایی میباشد که برنامه نویسی جنبه گرا (aspect-oriented programming (AOP) به کار میآید .
جنبهها (aspects) به ماژول کردن cross-cutting concerns کمک میکند .به طور خلاصه یک cross-cutting concern میتواند هر عملکردی را که در چندین نقطه از برنامه تأثیر میگذارد توضیح دهد .به طور مثال Security یک cross-cutting concern است که متد های بسیاری در یک برنامه میتواند قوانین امنیتی داشته باشند که به آنها اعمال میشود . شکل زیر برنامهای را نشان میدهد که به ماژول های مختلفی شکسته شده است .که هر ماژول برای دامنه خاص خودش سرویس هایی را ارائه میدهد .
سلام
خیلی خوب میشد اگر نحوه استفاده از AOP در جاوا را هم توضیح میدادید.
لطفا منابع استفاده شده در این مطلب را هم ذکر کنید.
با سلام
در پست های بعدی حتما نحوه استفاده از aop را در برنامه های جاوایی مطرح میکنم
منبع: کتاب spring in action
Graig Walls