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

class EmpTrans {
protected:
 int number;
 char name[EmpNameMax];
 SalaryType salaryType;
 long salary;
 Date hireDate;
 EmpStatus status;
public:
 EmpTrans();
 void ReadNext();
 static void Open();
 static void Close();
 virtual void Apply();
};

class EmpTransAdd:public EmpTrans {
public:
 void Apply();
};

class EmpTransChange: public EmpTrans {
public:
 void Apply();
};

class EmpTransDelete: public EmpTrans {
public:
 void Apply();
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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