دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۸
  • دی

جلسه ۰۷-۰۲ : طراحی شی گرا در مهندسی نرم افزار

  • دسته‌بندی‌ها :
جلسه ۰۷-۰۲ : طراحی شی گرا در مهندسی نرم افزار
    • جزئیات
    • نوع محتواآموزشی

      مقدمه

      عرض سلام خدمت همراهان گرامی وب سایت آموزشی پی وی لرن. با موضوع آموزش مهندسی نرم افزار (Software Engineering) در خدمتتون خواهیم بود. استراتژی های طراحی نرم افزار رو در جلسه ی قبل آغاز نمودیم و طراحی ساختار یافته (Structured Design) و طراحی تابع گرا رو مورد بررسی قرار دادیم. در این قسمت طراحی شی گرا رو به همراه رویکردهای طراحی نرم افزار مورد بررسی قرار خواهیم داد.

      استراتژی های طراحی نرم افزار

      در ابتدا طراحی شی گرا رو خواهیم داشت.

      طراحی شی گرا

      طراحی شی گرا به جای توابع درگیر در سیستم نرم افزاری ، حول موجودیت و خصوصیات آن ها کار می کند. این استراتژی های طراحی بر روی موجودیت ها و ویژگی های آن

      تمرکز دارد. کل مفهوم راه حل نرم افزاری، حول موجودیت می چرخد.

      بگذارید مفاهیم مهم طراحی شیء گرا را مشاهده کنیم:

      اشیاء (Objects) – تمام موجودیت درگیر در طراحی راه حل به عنوان اشیاء یا آبجکت شناخته می شوند. به عنوان مثال ، شخص ، بانک ها ، شرکت و مشتریان به عنوان

      اشیاء رفتار می شوند.

      هر موجودیت برخی از خصوصیات مرتبط با آن را دارد و روش هایی برای انجام این صفات را دارا است.

      کلاس ها (Classes) – کلاس توضیحات کلی از یک شیء است. یک شیء نمونه ای از یک کلاس است. کلاس، تمام خصوصیاتی را که یک شیء می تواند داشته باشد و

      روش هایی را تعریف می کند ، که عملکرد شی را تعریف می کند.

      در طراحی راه حل ، اتربیوت ها به عنوان متغیرها ذخیره می شوند و ویژگی ها (functionalities) با استفاده از روند ها یا متد ها تعریف می شوند.

      کپسوله سازی (Encapsulation) – در OOD ،  اتریبیوت ها (متغیرهای داده) و متدها (عملکرد روی داده ها) به همراه یکدیگر هندل می شوند که کپسوله ساری نامیده

      می شود.

      کپسوله سازی نه تنها اطلاعات مهم یک شیء را با هم هندل می کند ، بلکه دسترسی داده ها و متد ها را از دنیای خارج نیز محدود می کند. به این اطلاعات مخفی

      (information hiding) گفته می شود.

      Inheritance یا وراثت – OOD به کلاس های مشابه اجازه می دهد تا به صورت سلسله مراتبی جمع شوند که طبقه های پایین یا زیر کلاس ها بتوانند، اجرا و استفاده ی

      مجدد از متغیرها و متد های مجاز را از سوپر کلاس هایشان ایمپورت کنند.

      این خاصیت OOD به عنوان وراث یا Inheritance شناخته شده است.

      این امر تعریف کلاس خاص و ایجاد کلاس های عمومی از کلاس های خاص را آسان تر می کند.

      چند ریختی (Polymorphism) – زبان های OOD مکانیسمی را ارائه می دهند که در آن متد ها می توانند وظایف مشابهی را انجام دهند اما در آرگومان ها متفاوت باشند ،

      که به همین نام اختصاص می یابد. این روش Polymorphism نامیده می شود ، که اجازه می دهد تا یک رابط کاربری واحد وظایف را برای انواع مختلف انجام دهد. بسته به

      نحوه استناد تابع ، همان قسمت از کد اجرا می شود.

      روند طراحی

      فرایند طراحی نرم افزار را می توان به صورت مجموعه ای از مراحل تعریف کرد.

      گر چه بسته به نوع طراحی (عملکرد یا تابع گرا یا شی گرا) متفاوت است ، اما ممکن است

      مراحل زیر را در بر داشته باشد:

      • طراحی راه حل از نیاز یا سیستم استفاده شده ی قبلی و یا نمودار توالی سیستم ایجاد می شود.
      • اشیاء به واسطه شباهت در خصوصیات ویژگی های شان، به کلاس ها گروه بندی می شوند.
      • سلسله مراتب طبقاتی و رابطه میان آن ها تعریف شده است.
      • چارچوب برنامه تعریف شده است.

      رویکردهای طراحی نرم افزار رو در ادامه خواهیم داشت.

      رویکردهای طراحی نرم افزار

      در این جا دو رویکرد کلی برای طراحی نرم افزار وجود دارد:

      طراحی بالا به پایین (Top Down Design)

      ما می دانیم که یک سیستم از بیش از یک زیر سیستم تشکیل شده است و دارای تعدادی از کامپوننت ها است. علاوه بر این ، این زیر سیستم ها و کامپوننت ها ممکن

      است مجموعه های زیر سیستم و اجزای خود را داشته باشند و ساختار سلسله مراتبی را در سیستم ایجاد کنند.

      طراحی Top Down کل سیستم نرم افزاری را به عنوان یک موجودیت در نظر می گیرد و سپس آن را برای دستیابی به بیش از یک سیستم فرعی یا مؤلفه ای بر اساس برخی خصوصیات تجزیه می کند. سپس هر زیر سیستم یا کامپوننت به عنوان یک سیستم رفتار می کند و بیش تر تجزیه می شود. این روند تا رسیدن به پایین ترین سطح سیستم

      در سلسله مراتب از بالا به پایین ادامه دارد.

      طراحی از بالا به پایین با یک مدل کلی از سیستم آغاز می شود و در ادامه قسمت خاصی از آن را تعریف می کند. وقتی همه اجزا تشکیل می شوند ، کل سیستم بوجود می آید.

      طراحی از بالا به پایین وقتی مناسب باشد که راه حل نرم افزار از ابتدا طراحی شود و جزئیات خاص ناشناخته باشد.

      طراحی پایین به بالا (Bottom-up Design)

      مدل طراحی از پایین به بالا (Bottom up Design) با خاص ترین و اساسی ترین کامپو ننت ها شروع می شود. این امر با ایجاد کامپوننت های سطح بالاتر با استفاده از کامپوننت های پایه یا سطح پایین پیش می رود. این ایجاد کامپوننت های سطح بالاتر را ادامه می دهد تا سیستم مورد نظر به صورت یک کامپوننت واحد استنتاج نشود. با هر سطح بالاتر ، میزان انتزاع افزایش می یابد.

      در صورت نیاز به ایجاد سیستم از بعضی از سیستم های موجود ، که از ابتدایی های پایه در سیستم جدید استفاده می شود ، استراتژی پایین به بالا مناسب تر است.

      هر دو روش بالا به پایین و پایین به بالا به صورت جداگانه عملی نیستند. در عوض ، ترکیب خوبی از هر دو استفاده می شود.

      با رویکردهای طراحی نرم افزار نیز آشنا شدیم.

      کلام پایانی

      دوستان گرامی متشکر از این که با مبحث آموزش مهندسی نرم افزار همراه هستید.

      با طراحی شی گرا و رویکردهای طراحی نرم افزار در این بخش از آموزش مهندسی نرم افزار آشنا شدیم.

      در بخش بعدی با مبحث طراحی رابط کاربری نرم افزار همراه خواهیم بود.

      با ادامه ی مباحث آموزش مهندسی نرم افزار با وب سایت آموزشی پی وی لرن همراه باشید.

      QR:  جلسه ۰۷-۰۲ : طراحی شی گرا در مهندسی نرم افزار
      به اشتراک بگذارید