欢迎光临散文网 会员登陆 & 注册

我们创办了一家新公司,所有的员工都是新员工(NewEmployee),每个新员工都有薪水(s

2023-03-15 11:25 作者:酸奶公园  | 我要投稿

我们创办了一家新公司,所有的员工都是新员工(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()方法。这种设计可以使我们更好地管理和培养新员工,同时也不会影响老员工的工作。


我们创办了一家新公司,所有的员工都是新员工(NewEmployee),每个新员工都有薪水(s的评论 (共 条)

分享到微博请遵守国家法律