معماری شی گرا

برای اکثر برنامه نویسان معماری شی گرا اولین معماری است که با آن آشنا می شوند و مطابق آن برنامه نویسی پروژه های خود را انجام می دهند. در این متن قصد داریم تنها معرفی کوتاهی درباره این معماری ارائه دهیم.
در این نوع معماری عملکردهای یک نرم افزار بین اشیای منفرد و قابل استفاده مجدد تقسیم می گردد. هر یک از این اشیا داده ها و خصوصیات مرتبط به خود را دارا هستند. در این نوع معماری کل نرم افزار به صورت مجموعه ای از اشیا که با یکدیگر همکاری دارند درنظر گرفته می شود. اشیا در این معماری مجزا، مستقل و دارای کمترین وابستگی به یکدیگر هستند. ارتباط بین اشیا از طریق فراخوانی توابع ، دسترسی به خصوصیات و یا ارسال و دریافت پیام صورت می گیرد. قواعد اصلی در این معماری عبارتند از:
انتزاع: این قاعده بیان می کند که شما خصوصیات و ویژگی هایی که بین چندین شی مشترک هستند استخراج و از پیش تعریف نمایید.
ترکیب: اشیا می توانند از ترکیب اشیای دیگر ایجاد شوند. شی به وجود آمده می تواند اشیای سازنده خود را پنهان نماید و یا امکان دسترسی به آنها را از طریق یک رابط امکان پذیر نماید.
ارث بری: اشیا می توانند از خصوصیات و توابع اشیا دیگر ارث بری نمایند. همچنین می توانند توابع و خصوصیات اشیا پایه خود را بازنویسی نمایند. ارث بری می تواند نگهداری و ارتقا اشیا را ساده تر نماید. به عنوان مثال تغییر در یک شی پایه باعث ایجاد تغییر در اشیایی که از آن ارث برده اند می شود.
محصورسازی: اشیا عملکردهای خود را تنها از طریق توابع، خصوصیات و رویدادها به نمایش می گذارند و متغیرها و وضعیت های درونی خود را از دسترس دیگر اشیا پنهان می نمایند. این ویژگی باعث می گردد بروزرسانی و تغییر اشیا ساده تر صورت گیرد. البته این بروزرسانی و تغییر نباید تغییری در نحوه ارتباط اشیا ایجاد نماید.
چندریختی: این ویژگی به شما اجازه می دهد رفتار یک شی پایه را با توجه به نیاز نرم افزار بازنویسی نمایید.
عدم وابستگی: اشیا با تعریف یک قانون برای نحوه ارتباط می توانند کمترین وابستگی را به یکدیگر داشته باشند. این ویژگی باعث می گردد شما بتوانید پیاده سازی یک شی را تغییر دهید بدون اینکه بر دیگر اشیا تاثیر قابل توجهی داشته باشد.
از این نوع معماری معمولا برای تعریف مدلسازی های پیچیده برای مسائل علمی و یا داده های مالی و همچنین تعریف موجودیت های دنیای واقعی در یک کسب و کار استفاده می کنند.
مزایای اصلی این معماری عبارتند از:
قابل فهم بودن: تعریف اشیا بر اساس موجودیت های دنیای واقعی، درک این معماری را ساده تر می کند.
استفاده مجدد: انتزاع و چندریختی به اشیای این معماری قابلیت استفاده مجدد را می دهد.
آزمایش: ویژگی های اشیا در این نوع معماری به آنها امکان مورد آزمایش قرار گرفتن را می دهد.
گسترش: محصور سازی، چندریختی و انتزاع باعث می گردد که تغییر در نمایش داده ها تاثیری بر نحوه ارتباط اشیا با یکدیگر نداشته باشد.
انسجام بالا: قرار دادن توابع و داده های مرتبط در یک شی و استفاده از اشیای متفاوت برای کارهای متفاوت، انسجام بالایی را در نرم افزار ایجاد می نماید.
موارد استفاده از این معماری:
• اگر قصد دارید نرم افزار خود را بر اساس اشیا و عملکردهای دنیای واقعی بسازید.
• اگر کلاس ها و اشیایی در اختیار دارید که با نیازهای شما منطبق هستند.
• اگر شما نیاز دارید که منطق و داده ها را در مولفه هایی با قابلیت استفاده مجدد ترکیب نمایید.
• اگر شما قوانین تجاری پیچیده ای دارید که نیاز به مدلسازی دارند.
منابع:
Microsoft, Application Architecture Guide v2
Raul Sidnei Wazlawick, Object Oriented Analysis and Design for Information System, 2013

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *