עבור לתוכן

שאלה בקשר למימוש מערכת בc# המנהלת חברה בה עובדים זוטרים ומנהלים

Featured Replies

פורסם

הבעייה היא כזו:

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

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

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

האם מתאים כאן שימוש בהכלה במקום הורשה? פשוט אף פעם לא השתמשתי בהכלה במקום מנגנון ההורשה

תודה לעוזרים

פורסם

הכלה זו הדרך הנכונה, מחלקת עובד שבתוכה יש עוד מחלקת מקצוע.

פורסם
  • מחבר

תודה רבה על העזרה :xyxthumbs: האם יש design pattern שיכול להתאים למקרה הזה? למשל קראתי על bridge שנראה לי מתאים אבל אין לי מושג איך משתמשים בו

פורסם

bridge תופס פה אבל הוא מדבר על מצבים בהם אתה צריך התנהגות שונה לאותו אובייקט בהתאם לאובייקט המוכל.(מאוד דומה לstrategy)

בגלל שאני מאמין שאנחנו מדברים פה יותר על classים שהפואנטה שלהם היא מידע (model) ולא לוגיקה (BL) אז אין צורך לעשות את זה ככה.

מבנה קלאסים הגיוני צריך להיות

מחלקת עובד שמכילה בתוכה מחלקת אב/interface (בהתאם לצורך שלך) מסוג מקצוע.

ממחלקת מקצוע תיצור ירושה לכל מקצוע.

אבל אם לכל המקצועות יש את אותם התכונות ורק התיאור מקצוע/הרשאות שונים עדיף לעבוד מול מחלקה אחודה לכל המקצועות עם properties שונים וfactory שיודע לייצר לך אובייקט מקצוע מתאים.(במקרה ובו יש פונקציות עם לוגיקה שונה אז תצטרך להשתמש בשיטת הירושה)

פורסם

אתה יכול לממש copy constructor במחלקה של מנהל כך שהוא מקבל כפרמטר עובד זוטר.

פורסם
  • מחבר

bridge תופס פה אבל הוא מדבר על מצבים בהם אתה צריך התנהגות שונה לאותו אובייקט בהתאם לאובייקט המוכל.(מאוד דומה לstrategy)

בגלל שאני מאמין שאנחנו מדברים פה יותר על classים שהפואנטה שלהם היא מידע (model) ולא לוגיקה (BL) אז אין צורך לעשות את זה ככה.

מבנה קלאסים הגיוני צריך להיות

מחלקת עובד שמכילה בתוכה מחלקת אב/interface (בהתאם לצורך שלך) מסוג מקצוע.

ממחלקת מקצוע תיצור ירושה לכל מקצוע.

אבל אם לכל המקצועות יש את אותם התכונות ורק התיאור מקצוע/הרשאות שונים עדיף לעבוד מול מחלקה אחודה לכל המקצועות עם properties שונים וfactory שיודע לייצר לך אובייקט מקצוע מתאים.(במקרה ובו יש פונקציות עם לוגיקה שונה אז תצטרך להשתמש בשיטת הירושה)

תודה על העזרה! אז בעצם אם לכל סוג עובד (מנהל/עובד זוטר) יש חוץ מתכונות ייחודיות שלהם גם פעולות ייחודיות שלהם שהם מבצעים (יש להם מתודות משלהם לביצוע הפעולות הייחודיות שלהם) אז מתאים להשתמש בbridge?

אגב, מה בעצם ההבדל בין הכלה ״פשוטה״ לבין שימוש בbridge? מה הוא מוסיף?. אשמח לדוגמא המראה את ההבדל ביניהם (יש המון דוגמאות באינטרנט, אבל הן לא עומדות על ההבדל בין bridge להכלה רגילה).

פורסם

אני אישית לא חושב שהכלה היא התשובה במקרה זה אלא הורשה.

מחלקת עובד שמורישה למחלקת עובד זוטר ומחלקת מנהל.

פורסם
  • מחבר

ואיך בזמן ריצה תקדם עובד זוטר למנהל?

פורסם

למה שלא תשתמש במה שאמרתי עם פולימורפיזם?

פורסם

אם תסתכל על הModel שלך כיצוג של הDB אתה תבין שהורשה פה היא בעייתית ואני מאמין שלא הכרחית.

אני לא מאמין שיש הבדל פונקציונלי בין יוזר מנהל ויוזר רגיל, אם אתה רוצה לייצג את העולם האמיתי זה נכון (כי כנראה פונקציית הdowork שלהם תהיה שונה) אבל בגלל שמדובר רק ביוזר ולא יותר מזה לא צריך יותר מאשר קלאס אחוד לשניהם עם פרמטרים שונים. (מן הסתם לא stringים אלא enumים לסוג המקצוע וכו')

ארכיון

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

דיונים חדשים