我們創(chuàng)辦了一家新公司,所有的員工都是新員工(NewEmployee),每個新員工都有薪水(s
我們創(chuàng)辦了一家新公司,所有的員工都是新員工(NewEmployee),每個新員工都有薪水(salary)、病假時間(sickTime)和醫(yī)療計劃(medicalPlan)。并且有一些適用于新員工的方法,分別為計算稅收 taxes()、計算福利 benefits()。請繪制出NewEmployee類的類圖。
6個月之后,我們的創(chuàng)業(yè)公司進(jìn)展順利。我們決定每位被公司雇傭了 6個月的員工都應(yīng)當(dāng)被看做是老員工,并且有額外的福利。這些福利包括牙科醫(yī)療計劃(dentalPlan)、休假(vacation)和公司提供的轎車(car)。納稅函數(shù)和福利函數(shù)與新員工相同,只不過福利函數(shù)多了一些代碼來處理牙科醫(yī)療計劃、休假和公司提供的轎車。
請通過類圖構(gòu)建老員工 ?(FullEmployee)類,并合理安排老員工與新員工之間的關(guān)系
NewEmployee類圖:
```
+----------------+
| ? NewEmployee ? |
+----------------+
| ? - salary ? ? ?|
| ? - sickTime ? ?|
| ? - medicalPlan |
+----------------+
| taxes() ? ? ? ?|
| benefits() ? ? |
+----------------+
```
FullEmployee類圖:
```
+------------------------+
| ? ? ?FullEmployee ? ? ?|
+------------------------+
| ? - salary ? ? ? ? ? ? |
| ? - sickTime ? ? ? ? ? |
| ? - medicalPlan ? ? ? ?|
| ? - dentalPlan ? ? ? ? |
| ? - vacation ? ? ? ? ? |
| ? - car ? ? ? ? ? ? ? ?|
+------------------------+
| taxes() ? ? ? ? ? ? ? |
| benefits() ? ? ? ? ? ?|
+------------------------+
^
|
+------------------------+
| ? ? ? ?Is-A ? ? ? ? ? ?|
| ? ? ? (Inheritance) ? ?|
+------------------------+
|
v
+------------------------+
| ? ? ?NewEmployee ? ? ? |
+------------------------+
```
在類圖中,F(xiàn)ullEmployee繼承NewEmployee,表示FullEmployee是NewEmployee的子類,即FullEmployee擁有NewEmployee的所有屬性和方法。此外,F(xiàn)ullEmployee還有獨(dú)有的屬性dentalPlan、vacation和car,以及override父類的benefits()函數(shù)實(shí)現(xiàn)。因此,F(xiàn)ullEmployee與NewEmployee之間體現(xiàn)了一種Is-A的關(guān)系,即FullEmployee是一種特殊的NewEmployee。
為了解決新員工需要花費(fèi)大量時間來適應(yīng)公司的問題,我們可以為他們提供一些培訓(xùn)和指導(dǎo)。因此,我們可以為NewEmployee類添加一個方法training(),用于提供培訓(xùn)和指導(dǎo),讓新員工更快地適應(yīng)公司。同時,我們不需要在FullEmployee中再次添加training()方法,因?yàn)橐呀?jīng)可以繼承自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()方法。當(dāng)一個新員工需要適應(yīng)公司時,可以通過調(diào)用training()方法來獲得幫助和指導(dǎo),從而更快地適應(yīng)公司。同時,F(xiàn)ullEmployee類仍然Is-A NewEmployee類的子類,繼承了NewEmployee類中的所有屬性和方法,包括training()方法。這種設(shè)計可以使我們更好地管理和培養(yǎng)新員工,同時也不會影響老員工的工作。