פורסם 2005 ביוני 2220 שנים שלום,כתבתי תוכנה שתפקידה לסדר אירועים ביומן(לא משנה הפרטים) יש שני סוגי תאריך שניתן להכניס ליומן האירועים המוגדרים בקלאסים שונים.הבעיה שסוג התאריך נקבע כפרמטר לתוכנית ב-(argv).כשאני צריכה לשבץ תאריך איך אני אדע באיזה קונסטרקטור להשתמש??האי ככה אי אפשר לעשות::if(argv[1]==-regular)תודה רבה על העזרה....
פורסם 2005 ביוני 2220 שנים השאלה היא איך אפשר ליצור אובייקטים מקלאסים שונים כתלות ב- string מסוים?אם לשני הקלאסים יש הורה משותף אפשר לעשות משהו כזה -CParent *pObj = NULLif (strcmp(argv[1], "type1")==0)pObj=new Child1()else if (strcmp(argv[1], "type2")==0)pObj=new Child2()
פורסם 2005 ביוני 2220 שנים אם הם מוצגים בצורה שונה, למשל אחד קצת (3.9.88) ואחד ארוך(3 ספטמבר 88) אז את יכולה גם לבדוק לפי הARGC שסופר כמה ארגומנטים יש לך.ואת צריכה לרשום :int main(int argc, char *argv[])
פורסם 2005 ביוני 2220 שנים מחבר אבל הכל נעשה במחלקה כלשהי שאחראית על האירועים איך המיין יכולה לעביר לה מידע על סוג ה-argv?
פורסם 2005 ביוני 2220 שנים את יכולה לחפש קצת על design pattern שנקרא factory. זה נשמע לי כמו מה שאת מחפשת.
פורסם 2005 ביוני 2220 שנים הדרך הטובה לפתור כזה מצב.מבחינת DESIGN נכון אסור ליצור מצב שהאוביקטים השונים מודעים אחד לשני והרבה יותר טוב שגם ה MAIN לא יהיה מודע לסוגי האוביקטים השונים.במצב כזה בדרך הכי טוב לעבוד ככה.כל ה CLASSים ממשים ממשק כללי (וכמובן יורשים מאב כלשהו שאינו ממומש.ישנו CLASS אחד (FACTORY) שתפקידו להחליט איזה CLASS הוא אמור לאתחל לפי מבנה נתונים שיושב אצלו ואיזה שהוא מפתח (למשל ה STRING שמתקבל ב ARC של התוכנית - כמו אצלך)על מנת לאפשר גמישות מירבית ולמנוע מצב שבו אם רוצים להוסיף או לעדכן CLASS מסויים צריך לשנות קבצים קיימים כל CLASS דואג (על ידי בלוק סטטי) לרשום את עצמו במבנה הנתונים של ה FACTORY.וה MAIN פשוט מפיעל את ה FACTORY כשהו שולח את הארגומנט - וה FACTORY מחזיר לו את האוביקט המתאים (לפוינטר של CLASS האב)בצורה כזו גם אם בעתיד יש צורך להוסיף CLASS חדש יש צורך רק לכתוב אותו ולקמפל - בלי לעדכן שום קובץ אחר.
פורסם 2005 ביוני 2220 שנים מחבר זאת הבעיה שאסור לי להוסיף שדות פרטיים חוץ מכאלה שנתונים לי כבר... ואין שם שדה כזה..
פורסם 2005 ביוני 2220 שנים מחבר מה גלובלי המשתנה? לא.... ממש לא אמרתי שאני לא יכולה להוסיף שדות לקלאס.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.