آموزش Composition در جاوا
یک متغیر در درون یک کلاس جاوا، می تواند ساده باشد(مانند int و double) یا اینکه می تواند از نوع کلاس(class) باشد. Composition یا ترکیب کلاس ها، ارتباط بین کلاس ها را نشان می دهد، وقتی که یک شیء از یک کلاس، بعنوان یک پروپرتی در یک کلاس دیگر استفاده شود.
وقتی که می خواهیم از یک شیء، بعنوان یک پروپرتی در یک شیء دیگر استفاده کنیم، باید به یاد داشته باشیم که اگر شیء اضافه شده constructor پیش فرض ندارد، مقادیر مورد نیاز را به آن بدهیم.
نکته: شما قبلا با کلاس های زیادی آشنا شده اید که حاوی متغیرهایی ازنوع شیء String بوده اند. این کلاس ها از مفهوم composition استفاده می کنند.
بعنوان مثال، فرض کنید یک کلاس به نام NameAndAddress داریم که نام و آدرس ها را ذخیره می کند. این کلاس را می توانیم برای افراد مختلفی از قبیل کارمندان یا مشتریان یا دیگر موارد به کار ببریم. تصویر 4.35 یک کلاس به نام NameAndAddress را نشان می دهد:
همان طور که در تصویر بالا مشاهده می کنید، این کلاس حاوی سه پروپرتی است، که هرکدام از آنها توسط constructor مقدار دهی می شوند. در این کلاس، یک متد نیز به نام ()display وجود دارد که نام و آدرس را در سه خط مجزا نمایش می دهد.
فرض کنید که می خواهیم یک کلاس به نام School ایجاد کنیم که حاوی اطلاعاتی در مورد یک مدرسه باشد. به جای اینکه برای کلاس School از نو پروپرتی های name و address تعریف کنیم، می توانیم از کلاس NameAndAddress استفاده کنیم. تصویر 4.36 یک کلاس به نام School را نشان می دهد که در آن، پروپرتی خط آبی رنگ، یک شیء از کلاس NameAndAddress می باشد:
نکته: اگر کلاس NameAndAddress حاوی یک constructor پیش فرض یا default بود، باید از عبارت زیر در داخل constructor کلاس School استفاده می کردیم:
nameAdd = new NameAndAddress();
همان طور که در تصویر 4.36 مشاهده می کنید، constructor یا همان سازنده ی کلاس School به چهار مقدار(یا داده) احتیاج دارد. در داخل این constructor سه مقدارِ نام و آدرس و کدپستی(یعنی name و add و zip) به سازنده یا همان constructor کلاس NameAndAddress پاس داده شده اند. این کار را برای این انجام دادیم که مقادیر مناسب را به پروپرتی های این کلاس انتساب داده باشیم. سازنده ی چهارم نیز(یعنی enrolled) یک پارامتر استاندارد ساده است که به پروپرتی enrollment از کلاس School انتساب داده می شود.
در داخل متد display از کلاس School، آن متد()display از شیء NameAndAddress مورد فراخوانی قرار گرفته است تا نام و آدرس مدرسه را برای ما چاپ کند. مقدار پروپرتی enrollment نیز پس از آن چاپ می شود. عکس 4.37 یک برنامه ی کوچک و ساده را نشان می دهد که از کلاس School یک شیء را نمونه گیری می کند. تصویر 4.38 نیز اجرای برنامه را نشان می دهد.
- نوشته شده توسط احسان عباسی
- بازدید: 7235