PDA

View Full Version : راهنمایی برای وراثت و سربار گذاری



soonami
یک شنبه 29 خرداد 1390, 10:34 صبح
خدمت دوستان یک سوال در باره سر بار گذاری و وراثت هست که من میدونم باید چی کار کنم ولی نمی توانم انجام بدم البته قسمتی هایی از برنامه رو می توانم بنویسم
________________

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


_________

برنامه ای بنویسید که شامل کلاس های زیر باشد

کلاس کالا : نام کالا و قیمت
کلاس اقلام فاکتور : فیلد ها و کلاس کالا و تعدد درخواست

کلاس فاکتور : فیلد ها : آرایه ای از اقلام کالا
توابع : محاسبه فاکتور
نمایش اطلاعات فاکتور

_____________________________

کلا سوال مطرح شده یکم گیج کننده است

______________________________________


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class kala
{
public string naa;
public int gheymat;
public int kg()
{
return gheymat;
}
public string kn()
{
return naa;
}
}
class aghlam
{
public int dar;
public int ad()
{
return dar;
}
}




class factor
{
static void Main()
{
kala t1 = new kala();
kala t2 = new kala();
aghlam t3 = new aghlam();
t1.naa = (Console.ReadLine());
t2.gheymat = Int32.Parse(Console.ReadLine());
t3.dar = Int32.Parse(Console.ReadLine());
Console.Write( t1.kn().ToString() + "\n");
Console.Write( t2.kg().ToString() + "\n");
Console.Write(t3.ad().ToString() + "\n");
}
}
}

Farshid007
یک شنبه 29 خرداد 1390, 14:58 عصر
من نفهمیدم تو سوال داری یا در خواست برنامه ؟
در ضمن چرا کد هاتو تو بلاک #C نمیزاری {گذاشتیشون تو HTML}

soonami
یک شنبه 29 خرداد 1390, 15:01 عصر
راهمایی + کد <<< یعنی همراه با کد توضیحی در صورت ممکن داده شود

تا جایی که می تونستم نوشتم می دونم کلاس ورا ثت چطوری هست ولی نمی تونم استفاده کنم کلا

از این به تو تگ میزارم

exlord
یک شنبه 29 خرداد 1390, 16:58 عصر
خوب این سوالتون حالا چه ربطی به وراثت یا سربار گزاری داره ؟
public class Kala
{
public string Name { get; set; }
public int Geymat { get; set; }
}

public class FactorItem
{
public int Tedad { get; set; }
public Kala kala { get; set; }
public int GeymateKol { get { return this.kala.Geymat * this.Tedad; } }
}

public class Factor
{
public List<FactorItem> Items { get; set; }
}

soonami
یک شنبه 29 خرداد 1390, 20:11 عصر
ربطش این هست که از داخل یک کلس یک کلاس دیگه صدا زده میشه بدین صور ت

CLASS A {
....................
}

CLASS B:a{
................
}

BEXTENDS A

______________

خوب این کد شما اصلا چی هست ؟

exlord
یک شنبه 29 خرداد 1390, 21:01 عصر
ربطش این هست که از داخل یک کلس یک کلاس دیگه صدا زده میشه بدین صور ت
اولا تعریف شما از وراثت کاملا اشتباهه :قهقهه:.... یک کلاس کلاس دیگه رو inherit میکنه ... من نپرسیدم وراثت چیه میپرسم این سوال شما چه ربطی به وراثت داره .... که ظاهرا خودتون هم نمیدونین ...:گیج:

خوب این کد شما اصلا چی هست ؟
جواب سوالیه که توی تاپیکتون مطرح کردین ....

soonami
یک شنبه 29 خرداد 1390, 22:23 عصر
دوست عزیز من الان کیج شدم متاسفانه

الان به همین که گفتید in herit میشه انجام داد سوال رو ؟؟؟؟

اگر لطف کنید اینطوری انجام بدید عالی میشه یعنی بهم یاد بدین

Kubuntu
یک شنبه 29 خرداد 1390, 23:05 عصر
نگاه کن عزیزم این همه گیج شدن نداره.
وقتی که ما یک کلاس رو به یک کلاس دیگه وراثت یا inherit می کنیم. کلاس مشتق شده از کلاس پایه دارای تمامی خصوصیات و متدهای public کلاس پایه است. الان تو سوال خودتون یک فاکتور یکسری اقلام داره که اون اقلام مشمول کالا هم میشه. متوجه شدید؟ یعنی تو دل فاکتور ---> اقلام و در دل اقلام ----> کالا وجود داره. اوکی؟

حالا سربارگذاری یا override کردن چیه؟؟ فرض کنید توی کلاس پایه یه متد داری، توی کلاس مشتق شده یه متد به همون نام دارید که کدش فرق میکنه. می خواهید زمان استفاده از کلاس مشتق شده متد خودش اجرا بشه نه پایه، از سربارگذاری استفاده می کنید.

امیدوارم متوجه مفهوم شده باشید.

soonami
یک شنبه 29 خرداد 1390, 23:51 عصر
خوب برای اینکه توی دل اون کلاس یخ کلاس دیگه هست باید چی کار کنم الان من کلاس فاکتور که شنامل نمایش اطلاعات + مبلغ و ... هست رو نوشتم صحیح حالا نمی دونم چطوری کد بنویسم توی دل یه کلاس یه کلاس دیگه رو که کار کنه

hjran abdpor
دوشنبه 30 خرداد 1390, 00:13 صبح
با سلام. دوست عزيز شما بايد توابعي كه نياز دارين براي اين كار را بايد تعريف و بر حسب نياز سربازكزاري كنيد

saman6384
دوشنبه 30 خرداد 1390, 00:22 صبح
کد نویسیش فرق نداره!!
کلا وقتی شما تو form1 داری کد مینویسی هم داری تو دل کلاس فرم از کلاس هات استفاده میکنی!!

tooraj_azizi_1035
دوشنبه 30 خرداد 1390, 10:13 صبح
سلام،
کلاسی به نام Shape را تصور کنید. تمام خصوصیات و رفتار هایی را که میان تمام اشکال اعم از سه بعدی یا دو بعدی مشترک است را در این کلاس تعریف می کنیم. مثلاً محیط خاصیتی مشترک برای تمام اشکال است. حالا کلاسی به نام اشکال دو بعدی را تصور کنیم. اگر بگوئیم خود شکل دو بعدی قبل از اینکه دو بعدی باشد شکل است در واقع آن را جزو کلاس اشکال هم دانسته ایم. پس اشکال دو بعدی از کلاس شکل ارث بری می کنند. اگر بخواهیم سلسله وراثت را کمی بیشتر بسط دهیم می توانیم کلاسی به نام مستطیل را هم تعریف کنیم که از کلاس اشکال دو بعدی به ارث رفته است.
تا اینجا مفهوم وراثت و اینکه چه زمانی معنا پیدا می کند مشخص شد. اما در مورد سربار گذاری می توانیم برای متد سازنده فاکتور سربار بگذاریم و در قسمت پارامترهای ارسالی تاریخ صدور را به روز خاصی صادر کنیم (متد دوم) و اگر معین نشد به روز صادر کنیم. (متد اول):قلب:

کالا یک کلاس است که دارای خصیصه هایی مانند وزن، قیمت، نام و... است.
فاکتور یک کلاس است که یک Container از اسامی کالاهایی است می تواند جمع مبلغ آنها را محاسبه کند. نمی توان توارثی میان کالا و فاکتور متصور شد چون کالا متعلق به دسته فاکتورها نیست و همچنین بالعکس. هر دو باید مجزا تعریف شوند.