תכנות מונחה עצמים (OOP) - הורשה - כלליות מול התמחות

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

כלליות מול התמחות

 
מאת: ארז קלר

 
מחלקת בסיס (Base class) מתארת אובייקט באופן כללי. מחלקות נגזרות (Derived) מתארות אותו בצורה מפורטת יותר, לכן מתארים את מחלקת הבסיס כמחלקה המייצגת הכללה - Generalization, בעוד שמחלקת הבסיס מייצגת התמחות Specialization.
לדוגמה:
  • מחלקה המייצגת יונק תהיה כללית יותר מאשר מחלקה המייצגת סוס או פרה או דולפין או אדם.
  • מחלקה המייצגת כלי תחבורה תהיה כללית יותר מאשר מחלקה המייצגת מכונית פרטית או מטוס או אוניה.
  • מהגדרת המחלקה "רהיט" לא נוכל לדעת בדיוק באיזה רהיט מדובר, משום שהיא מייצגת משפחה שלמה של אובייקטים שכולם רהיטים (ארון , מדף , מיטה , שולחן כיסא וכו')
לדוגמה:
Specification Vs Generalization - כלליות מול התמחות

ככל שמחלקה היא בסיסית יותר, כך היא גם כללית יותר (Generalization), דהיינו, מייצגת רעיון כללי ולא ממוקד.
ככל שנתקדם במורד "עץ ההורשה" נתקל במחלקות המייצגות רעיונות או עצמים מפורטים וממוקדים יותר, דהיינו, התמחות (specialization).
בדיאגראמה המחלקה Person מספקת תיאור כללי מאוד של מחלקה המייצגת אדם, אדם יכול להיות מורה, תלמיד, טייס, נהג, פקידה, חייל, ילד, שחקן כדורגל, מאמן כדורגל, וכו'.
למעשה, באמצעותה ניתן לייצג כל תפקיד של בן אנוש, אולם בצורה מאוד בסיסית ,חסרה ודלה בפרטים.
ככל שמחלקה היא בסיסית יותר היא מתאימה לייצוג מספר רב יותר של מקרים משום שהיא מייצגת את המכנה המשותף שלהם.     
 
המחלקה Employee, לעומת זאת, היא מחלקה בעלת התמחות יותר מוגדרת, היא מתאימה לייצוג עובדים.
לא ניתן לייצג באמצעותה שחקן כדורגל, תלמיד או מורה כי היא מכילה תכונות והתנהגויות שאינן נדרשות לשחקן כדורגל, תלמיד או מורה וחסרה תכונות והתנהגויות אחרות אשר הכרחיים למחלקות אלו.
למחלקה Employee יש במערכת תפקיד יותר מוגדר וממוקד מאשר למחלקה Person.
אולם היא עדיין לא מתאימה לייצוג פועלים, אין בה התייחסות לשכר ולשעות העבודה  
לכן נעדיף לרשת גם אותה על מנת לספק התמחות נוספת או ממוקדת יותר המתאימה לייצוג פועלים.
Specification Vs Generalization - כלליות מול התמחות - דוגמה 2

המחלקה BaseShape מייצגת צורה, אולם איזו צורה היא מייצגת?, האם עיגול? האם מלבן?
BaseShape היא מחלקה כללית המכילה את המכנה המשותף של המחלקות המייצגות צורה,
המחלקות Circle ו- Rectangle היורשות אותה מייצגות צורות קונקרטיות ולכן הם מחלקות מתמחות.
 



 








כל הזכויות שמורות למחבר ©