برچسب: روابط

رابطه تعمیم (Generalization)

رابطه تعمیم (Generalization):

 

شما زمانیکه در یک سوپر مارکت قدم می زنید. شما مواد غذایی را بر حسب ویژگهای آنها در قسمت های مختلف یک سوپر مارکت مشاهده می کنید. میوه ها و سبزیجات در یک قسمت فروشگاه، کوشت در قسمتی دیگر از فروشگاه و خشکبار را در قسمتی دیگر از فروشگاه پیدا می کنید. همه اینها مواد غذایی هستند، اما اینها انواع مختلفی از مواد غذایی هستند.عبارت های “تا حدی”(““Kind of)، “نوعی از” (““Type of) یک رابطه تعمیم را بین دو کلاس نشان میدهد.(برای مثال سیب نوعی از میوه است و میوه نیز نوعی از غذا است.) در بعضی مواقع  عبارت “هست یک” بیانگر رابطه تعمیم است.(برای مثال سیب قرمز یک سیب هست.)

این نوع رابطه اغلب، وراثت(inheritance) نامیده می شود.مثال سیب را در نظر بگیرید. سیب نوعی میوه است پس سیب تمام ویژگیهای یک میوه را به ارث می برد.همچنان سیب (specialization) از میوه است زیرا آن تمام ویژگیهای میوه را به ارث می برد و همچنین سیب بعضی از ویژگیها را دارد که فقط متعلق به سیب می باشد و سیب را از دیگر میوه ها متمایز می کند.پس می توان گفت که میوه یک تعمیم (generalization) از هندوانه، سیب، هلو و همه دیگر اشیاء است که در این گروه قرار دارند.

وراثت در سیستم های شی گرا همانند به ارث بردن مشخصات رفتاری و بدنی از والدینتان است. مشخصات رفتاری و بدنی، همان صفات و رفتارهای یک کلاس هستند که یک کلاس از کلاس دیگر می تواند به ارث ببرد.وراثت زیستی یک مدل سلسله مراتبی بوجود می آورد که شما را قادر می سازد با دنبال کردن این سلسله مراتب و بالا رفتن در آن اجداد خودتان را بشناسد. در سیستم های شی گرا نیز دقیقا به ابن صورت است که شما می توانید با دنبال کردن این رابطه، کلاس مولد کلاس جاری را بدست آورید. سیب قرمز یک سیب است. پس کلاس مو لد سیب قرمز ، کلاس سیب است. سیب نوعی میوه است. پس کلاس مولد سیب، کلاس میوه است. سیب یک زیر کلاس(sub class) است. میوه یک سوپر کلاس(super class)است.

 

سوپر کلاس: یک سوپر کلاس، کلاسی است که دارای ویژگیهای است که بین دو یا چند کلاس مشترک است و آنها را با آن کلاس ها به اشتراک گذاشته است. سیب یک سوپر کلاس برای سیب قرمز است. همه صفات و رفتارهای مشترک بین سیب قرمز و سیب، در کلاس سیب تعریف شده است و سیب قرمز از آن صفات و رفتارها استفاده می کند.

 

زیر کلاس : یک زیر کلاس، کلاسی است که دارای ویژگیهای است که منحصر به آن کلاس می باشد همراه با ویژگیهای که در یک سوپر کلاس تعریف شده است و آنها را از آن سوپر کلاس به ارث می برد. یک کلاس می تواند هم سوپر کلاس باشد و هم یک زیر کلاس. کلاس سیب یک سوپر کلاس برای کلاس سیب قرمز است و یک زیر کلاس برای کلاس میوه است.

 

کلاس انتزاعی(class abstract ) : کلاس انتزاعی، کلاسی است که نمی تواند نمونه ای داشته باشد. یک کلاس انتزاعی باید توسط یک کلاس به ارث برده شود تا از صفات و رفتارهای آن استفاده شود.

روابط (مفاهیم شی گرایی)

رابطه ها:

اشیاء برای اینکه کاری انجام بدهند نیاز دارند با هم کار کنند پس آنها نیاز به روشی دارند که با هم ارتباط برقرار کنند. وقتی که یک مشتری بلیط های را سفارش می دهد، مشتری باید یک سفارش ایجاد کند و بلیط مورد نظرش را به آن سفارش اضافه کند. اشیاء نرم افزاری که نماینده مشتری، سفارش، بلیط هستند نیاز دارند تا رابطه بین اشیاء دنیا واقعی را عینا تکرار کنند.

یک لینک(Link) رابطه بین دو شی است. یک رابطه(association) یک ارتباط بین دو کلاس هست.

رابطه بین کلاس ها (اشیاء) به سه شکل متفاوت تقسیم می شود:

  1. ارتباط (association)
  2. رابطه تجمع (aggregation)
  3. رابطه ترکیب (composition)

 

ارتباط (association) :

ساده ترین شکل رابطه، ارتباط می باشد. که یک رابطه نظیر به نظیر(peer-to-peer) بین دو شی می باشد. یک شی بطور ساده درباره شی دیگر می داند بهمان طریقی که یک فرد ممکن است فرد دیگری را بشناشد. یک ارتباط یه یک کلاس امکان می دهد تا درباره صفات و رفتارهای کلاس دیگر بداند.

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

برای مثال کلاس تحویل دار درباره صفات و رفتارهای کلاس حساب بانکی می داند و کلاس حساب درباره صفات و عملیات تحویل دار می داند. بنابراین این دو کلاس می توانند پیغامهایی را به یکدیگر ارسال کنند.

 

رابطه تجمع (aggregation):

رابطه تجمع، یک رابطه بین یک واحد کل و جزء است. در رابطه تجمع یک کلاس می تواند شامل نمونه های از کلاس های دیگر نیز باشد. برای مثال یک کلاس ماشین را در نظر بگیرید، که خود از چندین کلاس دیگر مانند یک کلاس موتور، چندین کلاس لاستیک و تعدادی کلاس دیگر برای سایر بخش ها تشکیل شده است.

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

برای مثال یک کلاس برای تیم پروژه در نظر بگیرید. و یک کلاس برای کارمندان شرکت در نظر بگیرید. تیم پروژه، از کارمندان شرکت تشکیل شده است. اما ممکن است یک تیم پروژه منحل شود در حالیکه کارمندان به کار خود در شرکت ادامه می دهند.

 

رابطه ترکیب (composition):

رابطه ترکیب، شبیه رابطه تجمع می باشد اما با یک تفاوت:

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

برای مثال یک پنجره در سیستم عامل ویندوز را در نظر بگیرید، یک پنجره از چندین شی تشکیل شده است بعنوان مثال دکمه Minimize، Maximize، Close ، یک منو و …. زمانیکه یک شی پنجره ایجاد می شود همزمان با آن تمام دکمه ها و منو ایجاد می شود. با بستن پنجره تمام اشیاء، پنجره، دکمه ها و منو از بین می روند. امکان ندارد بدون وجود یک شی پنجره یک شی منو ایجاد شود و به کاربر نمایش داده شود یا با بستن و از بین رفتن شی پنجره، شی منو از بین نرود.  

رابطه ترکیب همان حذف پخش شونده (cascading deletion) است. در یک رابطه ترکیب هنگامیکه رکورد اصلی حذف می شود تمام رکورد های مرتبط با رکورد اصلی حذف می شوند.

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