我们创办了一家新公司,所有的员工都是新员工(NewEmployee),每个新员工都有薪水(salary)、病假时间(sickTime)和医疗计划(medicalPlan)。并且有一些适用于新员工的方法

我们创办了一家新公司,所有的员工都是新员工(NewEmployee),每个新员工都有薪水(salary)、病假时间(sickTime)和医疗计划(medicalPlan)。并且有一些适用于新员工的方法,分别为计算税收 taxes()、计算福利 benefits()。请绘制出NewEmployee类的类图。
6个月之后,我们的创业公司进展顺利。我们决定每位被公司雇佣了 6个月的员工都应当被看做是老员工,并且有额外的福利。这些福利包括牙科医疗计划(dentalPlan)、休假(vacation)和公司提供的轿车(car)。纳税函数和福利函数与新员工相同,只不过福利函数多了一些代码来处理牙科医疗计划、休假和公司提供的轿车。
请通过类图构建老员工 (FullEmployee)类,并合理安排老员工与新员工之间的关系

NewEmployee类图:

+----------------+
|   NewEmployee   |
+----------------+
|   - salary      |
|   - sickTime    |
|   - medicalPlan |
+----------------+
| taxes()        |
| benefits()     |
+----------------+

FullEmployee类图:

+------------------------+
|      FullEmployee      |
+------------------------+
|   - salary             |
|   - sickTime           |
|   - medicalPlan        |
|   - dentalPlan         |
|   - vacation           |
|   - car                |
+------------------------+
| taxes()               |
| benefits()            |
+------------------------+
^
|
+------------------------+
|        Is-A            |
|       (Inheritance)    |
+------------------------+
|
v
+------------------------+
|      NewEmployee       |
+------------------------+

在类图中,FullEmployee继承NewEmployee,表示FullEmployee是NewEmployee的子类,即FullEmployee拥有NewEmployee的所有属性和方法。此外,FullEmployee还有独有的属性dentalPlan、vacation和car,以及override父类的benefits()函数实现。因此,FullEmployee与NewEmployee之间体现了一种Is-A的关系,即FullEmployee是一种特殊的NewEmployee。

为了解决新员工需要花费大量时间来适应公司的问题,我们可以为他们提供一些培训和指导。因此,我们可以为NewEmployee类添加一个方法training(),用于提供培训和指导,让新员工更快地适应公司。同时,我们不需要在FullEmployee中再次添加training()方法,因为已经可以继承自NewEmployee。

修改后的NewEmployee类图如下:


+----------------+

|   NewEmployee   |

+----------------+

|   - salary      |

|   - sickTime    |

|   - medicalPlan |

+----------------+

| taxes()        |

| benefits()     |

| training()     |

+----------------+

FullEmployee类图依然保持不变:


+------------------------+

|      FullEmployee      |

+------------------------+

|   - salary             |

|   - sickTime           |

|   - medicalPlan        |

|   - dentalPlan         |

|   - vacation           |

|   - car                |

+------------------------+

| taxes()               |

| benefits()            |

+------------------------+

^

|

+------------------------+

|        Is-A            |

|       (Inheritance)    |

+------------------------+

|

v

+------------------------+

|      NewEmployee       |

+------------------------+

在类图中,我们可以看到NewEmployee类中新增了training()方法。当一个新员工需要适应公司时,可以通过调用training()方法来获得帮助和指导,从而更快地适应公司。同时,FullEmployee类仍然Is-A NewEmployee类的子类,继承了NewEmployee类中的所有属性和方法,包括training()方法。这种设计可以使我们更好地管理和培养新员工,同时也不会影响老员工的工作。

おすすめ

転載: blog.csdn.net/zezeaichirou/article/details/129549925