שאלת עיצוב (++C)

sk12345

New member
שאלת עיצוב (++C)

יש לי שתי היררכיות של ירושה: ID - שכוללת את EmployeeID (מחלקת בסיס אבסטרקטית), ManagerID ו-ClerkID (יורשות ממחלקת הבסיס). Report - שכוללת את Report (מחלקת בסיס), ManagerReport ו-ClrekReport (יורשות מ-Report). חוץ מאלה יש לי מחלקת ReportDB שהיא class template שמקבל את סוג ה-report. עכשיו אני רוצה ליצור מחלקות Employee שמבוססות על מחלקות ה-ID וה-Report. אני אצטרך מחלקת Manager ומחלקת Clerk. אני צריך להיות מסוגל לאכסן סוגים שונים של Employee באותו STL container (עם smart pointer). כמו כן, אני צריך להיות מסוגל לגשת ל-ID המתאים בזמן ריצה. משהו כזה -
smart_ptr<Employee> e1, e2; // gets values from a container if ( e1->getID() == e2->getID() ) ;​
חוץ מזה, כל סוג של Emplyoee צריך לאכסן ReportDB שמתאים לו. הבעיה היא שאני מסתבך עם בחירת המימוש
. חשבתי להחזיק מצביע ל-ID במחלקת בסיס (Emplyoee), ואז כל מחלקה שיורשת מ-Employee מאתחלת את המצביע ב-ID חדש. הבעיה היא שמי שמשתמש במחלקה יצטרך לעשות הרבה הסבות במקרה שהוא רוצה להשתמש בתכונות מורחבות של ID ספציפי. אני גם קצת מסתבך עם המיקום של ReportDB. בקיצור, אם מישהו יוכל לכוון אותי או לתת רמז אני אשמח. תודה מראש.
 

vinney

Well-known member
תלך טיפה אחרת

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