高考申論題
111年
[資訊處理] 程式設計
第 四 題
抽象(abstract)類別、介面(interface)、覆寫(override)方法、多載(overload)方法是物件導向程式設計實現多型(polymorphism)的方式。下圖是人事系統中人員基本資料維護的類別圖,請說明類別圖中的覆寫方法及多載方法名稱(須說明理由),並使用 C++, Java 或 Python 程式語言撰寫 Person 類別與 Police 類別的程式碼。Police 類別之 GetPersonalInformation 函數必須傳回身分證(id_no)、姓名(name)、職稱(rank),UpdateRoleTitle 函數必須完整實作更新 police_rank。(30 分)
[UML 類別圖描述:
Person 類別為 <>。屬性:# id_no : string, # name : string。方法:+ GetPersonalInformation() : string, + UpdateRoleTitle() : void。
Police 類別繼承 Person。屬性:- police_rank : PoliceRank。方法:+ Police(id : string, name : string), + GetPersonalInformation() : string, + UpdateRoleTitle(title : ?) : void。
PoliceRank 類別。屬性:+ code : string, + rank : string。方法:+ PoliceRank(code: string, rank : string)]
📝 此題為申論題
思路引導 VIP
首先透過 UML 類別圖分析父子類別之間的方法簽章(Method Signature),同名且參數相同者為覆寫(Override),同名但參數不同者為多載(Overload)。撰寫程式碼時,需注意抽象類別的屬性可見度(# 為 protected),子類別建構子需呼叫父類別建構子(如 Java 的 super),且在存取自訂類別屬性(如 police_rank)時應加入空值檢查以防執行時期例外(NullPointerException)。