PDA

View Full Version : لزوم تعریف یک کلاس در کلاس دیگر



alireza_tavakol
دوشنبه 09 مهر 1386, 01:09 صبح
دوستان من خیلی پرو هستم هی سوال میپرسم
چون عنوان تاپیک خوبه سوال جدید مو هم اینجا می پرسم
آقایون من بلدم یک کلاس رو داخل یک کلاس دیگه تعریف کنم ولی نمیدونم این عمل منطقا کی و کجا کربرد دارد
مثل کسی که یه ضرب المثال را بلد باشه اما ندونه کجا ازش استفاده کنه
شرمندم سوالم یه کم عجیب اما خب سوال دیگه !!!!
امید وارم منظورمو رسونده باشم

choobin84
دوشنبه 09 مهر 1386, 04:29 صبح
منطقا جایی که به تابع یا متغیری از اون کلاس احتیاج داشته باشید.
شاید منظورتون این باشه که نمونه ای که از کلاس می سازید به صورت سراسری یا محلی تعریف بشه.
من فکر می کنم که نمونه کلاس رو جایی بسازید که لازمش دارید. در کلیک یک دکمه یا ....

PC2st
دوشنبه 09 مهر 1386, 05:28 صبح
معمولا در صورتی کلاس B رو در کلاس A تعریف میکنند که:

1. اگر کلاس B یک رابطه بسیار نزدیکی با کلاس A داشته باشه و کلاس B برای کمک به کلاس A بکار میرود، کلاس B خارج از کلاس A استفاده زیادی نداشته باشد. بعبارتی کلاس A دارای کلاس B است.


class Machine
{
public class Engine
{
...
}
}


2. اگر بخواهیم که کلاس B، تنها توسط کلاس A قابل دسترسی باشد، در اینصورت کلاس B یک نوع داده private در کلاس A خواهد بود که فقط کلاس A از آن استفاده میکند و کلاس B برای استفاده توسط دیگر کلاسها آماده نشده یا نمیخواهیم آماده شود.


class A
{
class B
{
...
}

private B bbb; //and use it only in class A
}


3. اگر بخواهیم به اعضای private و protected از کلاس A توسط کلاس دیگری (مثلا کلاس B) دسترسی داشته باشیم. (هر چند که هدف اصلی استفاده از کلاسهای تو در تو نیست).


class A
{
private int sss;

class B
{
public B(A value)
{
value.sss = 10;
}
}
}


فقط یک نکته اینکه: به موقع باید یک کلاس رو بصورت تو در تو تعریف کرد و استفاده زیاد و استفاده بی مورد از آن مناسب نیست. یک روش برای تشخیص استفاده از کلاس Nested، تصور کردن مدلی واقعی از شیئ در ذهن است.