PDA

View Full Version : سوال: راهنمایی در مورد شئ گرایی و اصولی بودن



bghad1
شنبه 10 مهر 1389, 02:28 صبح
سلام...امیدوارم که خوب باشین..

یه برنامه نوشته بودم...البته نه به عنوان برنامه ای که کار خاصی بخواد انجام بده...چیز خاصی نداره...بیشتر پروپرتی و کانستراکتور و یکی 2 تا چیز کوچول دیگست..

بیشتر برای یادآوری و تمرین...چون کار خاصی انجام نمیده...البته با یه مقدار تغییر می تونه یه سری کارا انجام بده!!:لبخند:

به هر حال...می خواستم از دوستان و اساتید اینجا بخوام که کدهامو نگاه کنن لطفا و بگن تا چه حد نزدیک هست به مباحث OOP و همینطورم تا چه حد اصولی هستش این تمرین(برنامه) و همینطورم چطوری میشه بهینه کرد این برنامه رو؟؟

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

و خلاصه تا جایی که می تونین راهنمایی و کمکم کنین....

یه دنیا ممنونتون میشم:قلب::قلب::قلب::قلب:
مرســـی:قلب::قلب::قلب::قلب::ق ب:

afsharjowkar
شنبه 10 مهر 1389, 09:19 صبح
تقریبا تمتم نکات رو رعایت کردین
مواردی که دیدم اینه که به جای ovverride کردن tostring بهتره یک custom property تعریف کنید برای مثال

public string fullinformation
{
get
{
retutn fname+ lname+......
}


}

به نظر من نیازی نیست که اینترفیس آدرس رو پیاده سازی کنید فقط کافیه یه رابطه بین اون و کلاسای دیگه تعریف کنی

اطلاعات دیگه ای خواستی اینجا رو ببین

http://www.oopc.mihanblog.com (http://www.oopc.mihanblog.com/)

bghad1
شنبه 10 مهر 1389, 12:12 عصر
ممنون بابت توجهتون...

نمی دونستم که میشه هم زمان مثلا هم fName,lName و اینجور چیزا رو با هم get و set کرد!!//...
مرسی:لبخندساده:

منظورتون از این چیه؟ درست متوجه منظورتون نشدم:

به نظر من نیازی نیست که اینترفیس آدرس رو پیاده سازی کنید فقط کافیه یه رابطه بین اون و کلاسای دیگه تعریف کنی


ممنون میشم سایر دوستان هم کمک کنند و نظراشون رو بگن...:لبخندساده::قلب:

C Sharp
شنبه 10 مهر 1389, 14:47 عصر
- میتونید از Generalization (عمومیت بخشی) استفاده کنید و خصوصیات مشترک بین teacher و student مثل fname,lname رو تو اون قرار بدین

- واسه نوشتن توضیحات بهتره از این روش استفاده کنید تا کسایی که از کدتون استفاده میکنن بتونن این توضیحات رو بخونن




/// <summary>
/// Re-defining ToString() Method :
/// </summary>
/// <returns></returns>
public override string ToString()
{
return ("Student Number is:" + stNum + "\nField is : " + field + "\nFirstName : " + fName + "\nLast Name : " + lName +
"\nTerm : " + term + "\nGot Lessons : " + gotLessons + "\nPassed : " + passed + "\nNot Passed : " + notPassed +
Environment.NewLine + "Average is : " + Average(14.5,16.25)+ Environment.NewLine + "Failed : " + failed);
}

bghad1
شنبه 10 مهر 1389, 14:53 عصر
ممنون بابت توجه...میشه کل کد رو بررسی کنین و راهنمایی های بیشتر بکنین که چه جوری بهترش کنم توی کد نویسی...

و آیا این کد خیلی در هم و برهم هستش یا نه؟؟

چیکار کنم بهتر بشه؟؟

generalization منظورتون دقیقا چجوری هستش؟؟

C Sharp
شنبه 10 مهر 1389, 14:58 عصر
یه سری مسائل دیگه هم هست که چون سناریو خاصی واسه پروژه (کدی که گذاشتین) نداشتین ، نمیشه خیلی روش تاکید کرد.

مواردی از قبیل انتقال برخی فیلد ها از student به lesson ، در نظر گرفتن کلاسهاییی برای مشخصه و ترم و برقراری ارتباطهای aggregation بین این کلاسها
و ...

