PDA

View Full Version : ایجاد 2 کلاس و ارث بردن



korosh21
شنبه 03 اسفند 1387, 16:37 عصر
سلام به همه استادان و دوستان عزیز

من یه تازه کار هستم مشکلی داشتم در رابطه با اضافه کردن یه کلس جدید به برنامم
که از من خواسته شده با ارث بردن(inheritance) این دو را به هم مرتبط کنم ولی من متاسفانه طرز استفاده از inheritance را نمیدونم ممنون میشم کمک کنید

کلس اول من که خیلی ساده هست :

namespace Adressbok
{
class Person
{
public string Firstname;
public string Lastname;
public int Telefon;
}

کلس دوم من که باید به این اضافه کنم این هست:


namespace Adressbok
{
class Company
{
private string name;
private string telephonenr;
private string visitaddress;
private string Email;
private string contactperson;
private string visit_time;
public string Name
{
get { return name; }
set { namne = value; }
}
public string telephonenr
{
get { return telephonenr; }
set { telephonenr = value; }
}
public string Besoksadress
{
get { return visitaddress; }
set { visitaddress = value; }
}
public string Email
{
get { return Email; }
set { Email = value; }
}
public string contactperson
{
get { return contactperson; }
set { contactperson = value; }
}
public string visit_time
{
get { return visit_time; }
set { visit_time = value; }
}

که این را باید با inheritance به هم متصل کنم
ممنون از کمکتون.

saeed-kh
شنبه 03 اسفند 1387, 19:18 عصر
باید با دو نقطه ای که جلوی اسم کلاست میزاری ارث بری رو مشخص کنی
تمام اعضایی که قرار است توی کلاس مشتق استفاده کنی باید توی کلاس اصلی به صورتProtectedیاPublic باشند.
با کلمه کلیدی baseمیتونی از توی کلاس مشتق با اعضای کلاس اصلی دسترسی داشته باشی.
با کلمه کلیدی overrideمیتونی ساختار عضو داخل کلاص اصلی رو داخل کلاس مشتق عوض کنی(البته در صورتی که متد داخل کلاص اصلی با کلمه کلیدیvirtualتعریف شده باشه.)
اگه خواستید که نتوانیم از یک کلاس ارث بگیریم باید آن کلاس با کلمه کلیدی sealedتعریف شود
فقط از یک کلاس میتونید ارث بگیرید یا چند تا Interface

class A
{
protected int i;
public int j;
private int k;

private void methodB()
{
// Implementation omitted
}

protected virtual void methodC()
{
// Implementation omitted
}
}

public sealed class AClass
{
// Implementation omitted
}

class B : A,IListSource,IContainer
{
public B()
{
i = 0;
j = 0;
}
protected override void methodC()
{
base.methodC();
// Implementation omitted
}
// Additional implementation omitted for Interface classes
}

korosh21
شنبه 03 اسفند 1387, 19:49 عصر
سلام
راستش من دانشجوی رشته مدیریت در سوئد هستم متاسفانه آخر ترم این پروژه کوچک را به من دادن که بنوسیم و من هم وارد نیستم
جناب سعید ممنون میشم این کدهارو خودتون در برنامه جای بدید
واقعا لطف بزرگی در حق من انجام میدید اگر کمکم کنید
من برنامه رو در سایت رپیدشر آپلود کردم
بازم از شما ممنون هستم

http://rapidshare.com/files/200826870/Adressbok.rar.html (http://rapidshare.com/files/200826870/Adressbok.rar.html)

majid325
یک شنبه 04 اسفند 1387, 03:11 صبح
شما به کد سعید دقت کردی؟
خیلی سادس , کلاس a کلاس پدر و کلاس b کلاس فرزند
شما کلاس پدر رو تعریف کردی (Personer)
اینم کلاس فرزند (به "_" متغییر های Private توجه کن)

class Company : Personer
{
private string _name;
private string _telephonenr;
private string _visitaddress;
private string _Email;
private string _contactperson;
private string _visit_time;

public string Name
{
get { return _name; }
set { _name = value; }
}
public string telephonenr
{
get { return _telephonenr; }
set { _telephonenr = value; }
}
public string Besoksadress
{
get { return _visitaddress; }
set { _visitaddress = value; }
}
public string Email
{
get { return _Email; }
set { _Email = value; }
}
public string contactperson
{
get { return _contactperson; }
set { _contactperson = value; }
}
public string visit_time
{
get { return _visit_time; }
set { _visit_time = value; }
}

}
حالا شما یک کلاس ساختی که فیلد های کلاس پدرش هم به ارث برده.
حالا چرا Company از Personer ارث بری میکنه؟

#aliyari_C
یک شنبه 04 اسفند 1387, 12:35 عصر
البته شما به یک مشکل دیگر هم داری انم namespase است . اگر می خواهی آن را به کار به ببری باید در کد اصلی using namespase را یه کار بگری تا از کلاس استفاده کنی یعنی اسم بعد از namespase که در بالا کلاس تعریف نموده اید در کد اصلی اسم آن را جلوی using می گذاری
البته این کار را در برنامه هایی که نیاز به مدیریت دارد به کار می بندند . ولی در برنامه شما چون کدکمتری می نویسد آن را به کار نگیرید و اگر ننویسید کلاس بدون به کار گیری using نیز قابل مشاهد می شود.
-------------------------------------------------------
زندگی هیچ ارزشی ندارد ولی ارزش هیچ چیز هم به همه زندگی نیست