PDA

View Full Version : سوال: هدف از ایجاد سازنده ها چیه؟!



calculus
چهارشنبه 21 اسفند 1387, 22:45 عصر
میشه به من کمک کنید در مورد سازنده ها؟! من جزوه استادمون و منابع اینترنتی و کتاب آموزش خوندم اما نفهمیدم هدف از ایجادش چیه و چه فاییده ای داره!

vcldeveloper
چهارشنبه 21 اسفند 1387, 22:53 عصر
سازنده یک کلاس برای مقداردهی اولیه نمونه شی ساخته شده از اون کلاس استفاده میشه؛ یعنی اختصاص حافظه لازم به نمونه شی، و مقداردهی اولیه به فیلدهای شی.

mtaboy
پنج شنبه 22 اسفند 1387, 11:50 صبح
اگه جواب آقای کشاورز رو هم نفهمیدی من با اجازشون ساده تر بگم :
به وسیله سازنده متونی ساخته شدن یک آبجکت رو کنترل کنی مثلا من یک کلاس مشتری دارم و میخوام هر وقت یک ابجکت از مشتری ساخته شد به ای دی مشتری یکی اضافه بشه تو متدسازنده مشتری می نویسم

public customer()
{
Count++;
CustomerId = Count;
}

count رو بهش مقدار 0 دادیم اولین مشتری که ایجاد بشه ادیش میشه 1 و الی آخر...
امیدوارم مفهوم بوده باشه

calculus
پنج شنبه 22 اسفند 1387, 22:22 عصر
مرسییی....فکر کنم فهمیدم چی شد...!
واقعاً ممنونم...!
ولی این که می گن زمان وجود آبجکت رو مشخص می کنه یعنی چی؟! و این

public Complex() : this(0, 0) { }

public Complex(double x) : this(x, x) { }

public Complex(Complex c) : this(c.real, c.imag) { }

public Complex(double Real, double Imag)
{
this.Real = Real;
this.Imag = Imag;
}

چی کار می کنه تو برنامه؟!

Developer Programmer
جمعه 23 اسفند 1387, 00:17 صبح
به اینی که تو نوشتی میگن پولیمورفیسم که یکی از ویژگیهای شی گراست.
از قابلیتهای شی گرایی، اینه که تو میتونی بسته به نیازت، مثلا یک متد رو به شکلهای متفاوت تعریف کنی و در کلاس های فرزند/غیر فرزند از اون تعاریف استفاده کنی.
مثلا یک تابع مینویسی که Sin یه عدد رو حساب کنه. حالا ممکنه اون عدد بر حسب درجه باشه ممکنه برحسب رادیان باشه
در این کدی که شما نوشتی، تابعی به اسم Complex تعریف شده با overload های متفاوت که ممکنه اصلا ورودی نداشته باشه یا ورودی هاش از نوع(Data Type) های متفاوت باشه و بر اساس اونها ، مقدار خروجی متفاوت میشه.
This هم به کلاس/آبجکت جاری اشاره میکنه.

vcldeveloper
جمعه 23 اسفند 1387, 00:47 صبح
به اینی که تو نوشتی میگن پولیمورفیسم که یکی از ویژگیهای شی گراست.
این با اون مفهومی که برای Polymorphism در شی گرایی مطرح میشه فرق میکنه. البته از یک جهاتی یک نوع Polymorphism محسوب میشه، ولی اون Polymorphismایی که به عنوان یک قابلیت جدید در شی گرایی مطرح شد، و قبل از آن به این شکل وجود نداشت، با Overload کردن توابع فرق داره. Overload کردن توابع یک کار بسیار متداول هست که در زبان های برنامه نویسی غیر شی گرا هم وجود داشته.

اون قابلیتی که معمولا به عنوان نماد Polymorphism در شی گرایی استفاده میشه، override کردن متدهای virtual یک کلاس هست. در اون حالت، Signature متد ثابت هست، ولی عملکرد متد در کلاس های مختلف متفاوت هست.

mtaboy
جمعه 23 اسفند 1387, 01:15 صبح
ولی این که می گن زمان وجود آبجکت رو مشخص می کنه یعنی چی؟!

یعنی وقتی آبجکت ساخته میشه اول سازنده اجرا میشه.
اگه برنامت رو با F11 اجرا کنی میفهمی چی میشه او مثال مشتری که بالا گفتم رو در نظر داشته باش...
اگه این کد رو تو برنامم بنویسم


Customer c=new Customer();

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