物件導向第一次部落格作業

2022-09-13 05:36:09 字數 2492 閱讀 7555

第一次作業由於對物件導向不太了解,只在主類中封裝了多項式,將其餘的部分都寫在了main函式中,顯得main函式十分臃腫,所以main函式超過範圍。

第二次作業我進行了一定的規劃,做了一定的設計,對各個類的任務進行了均衡,只有排程類的**量略多於其他幾個類。至於close函式,我是在每條請求執行之前滅掉應該滅的燈,即執行完了的請求,所以沒執行一條請求都會呼叫一次close函式,導致close函式超出範圍。

第三次作業在第二次作業的基礎上新增了新的功能,由於寫傻瓜電梯的時候沒有考慮擴充套件性,我對第二次**進行了一些修改,使得擴充套件性更好,以此為基礎進行擴充套件。第三次作業中仍然出現了超出範圍的函式,是因為我採用了遞迴呼叫的方法來尋找可捎帶的請求,導致尋找可捎帶請求的函式多次呼叫。

前幾次作業比較簡單,並且開學初期空閒時間較多,在**的構思、測試方面花的時間較多,在前三次作業的公測和互測**現了乙個bug。

(1)在第一次作業中,由於使用每個項的係數來記錄該指數是否出現過,沒有考慮到係數為0的情況,所以在係數為0的時候出現了指數重複的bug。由於第一次作業對於物件導向思想的不熟悉,分析過程是寫在main函式裡的,並且使用了字元機的方式分析;bug的主要原因是記錄的實現方法存在問題,與設計的結構沒有太大的關係。

(2)分析三次作業中設計結構的問題

第一次作業:由於對物件導向思想掌握不到位,僅封裝了多項式,將加減的過程作為方法;除此以外,使用了面向過程的思維,將分析輸入的過程寫在main函式中。由於第一次作業較為簡單,雖然**寫的十分繁瑣,但沒有出現太多的bug。

第二次作業:吸取第一次作業的教訓,第二作業做了一些簡單的規劃,按照老師的推薦規劃了每個類的屬性和方法。按照規劃來實現,但是在實現的過程還是避免不了面向過程的思維,例如,本應該將所有請求進隊,在進隊的過程中排除時序錯誤;但是我將判斷時序錯誤放在了出隊的時候,為了適應作業的要求,只好將一條請求進隊之後馬上出隊執行,將讀入和計算的過程摻雜起來,顯得很不協調。

第三次作業:第三次作業只需要在第二次作業的基礎上進行 修改即可,為了使第二次作業**現的面向過程思維不影響以後的作業,我對第二次作業的**進行了重構,並且修改了排程類中的排程函式,使得其擴充套件性更強。儘管如此,在第三次作業中還是遇到了不少問題,由於採用了捎帶排程策略,特殊情況十分之多,在測試的時候測出很多bug,有些bug在設計的時候並沒有考慮,所以打亂了原來的設計,在修改的時候將**改的很亂。

首先進行正常的功能測試,即按照錯誤分支樹設計簡單的輸入,來測試程式是否滿足作業所要求的所有功能。

這一過程僅僅測試了基本功能,如果對方認真對待了這次作業,這一過程一般不會測出bug。

其次需要讀懂**的體系結構,每個類有什麼屬性,每個方法有什麼功能,結合這些資訊以及**的整個流程來設定特殊的輸入測試bug。

在這一步驟,如果自己和別人實現的方式近乎相同,那麼則可以將自己在寫**的時候所想到的一些問題進行著重測試,但如果幾乎不一樣則需要重新考慮**會在哪一步驟出現問題。因為不同實現方式易出現bug的位置也不相同,所以根據實現方式來尋找bug更加合理,而不是異想天開,輸入一些自己認為很刁鑽的請求來測試。

這一過程主要測試**的設計和規劃,從設計方式和對方的考慮範圍來尋找bug,每個人的考慮都會有不周全的地方,並且每個人注意到的特殊輸入也不盡相同,所以在這一過程中,一般會找到一些自己考慮到了而對方沒有考慮到的東西。同時,在閱讀**的過程中,也會了解到對方設計的思路,以及寫**的方式,對自己寫**的水平也有提公升。

經過了三次作業,我了解到了封裝的重要性,以及物件導向的思維在程式設計過程中的重要性,同時我經歷了從面向過程到物件導向的過渡,從完全不懂物件導向到對物件導向思維有了一定的了解。

在設計方面,首先需要有乙個全面的規劃,對所有的類所包含的屬性和所包含的方法進行乙個全面的考慮,同時考慮類之間的互動,從而在寫**的時候游刃有餘,不會像第三次作業一樣,出現在測試的時候發現設計時沒有考慮到的情況,打破原有的設計,甚至有的bug在已有的**基礎上十分難修改,會完全打亂原有的設計,甚至需要重構。如果設計沒有很大的瑕疵,那麼測試僅僅會測出一些小bug,或者是寫**的時候出現的筆誤,或者只需要小修小補即可解決,便不會涉及架構的問題,使得**更易維護。

在bug方面,通過閱讀**很難發現bug,因為在閱讀自己**的時候會有慣性思維,因此應該通過各種測試來尋找bug,這個時候分支樹給我們提供了很好的思路,但是我們不能通過簡單的輸入來測試,分支樹僅僅是乙個大框架,我們我需要結合不同的分支來測試,例如第三次作業中的同質,將同質請求與分支樹的其他結點結合就會構造更加嚴格的測試案例,從而發現自己的bug。

物件導向第一次作業

1.編寫程式,從鍵盤輸入三個值,並列印其和 平均數 積 最小值和最大值。2.編寫乙個程式,計算0到10的平方和立方,並用製表符 t 列印值 3.編寫乙個程式,讀取五位整數並確定其是否為回文 4.peter minuit問題 1626年,荷屬美洲新尼德蘭省總督peter minuit花了大約24美元的...

物件導向第一次作業

首先是一些基本概念的宣告 三角函式sin x cos x 另外,本指導書範圍內所有的詞語 三角函式 除非特殊說明,否則一律包含且僅包含上述兩個函式 常數因子包含乙個帶符號整數,如 233。表示式因子將在表示式的相關設定中進行詳細介紹。不過,表示式因子不支援冪運算。巢狀因子本次作業將支援因子巢狀在三角...

部落格第一次作業

引導安裝作業系統部分以centos6.8 為例 主要是 設定root密碼,這裡密碼要記住 分盤這裡mount point boot file system type ext4 ext4 swap size 10240 200 2048 分盤目的是方便以後操作 二.獲取命令幫助 內部命令 在linux...