9-2 簡單的繼承關係
9-2-1 範例研討:建構人事資料 (A)程式功能:Ex9_1.java、Personal.java、Employee.java 『展鵬網路行銷公司』期望建立一套較完整的人事資訊系統,對每位員工包含有:身分證字號、姓名、性別、員工代號、服務部門、職位、地址、電話等資料。希望此系統所登錄資料能與外部其他系統結合,對內也可以讓其他資訊系統引用。規劃員工資料內容後,請製作一個簡單的輸入/輸出程式,測試是否可行,期望操作介面如下:
(B)製作技巧研討: 該公司要求所建立的人事資訊系統,儘量可以與外界或內部其他資訊系統結合,即是人事資料的屬性儘量能相容於其他系統。因此,必須由對內與對外兩方面來思考,以下分別說明之。 (1) 對外共通屬性:Personal.java 在台灣辨識國人之間大多採用哪些屬性,將這些屬性加入人事資訊系統內,與外界溝通則可透過它們。國人資料所採用的屬性有:姓名、身分證字號、性別、出生地、出生日,除了身分證字號外,在台灣內要找到兩個人其他資料都是相同的,應該很困難才對。於是將描述『國人』的屬性製作成 Personal 類別,如下:
上述範例中,Personal 類別包含 5 個變數成員,其中 SID(身分證號)為隱藏性變數,利用 2 個方法成員(setSID() 與 getSID())作為該變數的輸入與輸出埠口。Personal 類別制定完成之後,不僅可以由它延伸出管理公司內的人事系統,也可以製作出公司管理非本司員工的客戶管理系統,甚至其他應用管理系統。Personal 類別可存取成員有:(如圖 9-4 所示) (a) int setSID(String No):設定身分證號碼。引數 No 格式正確則設定身分證號碼,並回傳 1 表示執行正常;否則回傳 1,表示身分證號碼格式不對。 (b) String getSID():讀取身分證號碼。 (c) String name:儲存姓名之變數(字串格式)。 (d) String sex:儲存性別之變數。 (e) String birthDate:儲存出生日之變數。 (f) String birthPlace:儲存出生地之變數。
圖 9-4 人事資料基本類別 (2) 對內相容屬性:Employee.java 人事系統內所登錄的員工資料,大多會其他系統所引用;規範員工資料屬性時,也必須考慮到其他系統的相容性如何。首先我們增加了員工代號屬性,當作員工在公司內的唯一識別。如果還是利用身份證字號識別,它屬於字串型態,搜尋比對較不方便。另外,再依展鵬公司的環境,增列了:服務部門、職位、電話與地址等 4 個屬性,又引用對外共通屬性:身份證號、姓名與性別等 3 個屬性。合計共 8 個屬性(如圖 9-5 所示)。依此,我們建構了 Employee 類別,它繼承來自 Personal 屬性,程式範例如下:
其實上述範例,Employee 類別繼承 Personal 屬性的所有成員,又增列 4 個成員,合計共有:SID、name、sex、birthDate、birthPlace(以上父類別 Personal 具有),ID、depart、position、addr 與 tel(以上由 Employee 宣告產生),合計 10 個變數成員,以及 setSID() 與 getSID() 兩個方法成員。但依照系統的需求,吾人也許會捨棄 birthDate 與 birthPlace 兩個變數成員不用(也許有一天會拿來用)。
圖 9-5 Employee 類別產生 (C)程式範例:Ex9-1.java 完成後 Employee 類別的規劃,吾人則可以編制一個簡單程式來測試結果如何,程式範例如下:
製作完成上述 3 個原始程式之後,即可將他編譯成中界檔(bytecode),但需由 Personal.java 開始,接著是 Employee.java,最後才編譯 Ex9_1.java,執行範例如下:
9-2-2 自我挑戰:建構客戶資料 (A)程式功能:PM9_1.java 展鵬行銷公司希望建立一套客戶管理系統,針對每位客戶登錄:身份證字號、姓名、性別、生日、購買商品、購買金額、電話與地址等 8 種資料。請規劃後編寫一簡單程式測試是否可行,期望操作介面如下:
(B)製作技巧提示: 如同範例 Ex9-1 一樣,基本資料還是繼承自 Personal 類別較為妥當,編制 Customer 類別的原始程式如下:
由 Customer 類別產生了 product、buying、addr 與 tel 等 4 個屬性,再繼承自 Personal 類別取出 SID、name、sex 與 birthDate 等 4 個屬性(如圖 9-6 所示),即可滿足展鵬公司的要求。
圖 9-6 Customer 類別產生 (C) 程式範例: 吾人可利用 Customer 類別宣告客戶物件,再依序輸入資料與輸出客戶所有資料,請參考 Ex9_1.java 範例製作本範例的主程式(PM9-1.java),本書不再贅言。
|
翻轉工作室:粘添壽
Java 程式設計(二) 含物件導向
翻轉電子書系列:
|