« پایان نامه ارشد : راهنمای نگارش مقاله با موضوع وضعیت راههای اصفهان در عصر ... | منابع کارشناسی ارشد درباره : بررسی و شناخت ... » |
If(GetManager()== Condition)
StopDisposing();
else
StartDisposing();
{
شکل۴-۴٫ اسکلت مشترک ترتیب فراخوانی دستورات الگوریتم شکل ۴-۳ در متد SetManager
استراتژی۲. آیا کاندیدهای استراتژی دارای یک ساختار منتزع- عملیاتی[۴۶] است؟ این معیار بجای محاسبه تعداد فرزندان استراتژی استفاده میگردد. تعداد فرزندان استراتژی از یک تا چندین پیادهسازی متغیر هستند. بنابراین بجای در نظر گرفتن تعداد فرزندان، وجود ساختار منتزع- عملیاتی (برای پیادهسازی گونه های مختلف الگوریتم متدها باید رونویسی شوند، بنابراین وجود ساختار منتزع، الزامی است) را به عنوان معیار قرار میدهیم.
(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))
استراتژی۳. آیا رابطها با دسترسی عمومی، در استراتژی منتزع، بین همه استراتژی های عملیاتی رونویسی شده اند؟ لازم است که متدهای عمومی رونویسی شده بین استراتژی های وارث برای قابل تعویض ساختن آنها در یک ساختار فراخوانی ثابت، مشترک باشند. به عبارتی متد جدید با دسترسی عمومی نباید در یک استراتژی موجود باشد و در دیگری نباشد.
استراتژی ۴. آیا والد بین استراتژی و زمینه مشترک است؟ سلسله مراتب استراتژی و زمینه استفاده کننده از آن، باید از هم مستقل باشند. چون در غیر اینصورت زمینه نیز یک استراتژی است و باید حاوی مشخصات الگوریتمیک باشد و استقلال بین الگوریتمها و زمینه از بین میرود.
استراتژی ۵. بررسی حضور خصیصه “حفظ فیلد” [۱۵,۴] در زمینه، به منظور اینکه کلاینت در هر لحظهای از اجرا بتواند بر حسب شرایط از یک استراتژی به استراتژی دیگر جابجا شود، حضور حداقل یک متد با دسترسی عمومی (به علاوهی متد سازنده) که استراتژیها را به شکل پارامتر از کلاینت بگیرد و جابجایی بین آنها را انجام دهد، لازم است. اگر این متد در زمینه استفاده کننده از استراتژی موجود نباشد مفهوم اصلی این الگو، قابلیت جابجا شدن الگوریتمها در زمان اجرا، حفظ نشده است.
استراتژی ۶. آیا همه رابطهایی که از سمت زمینه استفاده کننده از استراتژی فراخوانی میشوند، در کلیه استراتژی های عملیاتی موجود هستند؟ متد عمومی جدیدی که در یکی از استراتژیها تعریف شده ولی در دیگری موجود نباشد، نباید از سمت زمینه استفاده کننده از استراتژی مورد فراخوانی قرار گیرد. در غیر این صورت اصل جابجایی با یک فیلد مشترک را از بین میبرد. ما این فراخوانی را ‘فراخوانی خارج از محدوده’ مینامیم.
۴-۲-۲٫ معیارهای تشخیص الگوی وضعیت
شکل۴-۵٫ الگوی وضعیت [۱]
گاهی نیازمند یک شی با چندین وضعیت هستیم، بطوریکه با حرکت از یک وضعیت به وضعیت دیگرش، رفتار مناسبی را از خود نشان دهد [۱]. همچنین میخواهیم در یک زمینه خاص و در یک لحظه، تنها در یک وضعیت قرار گیرد و به راحتی وضعیتی اضافه یا حذف شود. الگوی وضعیت نیازمندیهای فوق را برآورده می کند. الگوی وضعیت ساختاری کاملا مشابه با الگوی استراتژی دارد و تنها در رفتار با الگوی استراتژی متفاوت می شود. این شباهت باعث شده که در خیلی از موقعیتها، ابزارهای خودکار شناسایی الگوهای طراحی، نتوانند الگوی وضعیت را از استراتژی تشخیص دهند. جابجایی بین کلاسهای مشخصکننده وضعیتها یا به صورت داخلی و یا از خارج انجام میگیرد. در واقع الگوی وضعیت به صورت آشکارا مشخص نمیکند که در چه مکانی و چه زمانی تغییر وضعیت رخ میدهد. بنابراین هر الگوی وضعیت می تواند تعدادی رابط را پیادهسازی کند که به رابطهای کلاس وضعیت دیگر هیچ ارتباطی نداشته باشد. معیارهای متمایزکننده الگوی وضعیت از الگوی استراتژی در ادامه آمده است.
وضعیت ۱. تعداد استراتژی های عملیاتی (دلیل استفاده از واژه های استراتژی و زمینه در تمام معیارها این است که، این معیارها میخواهند نمونههای استراتژی را تصحیح برچسب کنند و ابزارها در خروجی خود، آدرس استراتژی و زمینه را دادهاند) که حاوی ایجاد نمونه ای از همزاد خود هستند بطوریکه، این نمونهها بعد از ایجاد در یک فیلد مشترک مستقر شده اند (یعنی بین آنها با دستورات شرطی جابجایی رخ داده است). گاهی زیرکلاسهای وضعیت همزادی از خود را ایجاد و وضعیت جانشین را به منظور جابجایی تعیین می کنند.
وضعیت ۲. تعداد نمونههای استراتژی که در زمینه مورد استفاده ایجاد شده اند، بطوریکه این نمونهها در یک فیلد مشترک مستقر شده اند (یعنی بین آنها با دستورات شرطی جابجایی رخ داده است). گاهی زمینه مجموعه ای از وضعیتها را ایجاد و امکانی برای جابجایی آنها فراهم می کند.
وضعیت ۳. آیا زمینه استفادهکننده از استراتژی خود را به عنوان پارامتر به استراتژی میفرستد؟ ممکن است زمینه خود را به وضعیت ها بفرستد تا وضعیتها هنگام جابجایی، زمینه را مطلع کرده و سپس زمینه، جابجایی را با وضعیت ارسال شده از سوی وضعیتها انجام دهد.
وضعیت ۴. تعداد نمونههای استراتژی که در زمینه ایجاد میشوند و فیلدی که در آن قرار میگیرند مشترک نیست. اگر دو استراتژی وارث، در یک زمان و در دو فیلد غیر مشترک در یک زمینه ایجاد شوند، در این صورت الگو مورد نظر نمیتواند الگوی وضعیت باشد چون یک زمینه در هر زمان تنها می تواند در یک وضعیت قرار بگیرد.
وضعیت ۵. تعداد فراخوانیهایی که از عملگرهای زمینه در استراتژی می شود. برای تنظیم وضعیت، زمینه از سمت وضعیتها ممکن است فراخوانی شود.
وضعیت ۶. آیا والد بین استراتژی و زمینه مشترک است؟ سلسله مراتب وضعیت و زمینه استفاده کننده از آن برای حفظ استقلال باید از هم جدا باشند.
۴-۲-۳٫ معیارهای تشخیص تطبیق دهنده شی
شکل۶-۴٫ الگوی تطبیق دهنده ی شی [۱]
هدف الگوی تطبیق دهنده، تبدیل رابطی از یک کلاس (تطبیق دهنده) به رابط کلاس دیگر (تطبیق یافته) است، آنطور که کلاینت انتظار دارد [۱]. این الگو امکانی را ایجاد می کند که کلاینت از وجود رابط کلاس دیگر در کلاس تطبیق دهنده باخبر نیست و فکر می کند که رابط کلاس تطبیق دهنده عملیات مورد نیازش را رفع می کند. درحالیکه رابط کلاس تطبیق یافته این کار را انجام میدهد. این الگو منجر می شود تا کلاسهایی که به دلیل رابطهای ناسازگار نمی توانستند با یکدیگر کار کنند بتوانند ارتباط برقرار کنند و با یکدیگر کار کنند بدون اینکه کلاینت متوجه شود. در برخی از موقعیتها ابزارهای خودکار شناسایی الگوهای طراحی، الگوی تطبیقدهنده را با استراتژی اشتباه گرفتهاند. شباهتهای ساختاری این الگو با استراتژی بر اثر گسترش کلاس تطبیق دهنده و در نظر گرفته شدن تطبیق دهنده به عنوان زمینه و تطبیق یافته به عنوان استراتژی یا برعکس میباشد. در ادامه معیارهایی برای جداسازی الگوی تطبیقدهنده از الگوهای دیگر آمده است.
تطبیق دهنده شیء ۱. تعداد زیرکلاسهای استراتژی که، تعداد کل متدهای عمومی رونویسی شده حاوی فراخوانی به پارامتر سازندهشان تقسیم بر تعداد کل متدهای عمومی حاوی فراخوانی به پارامتر سازندهشان برابر با یک می شود. تطبیق یافته در متدهای رونویسی شده تطبیق دهنده باید مورد فراخوانی قرار بگیرد نه در متد جدید ناشناس. چون کلاینت انتظار دارد متدهای کلاس منتزع تطبیق دهنده عملیات مورد نظرش را فراهم کنند و انتظار رابط جدید و ناشناخته را ندارد. در نتیجه این معیار تشخیص میدهد که آیا تطبیق یافته در متد عمومی جدید در تطبیق دهنده فراخوانی شده است یا نه؟ مقدار یک به این معنی است که هیچ متد جدیدی تعریف نشده است که حاوی فراخوانی تطبیق یافته باشد. متد عمومی در نظر گرفته شده است چون متد شخصی یا قابل ارث بری مستقیما از بیرون قابل فراخوانی نیست.
*[۴۷]تطبیق دهنده ی شیء ۲٫
تعداد زیرکلاسهای مستقیم و غیرمستقیمی که حاوی فراخوانی به پارامتر سازنده در متد رونویسی شده عمومی هستند. در الگوی تطبیق دهنده همه یا اکثر زیرکلاسهای گسترش یافته، تطبیق یافته را به عنوان پارامتری از سازنده میگیرند.
تطبیق دهنده ی شیء ۳.
آیا والد بین استراتژی و زمینه مشترک است؟ تطبیق دهنده و تطبیق یافته نمی توانند از یک والد مشترک گسترش یافته باشند. ( در الگوی تطبیق دهنده شی )
تطبیق دهنده ی شیء ۴.
تعیین موجود بودن ساختار منتزع- عملیاتی در ساختار زمینه. اگر زمینه استفاده کننده از استراتژی یک تطبیق دهنده باشد، برای تطبیق یافتن با رابط های جدید نیاز به رونویسی شدن دارد. پس باید در یک ساختار منتزع- عملیاتی واقع شده باشد.
۴-۲-۴٫ معیارهای تشخیص کارخانه انتزاعی
شکل ۴-۷٫ الگوی طراحی کارخانه انتزاعی [۱]
اگر مجموعهای از اشیا را داشته باشیم که به سبکهای مختلف قابل تولید شدن باشند، هنگام جابجایی از یک سبک به سبک دیگر، چه باید کرد؟ باید از هزاران شی به هزاران شی (از همان نوع اما با سبک متفاوت)، جابجا شویم؟ الگوی کارخانه انتزاعی این امکان را میدهد که در چنین مواقعی تنها با جابجایی یک شی، از یک سبک به سبک دیگر جابجا شویم. هدف این الگو ایجاد یک رابط برای تولید خانوادهای از اشیا مرتبط یا وابسته، بدون معین کردن کلاس عملیاتیشان است [۱].
حتی با مقایسه تعریف دو الگوی کارخانه انتزاعی و استراتژی، شباهتهای موجود در پیادهسازی و عملکرد آنها مشخص است. الگوی استراتژی امکان جابجایی بین خانوادهای از الگوریتمها را در یک زمینه خاص فراهم می کند، درحالیکه کارخانه انتزاعی نیز، امکان جابجایی بین استانداردهای مختلف تولید مجموعه ای از اشیا را در یک زمینه خاص فراهم میسازد. برای فراهمسازی این جابجایی در یک زمینه خاص نیازمند چارچوب مشترک ذکر شده در بخش استراتژی و ساختار فراخوانی ثابت هستیم.
معیارهای متمایزکننده الگوی کارخانه انتزاعی به جهت مشخص کردن هدف هر عملکرد و ساختار مشابه (الزام حضور رابطهای مشترک برای جابجایی خانوادهای از اشیاء در یک مکان مشترک) با الگوی استراتژی در زیر آمدهاند.
کارخانه انتزاعی ۱. تعداد متدهای عمومی که بین تمام استراتژی های وارث، رونویسی شده اند. متدهای عمومی رونویسی شده باید در تمام تولیدکنندهها مشترک باشند (به منظور ایجاد قابلیت جابجایی بین استانداردهای موجود، در یک زمینه خاص با ساختار فراخوانی ثابت).
کارخانه انتزاعی ۲. کمترین تعداد متدهای رونویسی شده عمومی که شی جدیدی را ایجاد و بر میگردانند (بین کلاسهای وارث استراتژی) بدون اینکه پیادهسازیای را در بر بگیرند. هر تولیدکننده عملی در کارخانه انتزاعی، تنها برای تولید مجموعه ای از اشیا مرتبط یا وابسته استفاده می شود و پیادهسازی دیگری را در بر ندارند. “کمترین” استفاده می شود چون، همه زیرکلاسهای تولیدکننده باید رابطهای که اشیایی را بر میگردانند و هیچ پیادهسازیای ندارند، داشته باشند. مقدار این معیار باید برابر با تعداد متدهای رونویسی شده مشترک بین همه تولید کنندهها باشد.
۴-۲- ۵٫ معیارهای تشخیص فرمان
شکل ۴-۸٫ الگوی طراحی فرمان [۱]
گاهی اوقات نیازمند آن هستیم که تقاضایی را به یک شی صادر کنیم بدون اینکه کلاینت صادر کننده تقاضا بداند که چه کسی و چگونه تقاضایش را بر طرف می کند. به عبارتی این الگو موجب پارامتری شدن صدور تقاضا به یک شی می شود [۱]. هدف الگوی فرمان در پوشینه قرار دادن هر تقاضا به شکل یک شی است. الگوی تطبیقدهنده شی با الگوی فرمان از نظر ساختاری کاملا مشابه و تنها در رفتار و یک سری ویژگیهای داخلی متفاوت هستند. در این قسمت سعی بر آن است که این دو الگو را از هم و از الگوهای دیگر متمایز کنیم.
با توجه به شکل زیر شباهت ساختاری الگوی فرمان و تطبیق دهنده قابل مشاهده میباشد.
شکل۴-۹٫ شباهت ساختاری الگوی فرمان و تطبیق دهنده شی [۱]
*فرمان۱٫ تعداد متدهای عمومی رونویسی شده مشترک بین همه استراتژی های عملیاتی. حداقل یک رابط برای گرفتن تقاضای کاربر به شکل پارامتر و مخفی کردن نحوه انجام فرمانها باید بین فرمان ها مشترک باشد.
فرمان۲. تعداد جفت کلاسهای منتزع- عملیاتی در ساختار زمینه که حاوی متدی با نام یا مترادف نام “run/execute” هستند. ممکن است ساختار زمینه الگوی فرمان باشد. (تحلیل معنایی) در اکثر نمونههای واقعی از چنین نامهایی استفاده می شود.
فرمان۳. تعداد جفت کلاسهای منتزع-عملیاتی در ساختار استراتژی که حاوی متدی با نام یا مترادف نام “run/execute” هستند. ممکن است ساختار استراتژی الگوی فرمان باشد. (تحلیل معنایی)
فرم در حال بارگذاری ...