114-2 OOP B組 Week15 實習課練習 Problem1
Submit solution
Points:
100 (partial)
Time limit:
5.0s
Memory limit:
98M
Authors:
Problem type
Allowed languages
Java 19, Java 8
題目說明
請定義一個類別
Teacher,繼承Member類別。Teacher繼承自Member,除了擁有
Member的所有欄位之外,還需額外定義下列屬性:
| 屬性名稱 | 型態 | 說明 |
|---|---|---|
title |
String |
職稱,例如:助理教授、副教授,權限設為private |
salary |
int |
月薪(單位:元),權限設為private |
subjects |
ArrayList<String> |
該教師的開課科目清單,權限設為private |
實作方法:
無參數建構子:
- 呼叫父類別的無參數建構子。
- 將
subjects初始化為空的ArrayList<String>。
有參數建構子:
- 參數帶入所有屬性。
- 利用
super(...)將共用屬性傳給父類別處理。 - 將
subjects初始化為空的ArrayList<String>。
public void addSubject(String subject)- 如果帶入的
subject不存在於subjects中,則將subject加入subjects中。 - 如果帶入的
subject已經存在於subjects中,只要直接輸出錯誤資訊即可,不結束程式。- 例如
subject為計算機程式設計且已經存在於subjects中,則直接輸出:科目已存在: 計算機程式設計
- 例如
- 如果帶入的
public void removeSubject(String subject)- 如果帶入的
subject存在於subjects中,將subject從subjects中移除。 - 如果帶入的
subject不存在於subjects中,只要直接輸出錯誤資訊即可,不結束程式。- 例如
subject為計算機程式設計且不存在於subjects中,則直接輸出:科目不存在: 計算機程式設計
- 例如
- 如果帶入的
public String getSubjectListStr()- 回傳
String,將subjects中所有科目以頓號、串接,注意字串的最後一個字元不可以是、。 - 若
subjects為空,則回傳"尚無開課科目"。
- 回傳
覆寫 getInfo()- 利用
super.getInfo()取得父類別的基本屬性並在其後附加教師專屬屬性(職稱、月薪、開課科目)。 - 開課科目使用
getSubjectListStr()。 - 格式參考範例輸出。
- 方法開頭加上
@Override標註。
- 利用
範例程式碼:
import java.util.ArrayList;
import java.util.Scanner;
class Member {
protected String id;
protected String dept;
protected String name;
protected String email;
protected String phone;
public Member() {
}
public Member(String id, String dept, String name, String email, String phone) {
this.id = id;
this.dept = dept;
this.name = name;
this.email = email;
this.phone = phone;
}
public String getInfo() {
return "學號: " + id + "\n科系: " + dept + "\n姓名: " + name + "\n電子郵件: " + email + "\n電話: " + phone;
}
}
// 定義類別Teacher
public class test {
public static void main(String[] args) {
// 完成下方主程式要求
}
}主程式要求:
- 輸入三行字串。
- 第一行為老師的基本資訊,以一個空格
" "間隔,依序代表:id、dept、name、email、phone、title和salary。 - 第二行為老師要
新增的科目名稱(一個至多個),以一個空格" "間隔。 - 第三行為老師要
刪除的科目名稱(一個至多個),以一個空格" "間隔。 - 由類別
Teacher宣告一個老師物件teacher。 - 先將多個
要新增的科目名稱依序使用teacher.addaddSubject()操作。 - 再將多個
要新增的科目名稱依序使用teacher.removeSubject()操作。 - 最後印出
teacher.getInfo()。
範例輸入/輸出
範例輸入1
T001 資訊管理學系 王大明 wang@csim.edu.tw 0912-345-678 副教授 72000
資料結構 演算法 計算機組織
演算法
範例輸出1
學號: T001
科系: 資訊管理學系
姓名: 王大明
電子郵件: wang@csim.edu.tw
電話: 0912-345-678
職稱: 副教授
月薪: 72000
開課科目: 資料結構、計算機組織
範例輸入2
T002 電機工程學系 李靜宜 lee@ee.edu.tw 0922-111-222 教授 95000
電路學 電路學 電磁學 訊號與系統
訊號與系統
範例輸出2
科目已存在: 電路學
學號: T002
科系: 電機工程學系
姓名: 李靜宜
電子郵件: lee@ee.edu.tw
電話: 0922-111-222
職稱: 教授
月薪: 95000
開課科目: 電路學、電磁學
範例輸入3
T003 數學系 陳俊豪 chen@math.edu.tw 0933-444-555 助理教授 58000
微積分 線性代數
統計學
範例輸出3
科目不存在: 統計學
學號: T003
科系: 數學系
姓名: 陳俊豪
電子郵件: chen@math.edu.tw
電話: 0933-444-555
職稱: 助理教授
月薪: 58000
開課科目: 微積分、線性代數
範例輸入4
T004 物理學系 林美惠 lin@phys.edu.tw 0944-666-777 講師 45000
普通物理 量子力學
普通物理 量子力學
範例輸出4
學號: T004
科系: 物理學系
姓名: 林美惠
電子郵件: lin@phys.edu.tw
電話: 0944-666-777
職稱: 講師
月薪: 45000
開課科目: 尚無開課科目
範例輸入5
T005 化學系 張世偉 chang@chem.edu.tw 0955-888-999 副教授 68000
有機化學 有機化學 無機化學 分析化學
有機化學 熱力學 分析化學
範例輸出5
科目已存在: 有機化學
科目不存在: 熱力學
學號: T005
科系: 化學系
姓名: 張世偉
電子郵件: chang@chem.edu.tw
電話: 0955-888-999
職稱: 副教授
月薪: 68000
開課科目: 無機化學
範例輸入6
T006 外文學系 吳雅婷 wu@foreign.edu.tw 0966-000-111 教授 88000
英語寫作
日語會話
範例輸出6
科目不存在: 日語會話
學號: T006
科系: 外文學系
姓名: 吳雅婷
電子郵件: wu@foreign.edu.tw
電話: 0966-000-111
職稱: 教授
月薪: 88000
開課科目: 英語寫作
Comments