PDA

View Full Version : سوال: متد سازنده کلاس



Ehsan Programmer
دوشنبه 30 فروردین 1389, 10:32 صبح
سلام
کار متد سازنده کلاس چیه
و اینکه هر کلاس میتونه چندین Constructor داشته باشه چه استفاده ای داره
لطفا بصورت واضح و برای یک میتدی توضیح بدین
ممنون

amir-yeketaz
دوشنبه 30 فروردین 1389, 10:50 صبح
اگه قبلا برنامه نویسی کرده باشین میدونین که میشه متغیر ها رو مقداردهی اولیه کرد
در زبان های شی گرا مثه سی شارپ و جاوا چون همه چیز بر پایه شی گرایی و کلاس هست شما وقتی یک کلاس می سازید میتونید با استفاده از سازنده ها متغیر ها رو مقدار دهی کنید
البته فقط برایه اینکار سازنده ها ساخته نشدن و فقط این یه مثال در حد مبتدیانه هستش برایه فهم مطلب...
ولی کلا وقتی شما یکی شی از کلاس مورد نظرتون می سازین(new می کنید!) کامپایلر میره سراغ سازنده ی شما که اگه نباشه سازنده ی پیش فرض فراخونی میشه که بدون پارامتره و مثلا به int ها صفر میده یا به متغیر های بولین false مقدار میده
ولی شما میتونید از سازنده استفاده کرده و اونطوری که دلتون می خواد متغیر هاتون رو مقدار دهی کنید و از همون اول برای شی ساخته شدتون بفرستید
این که میگین هر کلاس میتونه چند تا سازنده داشته باشه اون بحثه overload کردن سازنده هاست که اگه بدونین overload چیه میتونید چندین سازنده داشته باشین...
اگه بازم مشکل دارین یه نمونه ساده (چون منم مثه شما مبتدی ام)بیارین تا بیشتر براتون توضیح بدیم
پیشنهاد میکنم یه سر به این لینکی که در زیر دادم بزنید

سازنده ها در سي شارپ (http://www.csharptuning.blogfa.com/post-14.aspx)

موفق باشید

Ehsan Programmer
دوشنبه 30 فروردین 1389, 11:43 صبح
یک فیلد رو میشه همون موقع تعریف مقداردهی کرد و یا بویسله خاصیت در حالت private مقداردهی کرد
تفاوت این روش ها با هم چیه

Saeed.Masoumi
دوشنبه 30 فروردین 1389, 13:56 عصر
سلام
با استفاده از روش شما این رو چطوری می خواین انجام بدین؟


public class YourInfo
{
private string FName,LName;
private int Byear;
public YourInfo(string YourName,string YourLast,int BirthYear)
{
this.FName=YourName;
this.LName=YourLast;
this.Byear=BirthYear;
}
public int Age()
{
//Just an Example
return System.TimeDate.Now.Year-this.Byear;
}
public string FullName
{
get
{return this.FName + " " + this.LName;}
}
}

vcldeveloper
دوشنبه 30 فروردین 1389, 16:43 عصر
کار متد سازنده کلاس چیهتخصیص حافظه مورد نیاز برای شی ایی که در حال ساخته شدن هست، مقداردهی اولیه فیلدهای شی، و آماده کردن شی برای استفاده شدن توسط برنامه نویس.


اینکه هر کلاس میتونه چندین Constructor داشته باشه چه استفاده ای دارهیعنی می تونید یک شی ساخته شده از آن کلاس را به شیوه های مختلفی مقداردهی اولیه کنید.

amir-yeketaz
دوشنبه 30 فروردین 1389, 16:53 عصر
یک فیلد رو میشه همون موقع تعریف مقداردهی کرد و یا بویسله خاصیت در حالت private مقداردهی کرد
تفاوت این روش ها با هم چیه
اینی که شما میگین شاید به درد کارایه خیلی ساده میخوره و کاری که فقط نیاز به یک یا دو شی از یک کلاس باشه
مثال سادشو
شما فرض کنید که میخواین یک کلاس به نام ماشین(car) بسازین و تو این کلاس از یک فیلد به نام رنگ(color) استفاده کنین که مثلا 3 تا ماشین (شی) بسازین که یکیش سفید و یکیش قرمز و یکیش سیاه باشه آیا اینجام فکر میکنید میتونید از روشی که گفتین استفاده کنید؟!
مثلا این سازنده برایه کلاس car هست::

class Car
{
private string Color;
public Car(string ColorSelected)
{
Color = ColorSelected;

}
}
حالا میخواین ازش سه تا ماشین(شی) مورد نظر رو بسازین
پس این کارو میکنین

class Program
{
static void Main(string[] args)
{
Car car1 = new Car("Red");
Car car2 = new Car("Yellow");
Car car3 = new Car("Black"):
}
}
حالا به نظر شما روشی که شما گفتی به درد این کار میخوره یا روشی که برنامه نویسی شی گرا میگه؟؟:متفکر:
حالا تازه این خیلی ساده بود و مثلا میشد چند تا ماشین دیگه با فیلدها وخصوصیات بسیار بیشتری درست کردو....
حالا شما فکر کنید که بخواین یه برنامه ی بزرگ بسازین اونوقت کدوم روش بهتره؟؟
امیدوارم که همیشه مطالب رو به صورت مفهومی متوجه بشین و اینارو که من مبتدی گفته بودم رو متوجه شده باشین...
از دوستانی که فکر میکنن من در توضیح این موضوع اشتباهی کردم هر چه زودتر به اطلاع برسانند...ممنون از همه

موفق باشید