بخش۶ مبانی برنامه نویسی جنبه گرا
تا اینجا به این نتیجه رسیدیم که پیادهسازی دغدغههای متداخل به طور جداگانه کار مفیدی است. محققین روشهای متعددی برای این کار پیشنهاد کردهاند که به طور کلی به آن «جداسازی دغدغهها» میگویند. برنامهنویسی جنبهگرا یکی از این روشهاست. در واقع AOP میکوشد دغدغههای موجود در یک سیستم کاملاً از یکدیگر جدا شوند تا مشکلاتی که در بخشهای قبلی مورد بررسی قرار گرفتند پیش نیاید.
برنامهنویسی جنبهگرا به شما این اجازه را میدهد تا دغدغههای مختلف را به صورت مستقل و با ارتباط و وابستگی پایین پیاده سازی کنید. سپس با ترکیب کردن این پیادهسازیها سیستم نهایی را برای شما آماده میکند. در واقع در AOP سیستمها با پیادهسازی مستقل، مؤلفهبندی شده، و با وابستگی پایین دغدغههای متداخل ساخته میشود. در صورتیکه در OOP سیستمها با پیادهسازی مستقل، مؤلفهبندی شده، و با وابستگی پایین دغدغههای مشترک ساخته میشود. واحد پیمانهبندی در AOP جنبه[1] است، در صورتیکه در این واحد در OOP کلاس است.
توسعهی برنامه در روش برنامه نویسی جنبه گرا به طور کلی از سه مرحله تشکیل شدهاست:
تجزیهی جنبهای[2]: تجزیهکردن نیازمندیها، برای اینکه دغدغههای مشترک و متداخل مشخص شوند. در این قسمت دغدغههای در سطح پیمانهها از دغدغههای سطح سیستمی جدا میشوند. مثلاً در مورد سیستم کارت اعتباری دغدغهها عبارتند از: بخش پردازش اعتبار، ثبت وقایع، و هویت شناسی.
پیادهسازی دغدغهها: پیادهسازی هر دغدغه به طور کاملاً جداگانه. مثلاً در سیستم کارت اعتباری باید بخش مرکزی پردازش کارت اعتباری، بخش ثبت وقایع، و بخش هویت شناسی پیادهسازی شوند.
ترکیب مجدد جنبهای[3]: در این مرحله مجتمعساز جنبهها[4] قوانین مربوط به ترکیب مجدد را مشخص میکند و به این وسیله aspect ها را میسازد. فرآیند ترکیب مجدد، که به تلاقی[5] یا مجتمع سازی نیز معروف است، این اطلاعات را میگیرد و سیستم نهایی را آمادهمیکند. برای مثال پردازش کارت اعتباری: باید توسط یک یک زبان جنبهگرا مشخص کرد که اطلاعات در اول و آخر هر عملیات پردازش اعتبار ثبت شوند. همچنین باید مشخص کرد که قبل از ورود به هر کدام از عملیات تجاری عمل هویت شناسی انجام شود و در صورت درستی عملیات مورد نظر انجام گیرد.
برنامه نویسی جنبهگرا در برخورد با دغدغههای متداخل با برنامه نویسی شیء گرا متفاوت است. در برنامه نویسی جنبهگرا پیاده سازی هر دغدغه از اینکه توسط دغدغههای دیگر تحت نظر است بیخبر است. مثلاً قسمت پردازش کارت اعتباری نمیداند که دغدغههای دیگری آغاز و پایان عملیات آنرا ثبت میکنند یا هویت کاربر را قبل از آن چک میکنند. این نشاندهنده یک تغییر تفکر از نگرش شیء گرا است.
یک زبان جنبهگرا ممکن است یک روش دیگر برنامهنویسی را در خدمت خود بگیرد تا بتواند از مزیتهای آن استفاده کند. برای مثال یک زبان جنبهگرا ممکن است یک زبان شیء گرا را به عنوان پایه برای خود در نظر بگیرد. به این وسیله میتواند در پیادهسازی هر یک از دغدغهها، از امکانات شیءگرایی استفاده کند. این موضوع دقیقاً شبیه به زبانهای شیءگرا است که زبانها روالی را به عنوان پایه برای خود انتخاب کردند.
[2] Aspectual Decomposition
[3] Aspectual Recomposition
[4] Aspect Integrator
[5] Weaving
salam dost aziz va Gol khobi wblaget ghashang bood va jaleb tonesty be man sar bezan va az barname haye yaho 8 final Estefadeh kon va be dostanet moarefy kon montazeret hastam khosh hal shodam behshad bye
من از دو کار نفرت دارم یکی درد دل که کار شبه مردهاست و یکی هم از خود دفاع کردن و برای تبرئه خود جوش زدن.
مرحوم شریعتی
سلام
یه مطلب انتقادی درباره دکتر شریعتی نوشتم. دوست دارم میزبان شما باشم.[گل]