OOP第二次blog

搞笑的啊發表於2024-06-09

不知不覺過去了這麼久,又經歷了三輪的PTA作業,到了寫blog小結的時間,接下來給大家分析的第二次的PTA作業。

本次作業分為以下部分:

(1)總結三次題目集的知識點、題量、難度等情況。

(2)設計與分析:重點對題目的提交原始碼進行分析。

(3)採坑心得:對原始碼的提交過程中出現的問題及心得進行總結。

(4)改進建議:對相應題目的編碼改進給出自己的見解,做到可持續改進。

(5)總結:對本階段三次題目集的綜合性總結,學到了什麼,哪些地方需要進一步學習及研究。

前言:第一次的題目在之前的題目集上繼續迭代,變得更加複雜,第二次題目集是在第一次題目集結束後重新開始的題目,所以並不是很複雜,然後第三次題目集在第二次的題目集上迭代,也不算是很複雜。

一.三次作業的內容:

1.第一次作業的模擬場景:

1)多張試卷、多張答卷的資訊處理,
新增:輸入選擇題題目資訊,多選題輸出,多選題給分方式,輸入填空題資訊,填空題輸出,填空題給分方式,輸出順序變化,多張試卷資訊。
2)詳細內容:
輸入試題的資訊(編號、題目、標準答案)、試卷引用資訊(試卷號、引用的題目
號-分值)、答卷資訊(試卷號、答案)、學生資訊(學號、姓名)、刪除題目資訊(題
號)
輸出試題每一題的答題、判題資訊以及最後每一題的判分結果、總分。輸入中出現
各類錯誤時輸出對應錯誤資訊。

2. 第二次作業的模擬場景:

1)單個用電器與開關間的關係。
2)詳細內容:
輸入裝置的資訊(裝置標識,引腳編號),輸入連線資訊(引腳號),輸入控制裝置調節資訊(裝置標識,引腳編號)
按開關、分檔調速器、連續調速器、白熾燈、日光燈、吊扇的順序依次輸出所有裝置的狀態或引數。每個裝置一行。同類裝置按編號順序從小到大輸出。

3.第三次作業的模擬場景:

1)單個以及多個用電器與開關之間的關係。
新增內容:用電器有電阻,考慮並聯電路,風扇迭代落地扇。
2)輸入裝置的資訊(裝置標識,引腳編號),輸入連線資訊(引腳號),輸入控制裝置調節資訊(裝置標識,引腳編號),輸入串聯電路資訊(電路編號和連線資訊),輸入並聯電路資訊(電路編號,串聯電路信資訊)1.
按開關、分檔調速器、連續調速器、白熾燈、日光燈、吊扇、落地扇的順序依次輸出所有裝置的狀態或引數。每個裝置一行。同類裝置按編號順序從小到大輸出。

2.三次作業的設計與分析:

1.第一次作業:

1)題目類(Question):用於儲存一道題目的資訊以及處理的方法。(與系列 1 相同,無變化)

題目類(用於封裝單個題目的資訊):
屬性:題目編號、題目內容、標準答案-standardAnswer,題目對應的答案列表
方法:資料讀寫set\get方法、
判題方法(答案-answer):判斷答案-answer是否符合標準答案-standardAnswer;判斷是否為有效題目

2)試卷類(TestPaper):儲存和處理一張試卷的資訊以及處理的方法。

試卷類(用於封裝整套題目的資訊)
屬性:題目列表(題目類的物件集合)、題目數量,題目總分,試卷題號列表
方法:判題方法(題號-num、答案-answer):判斷答案-answer是否符合對應題號的題目標準答案-standardAnswer
儲存題目(題號-num、題目-question):將題目儲存到題目列表中,儲存位置與num要能對應;HashMap介面,key為題目編號,value為題目分值;題目總分值的計算。;獲得總分。

3)答卷類(AnswerPaper):儲存和處理一張答卷的資訊以及處理的方法。

答卷類(用於封裝答題資訊)
屬性:試卷(試卷類的物件)、答案列表(儲存每一題的答案),學生學號,答卷的試卷列表
方法:判題方法(題號-num):判斷答案列表中第num題的結果是否符合試卷中對應題號的題目標準答案,判斷答案順序是否與試卷答案相同。
輸出方法(題號-num):按照題目的格式要求,輸出題號為num的題目的內容和答題結果。
儲存一個答案(題號-num,答案-answer):儲存題號為num的題目的答題結果answer。

4)學生類(Student):儲存和處理一個學生的資訊

學生類(用與封裝學生資訊)
屬性:學生姓名,學生學號
方法:sette/getter方法

5)刪除類(Delete):儲存和處理一個刪除題目的資訊

刪除類(用於封裝刪除題目資訊)
屬性:刪除題目號
方法:setter/getter方法

6)試卷題目類(Question_Paper):用於儲存試卷中的題目資訊。由於試卷中的題目序號與題
目本身的題號不一致。且題目在不同試卷中的分值可能不一樣,因此,設計試卷題目類。

試卷類(用於封裝試卷題目資訊)
屬性:題目順序號,題目(題目類的物件),題目分值
方法:判斷題目是否得分。

7)答案類(Answer):用於儲存答卷中一道答案的資訊。

答案類(用於封裝答案資訊)
屬性:試卷題目(試卷題目類的物件),答案
方法:判斷每一道題的正確性,判斷每一道題的得分,計算總分,判斷答案對應的題目是否失效

8)合法類(Valid):用於判斷輸入是否合法

合法類:(用於封裝輸入資訊)
屬性:字串
方法:用正規表示式判斷輸入的資訊是否合法。

