PDA

View Full Version : سوال در مورد متد های set و get در جاوا



sina4everafter
پنج شنبه 05 دی 1392, 12:33 عصر
سلام.دوستان.میشه من و در مورد متد های set و get در زبان جاوا راهنمایی کنید.اینکه وظیفشون چیه؟
من کتاب دایتل و خریدم.ولی یه جاهایشو یه کم گنگ توضیح داده.مثلا همین بخش و اصلا نفهمیدم.اگه راهنماییم کنید ممنون میشم.

a.seieddokht
پنج شنبه 05 دی 1392, 17:27 عصر
سلام دوست عزیز شما اگه با مفاهیم شی گرایی اشنایی اشته باشی خیلی راحت متوجه ستر و گتر ها

مثال :



public class Circle
{
public double radius;

public double area()
{
return 3.14 * radius * radius;
}

public double perimeter()
{
return 2 * 3.14 * radius;
}
}


class Main
{
public static void main(String[] args)
{
Circle circle = new Circle();
circle.radius = -3;

System.out.println(circle.area());
System.out.println(circle.perimeter());
}
}




ببین من تو مثال بالا واسه شعاع دایره از set , get استفاده نکردم و تونستم عدد -3 رو تو شعاع قرار بدم و این کار درست نیست یعنی شعاع عدد مثبت هستش و برای این که ورود داده هارو کنترل کنم از set , get استفاده میکنم مثال :



public class Circle
{
private double radius;

public double getRadius()
{
return radius;
}

public void setRadius(double radius)
{
if (radius >= 0)
this.radius = radius;
else
System.out.println("Error");
}

public double area()
{
return 3.14 * radius * radius;
}

public double perimeter()
{
return 2 * 3.14 * radius;
}
}




موفق باشید:لبخندساده:

M.nikdehghan
چهارشنبه 09 بهمن 1392, 15:57 عصر
سلام،
a.seieddokht: مرسی بابت توضیحتون، دوتا سوال داشتم: ۱. از این دوتا دستور فقط برای اینکه ورود داده هارو کنترل کنیم استفاده میشه یاکاربرد دیگه ای هم دارن؟ ۲. این دوتا همیشه باید با هم باشن یا جداگانه هم میشه ازشون استفاده کرد؟

a.seieddokht
چهارشنبه 09 بهمن 1392, 16:18 عصر
سلام،
a.seieddokht: مرسی بابت توضیحتون، دوتا سوال داشتم: ۱. از این دوتا دستور فقط برای اینکه ورود داده هارو کنترل کنیم استفاده میشه یاکاربرد دیگه ای هم دارن؟ ۲. این دوتا همیشه باید با هم باشن یا جداگانه هم میشه ازشون استفاده کرد؟


با سلام

جواب سوال 1 : یکی از وظایف اولیه هر شی حفظ جامعیت خود است یعنی این که اطمینان حاصل کند که تمام فیلدهایش دارای مقادیری معتبری هستند. هر شی می تواند در مقابل درخواستی که جامعیت ان را نقض کند مقاومت کند بخش مهمی از این وظیفه را می توان بوسیله متدهای Setter , Getter انجام داد و این که اگر اول هر متد کلمه Set یا get می زاریم بخاطر استاندارد بودن است و میتوان این کار رو نکرد و بجای ستر و گتر برای مقداردهی به شعاع دایره از متد Put استفاده کرد کرد. در واقع ما از این متد ها برای مقداردهی فیلد های کلاس استفاده میکنیم و میتوانند هر نامی داشته باشند و این متدها یک رابط هستند که ما از بیرون شی به فیلدهای کلاس (private) به واسطه این رابط ها دسترسی داریم (مقداردهی فیلدها و دریافت مقدار فیلدها)

جواب سوال 2 : نخیر اصلا این طور نیست و این متدها اصلا می توانند وجود نداشته باشند یا فقط 1 کیشون وجود داشته باشه یا هر دو این بستگی به کلاسی که دارید طراحی میکنید داره و بیشتر مواقع هر دو متد در کلاس هستند

ببخشید اگه بد توضیح دادم اخه تایپ کردن سخته یکم...:لبخند:

موفق باشید:لبخندساده:

parisa_no
یک شنبه 13 بهمن 1392, 09:02 صبح
سلام
من برای کار خودم(cloudsim) نیاز به یک کلاس گراف جهتدار بدرن دور دارم. (نودها وظایف و یالها محدودیت اجرا)نمیدونم باید چطور کدشو بنویسم.
به نظر شما باید از یه ماتریس دوبعدی استفاده کنم؟ اگر اینطوره چطور مطمئن شم که گراف من بدون دوره؟
ایا باید از روش دیگه ای استفاده کنم؟
لطفا اگه برنامه ای دارید که میتونه تو این زمینه کمکم کنه ممنون میشم در اختیارم قرار بدید.

با تشکر:لبخندساده:

a.seieddokht
یک شنبه 13 بهمن 1392, 14:36 عصر
با سلام من فکر میکنم سوال شما بیشتر الگوریتیمی و دیتا استراکچری هست که بهتره برید تو قسمت ساختار داده و الگوریتم مطرح کنید یا سرچ کنید تا دوستان و اساتید با تجربه کمکتون کنند و جواب های درست و بهتری بدهند موفق باشید:لبخندساده:

vahid-p
یک شنبه 20 بهمن 1392, 14:08 عصر
فکر نمیکنم اینجوری به جوابتون برسید. شما یک کدی حدود 100 خط گذاشتید و هیچ توضیحی هم ندادید هدفتون از قرار دادن این کد چی بوده و چه لزومی داره که کد رو گذاشتین.

درست سوال پرسیدن، لازمه رسیدن به جواب درست هست. شما اول تاپیک رو در مورد set , get ایجاد کردین، حالا ما این کد رو چطوری باید با موضوع تاپیک ارتباط بدیم؟ سعی کنید در یک تاپیک یک مبحث رو بپرسید و چیزهایی که لازمه رو بپرسید و سوالتون هم واضح باشه. همیشه قرار دادن کل کدها، بدتر انگیزه جواب دادن رو از بقیه میگیرید.

اگر شما مبتدی هستید و احتمالا تو این ترم جاوا دارین یادمیگیرید و مطمئنا این کد به این حجم و مباحث براتون سنگینه و نباید خودتون رو سردرگم کنید.