bghad1
شنبه 10 مهر 1389, 15:21 عصر
خوب میشه مثلا بگین چه جوری و مثال بزنین از چیزی که مد نظرتون هستش؟


مواردی از قبیل انتقال برخی فیلد ها از student به lesson ، در نظر گرفتن کلاسهاییی برای مشخصه و ترم و برقراری ارتباطهای aggregation بین این کلاسها


مثلا چجوری منظورتون هستش؟؟
مثال می زنین لطفا؟؟

C Sharp
شنبه 10 مهر 1389, 15:28 عصر
ممنون بابت توجه...میشه کل کد رو بررسی کنین و راهنمایی های بیشتر بکنین که چه جوری بهترش کنم توی کد نویسی...

و آیا این کد خیلی در هم و برهم هستش یا نه؟؟

چیکار کنم بهتر بشه؟؟

generalization منظورتون دقیقا چجوری هستش؟؟

کد تا حدودی ناقص هست و کمبودهایی داره . هیچ ارتباطی بین student , teacher, lesson و ... نیست. ظاهرا هدف فقط ایجاد چند کلاس و آشنایی با موضوعاتی مثل override کردن بوده. بهمین خاطر انتظار زیادی نمیشه داشت و تا همین حدش هم خوبه.
البته اینو هم اضافه کنم که تا یه پروژه رو بصورت جدی دنبال نکنین و یه پروژه تا حد زیادی واقعی رو تجربه نکنید ، نمیتونین انتظار داشته باشین که چیز زیادی یاد بگیرید.

درهم و برهم نیست ، فقط مواردی مثل نوشتن توضیحات رو که قبلا اشاره کردم رعایت کنین بهتر میشه. پروژه ای که فقط از چند کلاس تشکیل شده اگه تمیز نوشته شده باشه خیلی جای تحسین نداره :چشمک:

راجبه generalization کاری که تو پروژه شما میشه انجام داد ، اینه که یک کلاسی مثلا به اسم Person در نظر بگیرید و خصوصیات و رفتارهای مشترک بین student و teacher رو تو اون قرار بدین و از این کلاسها حذف کنید و بعد کلاسهای student و teacher رو از Person ارث بری کنید




class Person
{
protected string _fname;
protected string _lname;

public String FName
{
get
{
return _fname;
}
}
public string LName
{
get
{
return _lname;
}
}

public Person(string fname, string lname)
{
_fname = fname;
_lname = lname;
}
public override string ToString()
{
return "First name : " + _fname + "\nLast name : " + _lname + "\n";
}
}

bghad1
شنبه 10 مهر 1389, 16:43 عصر
نه...اینکه خواستم بدونم که درهم و برهمه یا نه واسه اینه که آخه میخواستم ببینم چجوریه کد نویسیم خوب!!!:دی

آخه خوب اگه قرار باشه به کسی یاد بدم ب هر حال باید بدونم دیگه:چشمک:

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

bghad1
شنبه 10 مهر 1389, 19:29 عصر
میشه دوستان به سوالای من جواب بدن تا اونجایی که می تونن؟؟

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

bghad1
یک شنبه 11 مهر 1389, 17:43 عصر
کسی نمی تونه کمک کنه و کامل تر کنه این رو؟؟

نحوه استفاده صحیح constructor ها اینجا چجوری میشه؟؟

اَرژنگ
دوشنبه 12 مهر 1389, 02:14 صبح
کسی نمی تونه کمک کنه و کامل تر کنه این رو؟؟

نحوه استفاده صحیح constructor ها اینجا چجوری میشه؟؟
در اینجا احتیاجی به استفاده از کنستراکترها نیست.
من یک توپیک برایه ساخت برنامه مدرسه به شکل گفتگو راه انداختم http://barnamenevis.org/forum/showthread.php?t=251141
، (در اصل فقط برایه ساخت دفترچه تلفن قرار بود باشد ولی بعد از دیدن این توپیک و مصاحبات در این توپیک شما دیدم یک توپیک برایه ساخت مدیریت یک مدرسه هم بکار میاد.)
در مورد اصولی بودن روشها من مسئولیت را به گردن میگیرم، بقیه هم میتونند با انتقاداتشان و سوالهاشان ما را به اینکه در راه درست پیش بریم کمک کنند.