PDA

View Full Version : سوال: چطور اين كلاس بسياز ساده رو بنويسم؟



ali.2566
سه شنبه 06 مرداد 1388, 13:53 عصر
سلام
من شروع كردم Visual C++ ياد بگيرم. دارم كتاب جعفر نژاد قمي رو ميخونم.
در آخر فصل 4 يك تمرين هست كه نميتونم حلش كنم.

"كلاسي بنويسيد كه طول و عرض زميني را خواندهو زمان لازم براي چمن زني را نمايش دهد. سرعت ماشين چمن زني 145.5 متر مربع در دقيقه است"

ممنون ميشم كمكم كنيد.

يه سوال ديگه هم داشتم. من كه از نسخه 6 ويژوال c++ استفاده ميكنم چطور جلوه XP به برنامه ام بدم؟

باز هم ممنون

clover
چهارشنبه 07 مرداد 1388, 15:55 عصر
سلام دوست عزیز
اگر فرض کنیم این کلاس زمین هست .
این کلاس می تونه دو عضو داده داشته باشه که عبارتند از : طول زمین ، عرض زمین
و دو تابع عضو ، یکی برای تنظیم طول و عرض و دیگری برای نمایش زمان لازم برای چمن زنی .
تابع اول که فکر نکنم نیازی به توضیح داشته باشه .
اما در تابع دوم کافیه که مساحت زمین را حساب کنی و بعد از فرمول زیر مدت زمان مورد نظر را محاسبه کنی و بر گردونی .

145.5 / مساحت(متر مربع) = زمان لازم برای چمن زنی (دقیقه)

class Earth {
public:
Earth(float = 0, float = 0);
void setEarth(float, float);
void printTT() const;
~Earth();
private:
float width;
float length;
};

Earth::Earth(float x, float y) //Constructor
{
setEarth(x, y);
}

void Earth::setEarth(float x, float y) //Set Earth Parameters
{
width = (x > 0 ? x : -x );
length = (y > 0 ? y : -y );
}

void Earth::printTT() const //Print Time Take
{
const float MS = 14.5;
float s = width * length;
float tt = s / MS;
cout << "Lawnmower takes " << tt << " minutes .";
}

Earth::~Earth()
{
//Destructor
}
البته این کلاس خیلی ساده ایه که می تونی اونو گسترش بدی و بهینه کنی .
اگر باز هم مشکلی بود ، خوشحال میشم کمک کنم .

ali.2566
چهارشنبه 07 مرداد 1388, 16:08 عصر
سلام
ممنون دوست خوبم
راستش من تا اينجا حل كرده بودم ولي نميتونستم كلاس رو بنويسم. يعني كد ها رو. اگه يكم درمورد كدها كمك كنيد ممنون ميشم

clover
چهارشنبه 07 مرداد 1388, 18:56 عصر
اولین کار برای استفاده از یک کلاس در ++C اعلان کلاس هست که با کلمه کلیدی class انجام میشود :

class Earth {
public:
Earth(float = 0, float = 0);
void setEarth(float, float);
void printT() const;
~Earth();
private:
float width;
float length;
};
هر کلاس از تعدادی متغیر (اعضای داده ای) تشکیل شده که خصوصیات کلاس را تشکیل می دهند (متغیر های width و lenght در مثال بالا) ، همینطور از تعدادی تابع (توابع عضو کلاس) که رفتارهای کلاس را تشکیل می دهند (توابع setEarth و printT در مثال بالا) .
اعضای داده ای و توابع عضو می توانند به صورت private (خصوصی) و یا public (عمومی) تعریف شوند .

بعد از اعلان کلاس (اعلان اعضای داده ای و توابع عضو) ، نوبت می رسد به تعریف توابع عضو کلاس که بهتر است بیرون از تعریف کلاس تعریف شوند :

Earth::Earth(float x, float y) //Constructor
{
setEarth(x, y);
}

void Earth::setEarth(float x, float y) //Set Earth Parameters
{
width = (x > 0 ? x : -x );
length = (y > 0 ? y : -y );
}

void Earth::printTT() const //Print Time Take
{
const float MS = 14.5;
float s = width * length;
float tt = s / MS;
cout << "Lawnmower takes " << tt << " minutes .";
}

Earth::~Earth()
{
//Destructor
}

دقت کنید که دو تابع Earth و Earth~ توابع سازنده و نابود کننده هستند که به ترتیب در هنگام ایجاد کلاس و نابود کردن کلاس فراخوانده می شوند .
مطلب خاص دیگه ای به ذهنم نمی رسه .

ali.2566
چهارشنبه 07 مرداد 1388, 20:11 عصر
واقعا ممنون دوست خوبم
بسيار توضيحاتتون عالي بود.

nickaein.i
سه شنبه 13 مرداد 1388, 23:14 عصر
بجای Earth از Field یا Ground استفاده کنید مناسبتره! :بامزه: