OCP - shekoufehrahimi.com
Download
Report
Transcript OCP - shekoufehrahimi.com
طراحی مولفه های مبتنی بر کالس
اصول طراحی مبتنی بر مولفه
طراحی در سطح مولفه ها از اطالعات فراهم شده به عنوان
بخشی از مدل خواسته ها و اطالعات نمایش داده شده به عنوان
بخشی از مدل معماری بهره می برد .هنگامی که یک روش
مهندسی نرم افزار شی گرا انتخاب می شود آن چه در طراحی
در سطح مولفه ها کانون توجه قرار می گیرد پرداختن به
جزئیات کالس های ویژه دامنه مساله و تعریف و پاالیش
کالس های زیر ساختی موجود در مدل خواسته ها ست .
توصیف مشروحی از صفات عملیات ها و واسطه های مورد
استفاده این کالس ها جزئیات طراحی الزم برای فعالیت ساخت
شی را فراهم می آورد.
اصول پایه طراحی مولفه ها
در طراحی در سطح مولفه ها از چهار اصل پایه طراحی استفاده می
شود که هنگام به کارگیری مهندسی نرم افزار شی گرا به طور گسترده
پذیرفته می شوند .انگیزه اصلی برای به کارگیری این اصول ایجاد
طراحی هایی است که بیشتر مستعد تغییر باشند و انتشار اثرات جانبی
ناشی از تغییرات را کاهش دهند .
از این اصول می توانید به عنوان راهنمایی در توسعه هر مولفه ی نرم
افزار استفاده کنید .
اصل باز –بسته ()OCP
یک مولفه باید برای عمل بسط باز و برای عمل اصالح بسته باشد .
این عبارت ممکن است تناقض آمیز به نظر برسد ولی یکی از مهم ترین
خصوصیات طراحی در سطح مولفه ها را نشان می دهد .به بیان ساده
باید مولفه را به قسمی مشخص کنید که بتوان آن را بسط داد بدون اینکه
نیازی به انجام اصالحات داخلی در سطح کد ها و منطق در خود مولفه
باشد .
برای دستیابی به این هدف انتزاع هایی ایجاد می کنید که میان قابلیت
عملیاتی که احتماال باید بسط و گسترش داده شود و خود کالس طراحی به
عنوان میانجی عمل می کند .
برای مثال فرض کنید قابلیت امنیتی منزل در محصول safehomeاز
کالس detectorاستفاده می کند که باید وضعیت هر نوع حسگر امنیتی
را چک کند .
این احتمال وجود دارد که با گذر زمان تعداد و انواع حسگر های امنیتی
رشد پیدا کند .اگر منطق پردازش داخلی به صورت دنباله ای از
ساختار های if-then-elseپیاده سازی شود ئ هر کدام به یک نوع
حسگر متفاوت بپردازد افزودن نوع جدیدی از حسگر مستلزم منطق
داخلی اضافی خواهد بود .
یک راه دستیابی به اصل ocpبرای کالس detectorدر شکل زیر نشان
داده شده است .واسط sensorنشان گر دیدگاهی سازگار از جسگر ها
در مولفه ی detectorاست .اگر نوع جدیدی از حسگر افروده شود
تغییری برای کالس detectorمورد نیاز نیست .پس ocpبرقرار
است .
Sensor :
)(Read
)( Enable
)(Disable
)(Test
آشکارساز
حسگر
co2
حسگر
گرمایی
آشکارساز
حرکت
حسگر دود
حسگر
های
درها
OCPدر عمل
نقش آفرینان :
وینود و شکیرا –اعضای تیم مهندسی نرم افزار safehome
گفتگو :
وینود :همین االن مدیرتیم با من تماس گرفت .می گوید بخش بازار یابی می
خواهد یک حسگر جدید اضافه کند .
شکیرا :خدایا دوباره ؟
وینود :بله ....و باورت نمی شود چه چیزی درست کرده اند .
شکیرا :دوست دارم بشنوم
وینود :اسمش را گذاشته اند حسگر نگرانی سگی
شکیرا :یعنی چی ؟
وینود :برای آدم هایی که حیوان خانگیشان را در آپارتمان یا خانه هایی می
گذارند که به خانه ها و آپارتمان های دیگر نزدیک است .
سگ شروع به پارس کردن می کند .همسایه عصبانی می شود و شکایت
می کند .ولی با این حسگر ها اگر سگ یسشتر از مثال یک دقیقه پارس
کند حسگر یک حالت هشدار را فعال می کند که به تلفن همراه صاحبخانه
زنگ می زند .
شکیرا :شوخی می کنی .نه؟
وینود :نخیر.مدیر تیم می خواهد بداند چقدر وقت می گیرد تا یک قابلیت
امنیتی دیگر اضافه کینم :
شکیرا :وقت زیادی نمیگیرد .ما کالس های واقعی حسگر را پشت واسط
sensorجدا کرده ایم .هر وقت مشخصات مربوط به حسگر سگی را
داشته باشیم .اضافه کردن آن باید مثل آب خوردن باشد .تنها کاری که
باید بکنم ایجاد یک مولفه ی مناسب است .یعنی یک کالس مولفه ی
detectorبه هیچ وجه نباید نغییر کند .
وینود :پس به مدیر می گویم که مشکل بزرکی وجود ندارد .
شکیرا :با شناختی که از مدیر دارم او از ما می خواهد که به کارمان ادامه
بدهیم و این حسگر سکی را در الویت بعدی قرار بدهیم .
وینود :اگر االن هم بخواهد می توانی ارائه دهی ؟
شکیرا:بله طراحی واسط طوری بوده که بدون مسکل خاصی این کار را
انجام می دهیم .
وینود:تا حاال از اصل باز و بسته چیزی شنیده ای ؟
شکیرا :نه نشنیدم
وینود :مشکلی نیست .