PDA

View Full Version : مشکل در طراحی oop ساختار درختی!



hmdhamed
یک شنبه 01 بهمن 1391, 16:15 عصر
سلام
من در برنامم یک سری کلاس abstract دارم که چند نوع مختلف کلاس معمولی از هر کدومشون مشتق میشن. نیاز دارم توی توابع برنامه اشیا ساخته شده از این کلاس هام رو به عنوان پارامتر به توابع پاس بدم بدون اینکه برای مصرف کننده مثلا نوع کارمند مساله باشه . در ضمن میخوام هر گره یک اشاره گر به سر شاخه داشته باشه که اون هم هر نوع مشتق شده رو بگیره با توجه به اینکه کلاس پایه abstract هست و نمیشه شی ازش ساخت من تو کد زیر فقط برای رسوندن منظورم از this استفاده کردم که جواب نمیده مثل بقه کدش :لبخند:
لطفا دوستان و اساتید راهنمایی کنید.

abstract class officer
{
string id; , ...
officer leader;
public void addToGroup(officer somperson)
{
officer.leader = this;
}
}

class boss:officer
{
}

class accountant:officer
{
}

main class
{
accountant acc = new accountant();
boss bs = new boss();
boss.addToGroup(acc);
}

plus
یک شنبه 01 بهمن 1391, 16:32 عصر
منظورتون رو درست متوجه نشدم، الان این کد شما خطا میده؟

hmdhamed
یک شنبه 01 بهمن 1391, 16:43 عصر
بله. خطا میده. هم موقعی که میخوام به سر دسته اشاره گر بذارم هم استفاده از تابع addToGroup

plus
یک شنبه 01 بهمن 1391, 16:45 عصر
متن خطا رو بگذارید.

hmdhamed
یک شنبه 01 بهمن 1391, 16:53 عصر
متن خطای اون قسمتو سعی میکنم الان بذارم چون یکم کلاسهام شلوغ و پیچیده شده یکم طول میکشه فقط قبلش یه سوال یعنی منطقش درسته اشکالی نداره؟ چون من خیلی از ارث بری و کلاس های abstract قبلا استفاده نمیکردم و وارد نیستم

hmdhamed
یک شنبه 01 بهمن 1391, 17:08 عصر
An object reference required for non static filed or property

hmdhamed
یک شنبه 01 بهمن 1391, 17:15 عصر
البته من میدونم به شی که هنوز ساخته نشده reference میدم ولی میخوام بدونم چیجوری میشه تو تعریف کنی وقتی شاخه درست کرد به خودش reference بدم

plus
یک شنبه 01 بهمن 1391, 17:31 عصر
دوست عزیز، اینجا:

abstract class officer
{
string id; , ...
officer leader;
public void addToGroup(officer somperson)
{
officer.leader = this;
}
}

در این قسمتش :

officer.leader = this;

officer اسم کلاس هست نه اسم شی، و مشخصه leader هم static نیست که شما بتونی officer.leader رو مقدار بدی.احتمالا منشورت somperson.leader نبوده؟

hmdhamed
یک شنبه 01 بهمن 1391, 17:36 عصر
:لبخند: درسته شما درست میگید.