ورود

View Full Version : Constractor چیست؟



masoud.sh28
یک شنبه 31 شهریور 1392, 00:24 صبح
با سلام و احترام
به همه دوستان
من یک سوال دارم اگه دوستان لطف کنن جواب بدن
1-constractor چیست؟و کجا ها استفاده میشود؟
البته می دانم یک سازندس و زمان ساختن object صدا زده میشود اما نمی دانم کجا استفاده می شود؟ با تشکر

Ehsan rashydy
یک شنبه 31 شهریور 1392, 07:45 صبح
با سلام و احترام
به همه دوستان
من یک سوال دارم اگه دوستان لطف کنن جواب بدن
1-constractor چیست؟و کجا ها استفاده میشود؟
البته می دانم یک سازندس و زمان ساختن object صدا زده میشود اما نمی دانم کجا استفاده می شود؟ با تشکر

همونطور که خودتون گفتین برای ساختن آبجکت استفاده میشه، مثلا



StringBuilder str1 = new StringBuilder();

سمت راست مساوی عملا فراخوانی یه constructor به همراه اپراتور new هست که یه آبجکت StringBuilder برمیگردونه، یعنی constructor همیشه با اپراتور new استفاده میشه.

حالا شما میتونی چند تا constructor داشته باشی، که بسته نوع آرگومانهاشون(ورودی های constructor) متفاوت باشن(عملا constructorها رو overload میکنی) مثلا اینطوری:


StringBuilder str2= new StringBuilder("Ehsan");


یه مثال واضحتر بزنم:



public class Person {
private Long id;
private String firstName;
private String lastName;

public Person() {

}

public Person(Long shomare, String esm, String famil) {
id = shomare;
firstName = esm;
lastName =famil;
}


///////////getter and setter

}


الان تو این کلاس ما دو تا constructor داریم، اولی آرگومان نداره(خط6)، یعنی وقتی از این constructor برای ایجاد یه آبجکت Person استفاده میکنی، property های مربوط به این آبجکت value ندارن(یعنی فیلدای id و firstName و lastName مقدار ندارن باید توشون set کنی) اینطوری:


Person p1 = new Person();

p1.setId(123456);
p1.setFirstName("Ehsan");
p1.setLastName("rashydy");



اما دومی(خط10) 3 تا آرگومان داره، که وقتی میخوای آبجکت بسازی باید براش بفرستی و در نتیجه value برای propertyها داخل خود constructor ست میشه، اینطوری:


Person p2 = new Person(123456, "Ehsan" , "rashydy");

cups_of_java
یک شنبه 31 شهریور 1392, 15:41 عصر
کانستراکتور هدفش اینه که مفدار دهی اولیه به متغیر های کلاس رو تضمین کنه!
و یه هدف دیگش اینه که مقدار دهی به متغیر های کلاس رو ساده تر کنه و اجماع کنه تو یه متد!

azfandak-M
چهارشنبه 12 فروردین 1394, 16:12 عصر
کانستراکتور هدفش اینه که مفدار دهی اولیه به متغیر های کلاس رو تضمین کنه!
و یه هدف دیگش اینه که مقدار دهی به متغیر های کلاس رو ساده تر کنه و اجماع کنه تو یه متد!

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

میشه یه مثال بزنید که لازم باشه از constructor استفاده کنیم؟
یعنی سوال یه برنامه ای رو مطرح کنید و بگید که در فلان قسمت این برنامه به این دلایل ما باید از constructor استفاده کنیم تا بتونیم برنامه رو بنویسیم

خیلی ممنون

cups_of_java
شنبه 15 فروردین 1394, 10:20 صبح
استفاده از کانستراکتور هیچ لزومی نداره... یعنی شما مجبور نیستی ازش استفاده کنی... همون طور که مجبور نیستی از شی گرایی استفاده کنی... (البته کانستراکتور ها به شیگرایی ربطی ندارن و دو تا چیز جدا هستن.) این ها فلسفه هایی هستن که شما رو کمک میکنند بهتر کد بنویسید و کدتون مطمین تر کار کنه.

وقتی شما یه کلاس می نویسی وقتی ازش کسی میخواد استفاده کنه باید یه شی بسازه و متغیر هاشو مقدار بده... خب شما به عنوان نویسنده اون کلاس می دونی و تعریف میکنی که حداقل کدوم متغیر های کلاس باید مقدار داشته باشن تا اون شی یک شی سالم و درست باشه... (متد های کلاستون بتونن اجرا شن و درست کار کنن)

کانستراکتور برای این گذاشتن تضمین هست که شما مطمین شی در حین ساخت شی، اون متغیر هایی که در تابع کانستراکتور آرگومان میکنی حتمن به شی پاس میشن و مقدار میگیرن....