PDA

View Full Version : سوال در رابطه با کلاس



seied javad
دوشنبه 25 خرداد 1394, 00:00 صبح
سلام
یک برنامه نوشتم تحت عنوان car و sport car دارای عملیاتی نظیر گاز دادن و ترمز کردن ست من میخوام هر موقع دکمه گاز فشار داده میشه به سرعت ماشین معمولی 2تا اضافه بشه و به سرعت ماشین اسپورت 10 تا ولی وقتی دوبار گاز را میزنم دیگه 10 تا را اضافه نمیکنه؟


کلاس car
class car
{
protected int speed;
protected int doors;
protected string color;
protected string model;
public car()
{
}
public car (string c,string m,int d)
{
color = c;
model = m;
doors = d;
}
public int Speed
{
get
{
return speed;

}
}
public double mile
{
get
{
return speed/1.6;
}
}

public void Gaz()
{
speed = speed + 2;
}
public void Break()
{
if (speed > 2)
{
speed = speed - 2;
}
else
speed = 0;
}
}

}



کلاس sport car
class sportcar:car
{
int height;
int weight;
int power;
public sportcar (string c, string m, int d,int height,int weight,int power)
{
this.height = height;
this.weight = weight;
this.power = power;
this.model = m;
this.doors = d;
this.color = c;
this.speed = 0;
}
public void Gaz()
{
speed = speed + 10;
}
public void Break()
{
speed = speed - 4;
if (speed < 0)
speed = 0;
}
}
}



قطعه کد نوشته شده برای گاز دادن ماشین معمولی

car c = new car("Black", "Folocs", 2);
c.Gaz();
txtSpeedCar.Text = c.Speed.ToString();
label2.Text = c.mile.ToString();


نمونه کامل برنامه
Download (http://uploadboy.com/wyyemnbfywdn.html)

shadi khanum
دوشنبه 25 خرداد 1394, 09:37 صبح
دوست عزیز اون شی c که از نوع car تعریف کردی رو توی همون کد کلیک دکمه تعریف کردی؟ یعنی هربار که کلیک میکنی یه شی car با سرعت 0 ساخته میشه و سرعتش 2 تا اضافه میشه .واسه همین دفعه دوم که کلیک میکنی دیگه سرعت اضافه تر نمیشه.
شی c رو بیرون از دکمه کلیک و در سطح فرمت تعریف کن و توی دکمه فقط سرعتش رو زیاد کن
موفق باشی

RmeXXXXXXXXX
پنج شنبه 04 تیر 1394, 23:06 عصر
چند ریختی - پلی مرفیسم. دوست عزیز متد Gaz رو مجازی تعریف کنید. . وراثت تنها برای اشتراک گذاری متغیر ها نیست. متدها رو فراموش نکنید. در ضمن اگر نیازی به چند ریختی ندارید کلمه new رو حتماً در کلاس sportcar و متد gaz مدنظر قرار بدین.