עבור לתוכן

++C מח

Featured Replies

פורסם

אני צריכה לצור מחלקה בסיס שיש בה פונקציות לחישוב שטח, הקף ולשרטוט- ריבוע, מלבן, תיבה.

(הריבוע, המלבן, והתיבה יורשות ממחלקת הבסיס).

בתכנית הראשית יש לולאה החוזרת 10 פעמים ובכל פעם מדפיזה לצורה שיוצאת בהגרלה- שטח הקף ומשרטטת אותה ע"י כוכביות.

השאלות שלי:

1.איך אפשר להגדיר מערך של מצביעים מסוג הבסיס?

2.האם במחלקת הבסיס אני צריכה להגדיר אורך ,רוחב וגובה הצלע?

3. מה צריכה להכיל הפונקציה המחזירה את אורכי הצלעות?

זה מה שרשמתי למחלקת הבסיס, ובשאר המחלקות ממשתי בהתאם:


class Base
{

public:
virtual int getTzela()=0;
virtual int Hekef()=0;
virtual int Shetach()=0;
virtual void Sirtut()=0;
};

פורסם

קודם כל, תיבה? תיבה זה גוף תלת-מימדי, אין לו היקף/שטח (יש שטח פנים ונפח).

1. מערך של מצביעים מסוג הבסיס מגדירים בדיוק כפי שהיית מצפה שמגדירים אותו:

Base* arr[10];

2. במחלקת הבסיס אין טעם להגדיר את שלושת אלה, כי הם לא רלבנטיים לכל היורשים ממנו (לריבוע אין אורך, גובה ורוחב, אלא רק אורך צלע).

3. בהתאם למה שרשמתי ב-2, הפונקציה getTzela לא רלבנטית לכל היורשים, אלא רק למקרה של ריבוע (כי במקרה של מלבן/תיבה לא ברור לאיזו צלע את מתכוונת).

פורסם
  • מחבר

תודה על התגובה .

האם זה בסדר להשאיר את הפונקציה getTzela במחלקת הבסיס.

היא מחזירה אורכי צלעות-

בריבוע: את אורך הצלע.

במלבן: יש פונקצית private שמחזירה רוחב הצלע לפונקציה getTzela שמחזירה לתכנית

כנ"ל לגבי תיבה.

פורסם
  • מחבר

אה, וגם רציתי לשאול איך אני נגשת בתכנית הראשית מהוקטור מצביעים הזה לפונקציות?

לדוגמא- אני צריכה שבלולאה מ1 עד 10 לכל מלבן וריבוע, יודפסו היקפיהם (לפי המונה.)

פורסם

מכיוון שהגדרת את הפונ כVIRTUAL, הפונ יקושרו לאובייקטים בזמן הריצה. לאחר שהקצאת מקום בהתאם למחלקה היורשת, פשוט תעשי:

cout<<arr[place]->Hekef();

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים