大家好!
我是小黃,很高興又跟大家見面啦 !
今天更新的是:
建立時間:2020年10月23日
軟體版本: eclipse 2020-06 (4.16.0)
1、 本實驗要求:以僱員的日常工作為背景,體驗「繼承」與「屬性複用技術」的運用場景。
1-1. 業務說明:
1-1.1. 本實驗以公司僱員的日常工作模式為業務背景。
1-1.2. 公司每個僱員每天都需要進行日常的常規工作。
1-1.3. 人事人員既是公司僱員,同時也具有特定的工作職責。
1-1.4. 人事除了日常的常規工作外,還具有為員工發放薪水的工作職責。
1-2. 建立工程並設定環境:
1-2.1. 限制1. 建立實驗工程,命名為:SE_JAVA_EXP_E032;
1-2.2. 限制2. 建立包,命名為:cn.campsg.java.experiment;
1-2.3. 限制3. 建立包,命名為:cn.campsg.java.experiment.entity。
1-3. 建立僱員實體類及其相關屬性:
1-3.1. 限制1. 在cn.campsg.java.experiment.entity 包中建立僱員類:Employe。
1-3.2. 為Employe類建立如下屬性:
1)僱員姓名:字元型別;
2)僱員職級:整數型別;
3)僱員薪水:整數型別。
1-3.3. 為Employe類的屬性建立getter/setter方法。
1-3.4. 為Employe類建立0參建構函式。
1-3.5. 為Employe類建立3參建構函式。
1)在3參構造器中,對僱員類的三個屬性進行初始化。
1-3.6. 為Employe類建立日常的常規工作方法:
1)限制1. 方法名為:work。
2)限制2. work方法可設定為0參,無返回公共函數。
3)work方法的作用是,模擬僱員的常規工作。
4)work方法需在控制檯輸出資訊:僱員名稱 +「 做好了本職工作! 」
1-4. 建立人事實體類及其相關屬性:
1-4.1. 限制1.在cn.campsg.java.experiment.entity包中建立人事類:Hrstaff;
1)Hrstaff類需繼承Employe類,以此獲取僱員類的所有屬性和特徵。
1-4.2. 為Hrstaff建立0參建構函式。
1-4.3. 為Hrstaff建立1參建構函式:
1)引數為:人事姓名(字串型別)。
2)Hrstaff利用繼承技術特有的屬性共用特性,實現初始化。
3)Hrstaff呼叫父類別Employe的3參建構函式,引數如下:
Employe類的僱員姓名屬性 = Hrstaff類的僱員姓名屬性。
Employe類的僱員職級屬性 = 5(人事僱員等級預設為5)。
Employe類的僱員薪水屬性 = 5000(人事僱員薪水預設為5000)。
1-5. 實現人事為僱員發放薪水的操作:
1-5.1. 為Hrstaff類建立發放薪水方法:
1)限制1. 方法名為:paySalary;
2)限制2. paySalary方法帶有1個Employe型別引數,用於表述為哪位員工發放工資。
3)限制3. paySalary方法可設定為無返回公共函數。
4)paySalary根據Employe的僱員等級實現薪水發放,發放規則如下:
職級在[1-5]之間,僱員薪水 = 僱員薪水 + 500;
職級在[6-9]之間,僱員薪水 = 僱員薪水 + 800;
職級在[10-15]之間,僱員薪水 = 僱員薪水 + 1000;
超出職級範圍,提示:「不存在對應的職級,無法發放額外浮動薪水」
1-6. 顯示僱員工作內容和薪水:
1-6.1. 限制1. 在cn.campsg.java.experiment包中建立主類:MainClass;
1-6.2. 為MainClass建立入口主方法:main;
1-6.3. 在main方法中,建立3個不同僱員物件和1個人事物件。
1-6.4. 在main方法中,顯示所有僱員和人事的常規工作情況(呼叫work)。
1-6.5. 在main方法中,實現人事對所有僱員(包括自己)發放薪水的操作。
1-6.6. 工資發放後,在main方法中輸出僱員的發薪資訊(包括人事):
1)輸出資訊格式為:員工姓名 +「 的薪水: 」+ 員工類的僱員薪水
2、實現思路
2-1. 建立工程並設定環境。
2-2. 建立僱員實體類及其相關屬性:
2-2.1. 在cn.campsg.java.experiment.entity 包中建立僱員類:Employe;
2-2.2. 為Employe定義如下私有屬性成員變數
1)僱員姓名:String name;
2)僱員職級:int level;
3)僱員薪水:int salary。
2-2.3. 為Employe類的屬性建立對應的getter/setter方法。
2-2.4. 為Employ類建立預設構造器。
2-2.5. 為Employe類建立3參構造器,建立規則如下:
1)構造器的引數分別對應Employe的三個屬性變數;
2)在3參構造器內完成對Employe類三個屬性的賦值。
2-2.6. 為Employe建立常規工作方法:work,其形式如下:
1)在方法體內向控制檯輸出資訊,格式:僱員姓名 +「 做好了本職工作! 」;
2-3. 建立人事實體類及相關屬性:
2-3.1. 在cn.campsg.java.experiment.entity包中建立人事類:Hrstaff。
1)人事類Hrstaff繼承自僱員類Employe。
2-3.2. 為人事類Hrstaff建立預設構造器。
2-3.3. 為人事類Hrstaff建立1參構造器,引數為人事的姓名:
1)在1參構造器內呼叫Employe的3參構造器,實現人事的屬性初始化。
2)Hrstaff類屬性的初始化可按如下規則設定:
Employe的name屬性 = Hrstaff的name屬性;
Employe的level屬性 = 5;
Employe的salary屬性 = 5000。
2-4. 實現人事為僱員發放薪水的操作
2-4.1. 為Hrstaff類建立特有的發薪方法paySalary,其形式如下:
2-4.2. 實現薪水發放的業務邏輯:
1)在方法內,首先獲取通過引數傳入的僱員物件職級:
int level = em.getLevel();
2)按實驗要求,根據僱員的職級在原有薪水基礎上增加額外的補貼金額。
3)超出職級時提示資訊為:「不存在對應的職級,無法發放額外浮動薪水」。
2-5. 顯示僱員工作內容和薪水:
2-5.1. 在包cn.campsg.java.experiment中建立業務主類:MainClass;
2-5.2. 在MainClass中定義主函數main。
2-5.3. 在main方法中建立3個不同的僱員物件和1個人事物件。
2-5.4. 呼叫4個物件的work函數,輸出所有僱員(包括人事)的工作內容。
2-5.5. 模擬實現人事為僱員(包括自己)發放薪水的操作:
1)呼叫Hrstaff物件的paySalary方法,並分別傳入三個僱員物件。
2)呼叫Hrstaff物件的paySalary方法,並傳入人事物件自己。
3)依次向控制檯輸出所有僱員的發薪資訊,資訊格式如下:
僱員物件.getName() +「的薪水:」+ 僱員物件.getSalary()。
3、驗證與測試
3-1. 在工程中定位主類MainClass。
3-2. 右鍵點選MainClass類,依次選擇:Run As->Java Application。
3-3. 執行程式,檢視輸出結果是否符合預期。
4、完成效果預覽:
package cn.campsg.java.experiment;
import cn.campsg.java.experiment.entity.Employe;
import cn.campsg.java.experiment.entity.Hrstaff;
public class MainClass {
public static void main(String[] args) {
Employe employe1=new Employe("南帝",1,5000);
Employe employe2=new Employe("北丐",7,6000);
Employe employe3=new Employe("中神",11,7000);
Hrstaff hr=new Hrstaff("HR");
employe1.work();
employe2.work();
employe3.work();
hr.work();
System.out.println(hr.getName()+"開始發放工資:");
hr.paySalary(employe1);
hr.paySalary(employe2);
hr.paySalary(employe3);
hr.paySalary(hr);
}
}
package cn.campsg.java.experiment.entity;
public class Employe {
private String name;
private int level;
private int salary;
public Employe() {
super();
}
public Employe(String name, int level, int salary) {
super();
this.name = name;
this.level = level;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public void work() {
System.out.println(name + " 做好了本職工作! ");
}
}
package cn.campsg.java.experiment.entity;
public class Hrstaff extends Employe {
public Hrstaff() {
super();
}
public Hrstaff(String name) {
super(name, 5, 5000);
}
public Hrstaff(String name, int level, int salary) {
super(name, level, salary);
}
public void paySalary(Employe em) {
if (em.getLevel() > 0 && em.getLevel() < 6)
em.setSalary(em.getSalary() + 500);
else if (em.getLevel() < 10)
em.setSalary(em.getSalary() + 800);
else if (em.getLevel() < 16)
em.setSalary(em.getSalary() + 1000);
else
System.out.println("不存在對應的職級,無法發放額外浮動薪水");
System.out.println("員工" + em.getName() + "的薪水:" + em.getSalary());
}
}
各位路過的朋友,如果覺得可以學到些什麼的話,點個贊 再走吧,歡迎各位路過的大佬評論,指正錯誤,也歡迎有問題的小夥伴評論留言,私信。
每個小夥伴的關注都是本人更新部落格的動力!!!
請微信搜尋【 在下小黃 】文章更新將在第一時間閱讀 !
把握現在 ,展望未來 ,加油 !
由於水平有限 ,寫的難免會有些不足之處 ,懇請各位大佬不吝賜教 !