PDA

View Full Version : سوال در مورد نحوه ارث بری



hesamrkia
جمعه 01 خرداد 1394, 20:02 عصر
سلام من تازه کار با C#‎‎‎‎‎‎‎‎‎ رو شروع کردم. یه برنامه ساده شی گرا برای نمایشگاه ماشین نوشتم که سه کلاس Customer و Seller و Car تعریف کردم.

توی پروژم باید از ارث بری استفاده کنم ولی دقیق بلد نیستم. من یه کلاس به نام Person ایجاد کردم به این صورت: اول ببینید درسته یا نه :

class Person {
long ID;
string FName;
string LName;
long idNum;
string Gender;
string Tel;
string Mobile;
string Address;


protected Person(long id, string fn, string ln, long idn, string g,
string t, string m, string a)
{
ID = id;
FName = fn;
LName = ln;
idNum = idn;
Gender = g;
Tel = t;
Mobile = m;
Address = a;
}

الان چطور باید تو کلاس Seller و Customer از این ارث بری کنم؟؟؟ این طوری نوشتم برنامه کار میکنه ولی ارور داره!


class Seller:Person
{
DateTime SellDate;
string SellCar;
string ReceivedMoney;


public Seller(long id, string fn, string ln, long idn, string g,
string t,string m, string a, DateTime sd, string sc, string rm)
:base(id,fn,ln,idn,g,t,m,a)
{
SellDate = sd;
SellCar = sc;
ReceivedMoney = rm;
}



class Customer:Person
{
DateTime BuyDate;
string BuyCar;
string PaidMoney;


public Customer(long id, string fn, string ln, long idn, string g,
string t, string m, string a, DateTime bd, string bc, string pm)
:base(id,fn,ln,idn,g,t,m,a)
{
BuyDate = bd;
BuyCar = bc;
PaidMoney = pm;
}



لطفا یه بار این برنامه ببینید مشکلش کجاست؟
http://4upld.com/1ywm0

nunegandom
جمعه 01 خرداد 1394, 21:25 عصر
سلام شما دو متود داری با اسم یکسان ولی پارامتر های بیشتر یا کمتر
خوب زمانی باید از کلمه override استفاده کنی که نام و پارامتر های ارسالی به متود یکسان باشند بنابراین کل override ها ر. پاک کن مشکلت حل میشه
در ضمن لطفا یه جا درست آپلود کن مثل پرشین گیگ

hesamrkia
جمعه 01 خرداد 1394, 21:57 عصر
سلام شما دو متود داری با اسم یکسان ولی پارامتر های بیشتر یا کمتر
خوب زمانی باید از کلمه override استفاده کنی که نام و پارامتر های ارسالی به متود یکسان باشند بنابراین کل override ها ر. پاک کن مشکلت حل میشه
در ضمن لطفا یه جا درست آپلود کن مثل پرشین گیگ

ممنون اون override ها اصلا نمیدونم چی هستن همینطور نوشتم ببینم ارور رفع میشه یا نه.

الان طبق گفتتون همه override هارو حذف کردم ارور ها از بین رفتن فقط مشکلی که دارم نمیدونم از متود Find چطوری ارث بری کنم.

چندتا دستور از خودم نوشتم نمیدونم چیه تا ارور رفت. الان فقط 3 پارامتر اضافه نسبت به پارامتر های ثابت Customer و Seller موقع Find نشون داده میشن.

//// زیاد با سایتای آپلود آشنا نیستم پرشین گیگ رفتم نفهمیدم چی به چیه لینک رو به ایمیل فرستاد گفتم شاید درست نباشه یه جا دیگه آپلود کردم دیگه ببخشید:

http://uplod.ir/w773h8kan0bx/AP_Project_1.rar.htm

nunegandom
جمعه 01 خرداد 1394, 22:18 عصر
سلام مجدد
متود های find رو override کن چرا که هم نام کیسان دارند و هم پارامتر یکسان

hesamrkia
جمعه 01 خرداد 1394, 22:28 عصر
سلام مجدد
متود های find رو override کن چرا که هم نام کیسان دارند و هم پارامتر یکسان

توی کلاس Person به این شکل معرفی میکنم: درست نوشتم؟؟؟


public virtual string Find(long idn)
{
if (idn == idNum)
return ID.ToString() + "," + FName + "," + LName + ","
+ Gender + "," + Tel + "," + Mobile + "," + Address;
return "Not Found!";
}


بعد نمیدونم چطوری توی Seller و Customer ارثبری کنم:

Customer :


public override string Find(long idn)
{
if (idn == idNum)
return ID.ToString() + "," + FName + "," + LName + ","
+ Gender + "," + Tel + "," + Mobile + "," + Address + ","
+ BuyDate.ToString() + "," + BuyCar + "," + PaidMoney;
return "Not Found!";


}



Seller :


public override string Find(long idn)
{
if (idn == idNum)
return ID.ToString() + "," + FName + "," + LName + ","
+ Gender + "," + Tel + "," + Mobile + "," + Address + ","
+ SellDate.ToString() + "," + SellCar + "," + ReceivedMoney;
return "Not Found!";
}


این قسمتها تو هر دو ارور میده اصلا نمیدوم چطوری بنویسم ببینید میتونید بفهمید مشکل از کجاست؟

if (idn == idNum)
return ID.ToString() + "," + FName + "," + LName + ","
+ Gender + "," + Tel + "," + Mobile + "," + Address +

RmeXXXXXXXXX
جمعه 01 خرداد 1394, 23:43 عصر
متد Find برای پیدا کردن یک عضو از مجموعه است! یعنی این متد مربوط به یک عضو نمیشه بلکه مربوط به مجموعه تون میشه. مثلاً یک لیستی از Customer
یک نمونه از Customer چیو باید پیدا کنه؟ خودش رو؟ تازه خروجی متد Find هم String نیست بلکه نوعی از جنس خود کلاس میشه.
پیشنهاد: شوما خیلی بیشتر باید مطالعه بفرمایین. ابتدا مطالعه بعد کار عملی و برنامه نویسی...

hesamrkia
شنبه 02 خرداد 1394, 11:58 صبح
متد Find برای پیدا کردن یک عضو از مجموعه است! یعنی این متد مربوط به یک عضو نمیشه بلکه مربوط به مجموعه تون میشه. مثلاً یک لیستی از Customer
یک نمونه از Customer چیو باید پیدا کنه؟ خودش رو؟ تازه خروجی متد Find هم String نیست بلکه نوعی از جنس خود کلاس میشه.
پیشنهاد: شوما خیلی بیشتر باید مطالعه بفرمایین. ابتدا مطالعه بعد کار عملی و برنامه نویسی...

بله من هنوز ابتدای کارم ولی این پروژه رو باید تحویل بدم الان میگین برنامه رو چطوری تغییر بدم؟ الان موقع Find کل پارامترها نشون داده نمیشن فقط سه تای آخر

شما پروژه رو نگاه کردین؟ به غیر از Find بقیه متودهارو درست ارث بری کرده بودم؟