9)填空題類(Question_fill):儲存和處理填空題的資訊

填空題類:(用於封裝填空題資訊)
屬性:題目類
方法:判斷填空題是否得分,輸出填空題資訊。

10)選擇題類(Question_select):儲存和處理選擇題的資訊

選擇題類:(用於封裝選擇題資訊)
屬性:題目類
方法:判斷選擇題是否得分,輸出選擇題資訊。

這是前三次作業的迭代,在前三次作業上面新增了題目型別和給分方式記憶多張試卷資訊
這一次的作業我先設計好了類圖,然後根據類圖將一個個類完善好了,但是在輸入輸出的時候處理不好相關資訊。所以完成度不怎麼樣。

二.第二次作業:

1)裝置類(Device):儲存和處理裝置的資訊

裝置類:(用於封裝裝置資訊)
屬性:裝置標識,電壓
方法:計算電壓(電壓)

2)開關類(Switch):用於儲存和處理開關的資訊

開關類:(用於封裝開關資訊)
屬性:狀態
方法:計算電壓(電壓)

3)調節器類(Controller)

調節器類:(用於封裝調節器類資訊)
屬性:檔位,檔位引數
方法:輸出檔位(檔位),輸出檔位引數(檔位引數)

4)分檔調節器類(ContinueController)

加速調節器類:(用於封裝加速調節器資訊)
屬性:檔位
方法:加速(檔位+),減速(檔位-),計算電壓(電壓),輸出

5)連續調節器(SpeedController)

連續調節器類:(用於封裝連續調節器資訊)
屬性:檔位引數
方法:計算檔位引數(檔位引數),計算電壓(電壓),輸出

6)風扇類(Fan)

風扇類:(用於封裝風扇資訊)
屬性:調節器
方法:計算電壓(電壓),計算風扇速度(電壓),輸出

7)燈類(Light)

燈類:(用於封裝燈的資訊)
屬性:調節器,亮度
方法:計算電壓(電壓),計算亮度(電壓)

8)白熾燈(DayLight)

白熾燈類:(用於封裝白熾燈的資訊)
屬性:調節器,亮度
方法:計算電壓(電壓),計算亮度(電壓),輸出

9)日光燈(LightBulb)

日光燈類:(用於封裝日光燈的資訊)
屬性:調節器,亮度
方法:計算電壓(電壓),計算亮度(電壓),輸出

本次的作業相較於之前的難度有所降低,並且能夠理解題目所要求的內容。

3.第三次作業:

1)1)裝置類(Device):儲存和處理裝置的資訊

裝置類:(用於封裝裝置資訊)
屬性:裝置標識,電壓
方法:計算電壓(電壓)

2)開關類(Switch):用於儲存和處理開關的資訊

開關類:(用於封裝開關資訊)
屬性:狀態
方法:計算電壓(電壓)

3)調節器類(Controller)

調節器類:(用於封裝調節器類資訊)
屬性:檔位,檔位引數
方法:輸出檔位(檔位),輸出檔位引數(檔位引數)

4)分檔調節器類(ContinueController)

加速調節器類:(用於封裝加速調節器資訊)
屬性:檔位
方法:加速(檔位+),減速(檔位-),計算電壓(電壓),輸出

5)連續調節器(SpeedController)

連續調節器類:(用於封裝連續調節器資訊)
屬性:檔位引數
方法:計算檔位引數(檔位引數),計算電壓(電壓),輸出

6)風扇類(Fan)

風扇類:(用於封裝風扇資訊)
屬性:調節器
方法:計算電壓(電壓),計算風扇速度(電壓),輸出

7)燈類(Light)

燈類:(用於封裝燈的資訊)
屬性:調節器,亮度
方法:計算電壓(電壓),計算亮度(電壓)

8)白熾燈(DayLight)

白熾燈類:(用於封裝白熾燈的資訊)
屬性:調節器,亮度
方法:計算電壓(電壓),計算亮度(電壓),輸出

9)日光燈(LightBulb)

日光燈類:(用於封裝日光燈的資訊)
屬性:調節器,亮度
方法:計算電壓(電壓),計算亮度(電壓),輸出

10)電路方法(Load)

電路類:(用於封裝電路的資訊)
屬性:電路編號,連線資訊
方法:setter,getter

11)串聯電路類(LoneLoad)

串聯電路類:(用於封裝串聯電路的資訊)
屬性:電路編號,連線資訊
方法:setter,getter

12)並聯電路類(ConnetLoad)

並聯電路類:(用於封裝並聯電路類)
屬性:電路編號,串聯電路資訊
方法:

本次作業在上一次的作業上面迭代了線路中包含一個串聯電路,以及多了一個落地扇和電阻的相關內容。

三.踩坑心得

1.因為沒有先寫輸入輸出,而是先寫類,導致要寫方法時要在類裡面寫輸入輸出

2.正規表示式沒有正確使用,導致輸入時有問題

3.輸出時應該在類設計時新增方法,這樣會簡化且條理清晰

四.改進建議

1)要先做輸入輸出,然後再補全類
2)有些特定方法一定要用對,要不然會出很大的問題
3)程式碼類設計要合理,這樣可以省去一些重複和不必要的步驟

五.總結

這三次的作業考察的內容和之前的內容差不多,最主要的還是類的設計,當類設計做好之後,後續會變得簡單起來,只需要根據類來一步步補充就可以了。
這三次的作業完成度還是不高,害,感覺自己不是很適合學這個東西,對這個興趣也不是很高,但是還是要先把最基礎的掌握了,後面的在一步步來吧。