طراحی شی گرا (Object-Oriented Design)
در فاز طراحی شی گرا و یا همان Object-Oriented Design، یک مدل ادراکی و یا conceptual model توسعه داده شده و به یک مدل شی گرا با استفاده از طراحی شی گرا تقدیم می گردد. در این فاز، مفاهیم مستقل از تکنولوژی که در فاز تجزیه و تحلیل شی گرا ایجاد گردیدند به پیادهسازی کلاسها، قیود، interface ها و دیگر عناصر موجود در یک مدل شی گرا تبدیل میگردند. در واقع هدف از فاز طراحی شی گرا، توسعه دادن ساختار معماری یک سیستم است. مراحل مختلف طراحی شی گرا شامل عناصر زیر میباشند:
تعریف کردن context و یا فضای کاری یک سیستم
طراحی کردن معماری سیستم
مشخص کردن object های درون سیستم
ساختن design model ها و یا مدل های طراحی
مشخص کردن object interface ها و یا واسط های اشیا
در فاز طراحی شی گرا می توانیم مراحل مختلفی را نیز داشته باشیم که به طور کلی تحت مراحل conceptual design و یا طراحی ادراکی و detailed design و یا طراحی جزئی تنظیم میگردند.
طراحی ادراکی و یا conceptual design
در این قسمت تمامی کلاس ها مشخص می گردند و سیستم بر اساس آنها ایجاد میشود. علاوه بر این؛ وظایف هر کدام از کلاس ها نیز مشخص و تعیین میگردند. نمودار کلاس و یا class diagram برای مشخص کردن ارتباط بین کلاس ها مورد استفاده قرار میگیرد و البته نمودار تعامل و یا interaction diagram برای نشان دادن جریان event ها مورد استفاده قرار میگیرد. از قسمت طراحی ادراکی، تحت عنوان طراحی سطح بالا و یا high-level design نیز یاد می شود.
طراحی جزئی و یا detailed design
در این مرحله attribute ها و operation های مربوط به هر کلاس مشخص و به آن انتصاب داده میشود. این موضوع بر اساس نمودار تعامل و یا interaction diagram اتفاق میافتد. علاوه بر این؛ state machine diagram توسعه داده شده و با استفاده از آن، جزئیات مربوط به طراحی هر کدام از کلاس ها به طور مفصل تری مشخص می گردد. به این قسمت low-level design و یا طراحی سطح پایین نیز می گویند.
اصل decouple کردن و یا principle of decoupling
یکی از موضوعات مهم در طراحی شی گرای موفق، طراحی کردن یک سیستم با استفاده از class های مستقل از یکدیگر است. به عبارت دیگر، کلاس ها باید طوری طراحی بشوند که ایجاد تغییر در یک کلاس، باعث ایجاد تغییرات آبشاری در دیگر کلاسها نشود. اگر قرار باشد که این در هم تنیدگی و یا اصطلاحاً tight coupling از بین برود، میبایست با استفاده از interface ها و دیگر تکنیک های شی گرا، طراحی سیستم انجام بپذیرد.
برقراری چسبندگی و یا cohesion
یکی دیگر از اصول بسیار مهم در طراحی شی گرا های موفق این است که کلاس ها همواره باید در سطح مناسبی از چسبندگی قرار داشته باشند. به عبارت دیگر؛ یک کلاس باید مجموعهای از attribute ها و function های مرتبط با یکدیگر باشد. فقدان cohesion به این معنی است که یک کلاس، شامل function های غیر مرتبط است. این موضوع باعث میشود که ساختار کلی یک سیستم نرمافزاری پیچیده شود و مدیریت کردن، گسترش دادن، نگهداری کردن و ایجاد تغییر در آن به مراتب دشوار بگردد.
اصل باز و بسته بودند و یا open-closed principle
بر اساس این اصل، یک سیستم باید برای پیادهسازی نیازمندی های جدید باز باشد و برای تغییر ایجاد کردن در پیاده سازی های از قبل موجود بسته باشد. به عبارت دیگر باید به سادگی بتوان در یک سیستم کدهای جدید را ایجاد کرد و تغییر کدهای از قبل نوشته شده دشوار باشد. این اصل، یکی از اصول پنج گانه SOLID است.
منبع:وبسایت پرووید