aspect oriented programing _3

بخش۶                    مبانی برنامه نویسی جنبه گرا

تا اینجا به این نتیجه رسیدیم که پیاده‌سازی دغدغه‌های متداخل به طور جداگانه کار مفیدی است. محققین روش‌های متعددی برای این کار پیشنهاد کرده‌اند که به طور کلی به آن «جداسازی دغدغه‌ها» می‌گویند. برنامه‌نویسی جنبه‌گرا یکی از این روش‌هاست. در واقع AOP می‌کوشد دغدغه‌های موجود در یک سیستم کاملاً از یکدیگر جدا شوند تا مشکلاتی که در بخش‌های قبلی مورد بررسی قرار گرفتند پیش نیاید.

 

برنامه‌نویسی جنبه‌گرا به شما این اجازه را می‌دهد تا دغدغه‌های مختلف را به صورت مستقل و با ارتباط و وابستگی پایین پیاده سازی کنید. سپس با ترکیب کردن این پیاده‌سازی‌ها سیستم نهایی را برای شما آماده می‌کند. در واقع در AOP سیستم‌ها با پیاده‌سازی مستقل، مؤلفه‌بندی شده، و با وابستگی پایین دغدغه‌های متداخل ساخته می‌شود. در صورتی‌که در OOP سیستم‌ها با پیاده‌سازی مستقل، مؤلفه‌بندی شده، و با وابستگی پایین دغدغه‌های مشترک ساخته می‌شود. ‌ واحد پیمانه‌بندی در AOP جنبه[1] است، در صورتی‌که در این واحد در OOP کلاس است.

 

توسعه‌ی برنامه در روش برنامه نویسی جنبه گرا به طور کلی از سه مرحله تشکیل شده‌است:

Ÿ        تجزیه‌ی جنبه‌ای[2]: تجزیه‌کردن نیازمندی‌ها، برای اینکه دغدغه‌های مشترک و متداخل مشخص شوند. در این قسمت دغدغه‌های در سطح پیمانه‌ها از دغدغه‌های سطح سیستمی جدا می‌شوند. مثلاً در مورد سیستم کارت اعتباری دغدغه‌ها عبارتند از: بخش پردازش اعتبار، ثبت وقایع، و هویت شناسی.

Ÿ        پیاده‌سازی دغدغه‌ها: پیاده‌سازی هر دغدغه به طور کاملاً جداگانه. مثلاً در سیستم کارت اعتباری باید بخش مرکزی پردازش کارت اعتباری، بخش ثبت وقایع، و بخش هویت شناسی پیاده‌سازی شوند.

Ÿ        ترکیب مجدد جنبه‌ای[3]: در این مرحله مجتمع‌ساز جنبه‌ها[4] قوانین مربوط به ترکیب مجدد را مشخص می‌کند و به این وسیله aspect ها را می‌سازد. فرآیند ترکیب مجدد، که به تلاقی[5] یا مجتمع سازی نیز معروف است، این اطلاعات را می‌گیرد و سیستم نهایی را آماده‌می‌کند. برای مثال پردازش کارت اعتباری: باید توسط یک یک زبان جنبه‌گرا مشخص کرد که اطلاعات در اول و آخر هر عملیات پردازش اعتبار ثبت شوند. همچنین باید مشخص کرد که قبل از ورود به هر کدام از عملیات تجاری عمل هویت شناسی انجام شود و در صورت درستی عملیات مورد نظر انجام گیرد.

 

برنامه نویسی جنبه‌گرا در برخورد با دغدغه‌های متداخل با برنامه نویسی شیء گرا متفاوت است. در برنامه نویسی جنبه‌گرا پیاده سازی هر دغدغه از اینکه توسط دغدغه‌های دیگر تحت نظر است بی‌خبر است. مثلاً قسمت پردازش کارت اعتباری نمی‌داند که دغدغه‌های دیگری آغاز و پایان عملیات آن‌را ثبت می‌کنند یا هویت کاربر را قبل از آن چک می‌کنند. این نشان‌دهنده یک تغییر تفکر از نگرش شیء گرا است.

 

یک زبان جنبه‌گرا ممکن است یک روش دیگر برنامه‌نویسی را در خدمت خود بگیرد تا بتواند از مزیت‌های آن استفاده کند. برای مثال یک زبان جنبه‌گرا ممکن است یک زبان شی‌ء گرا را به عنوان پایه برای خود در نظر بگیرد. به این وسیله می‌تواند در پیاده‌سازی هر یک از دغدغه‌ها، از امکانات شیء‌گرایی استفاده کند. این موضوع دقیقاً شبیه به زبان‌های شیء‌گرا است که زبان‌ها روالی را به عنوان پایه برای خود انتخاب کردند.

 

 

[2] Aspectual Decomposition

[3] Aspectual Recomposition

[4] Aspect Integrator

[5] Weaving