1. 程式人生 > 其它 >第三次習題集總結

第三次習題集總結

OO第三次作業總結

在第三次的總體作業的當中主要就是對於Java進階性的學習總結,對於接觸Java語言由於段時間的我們來水,更好的鍛鍊我們的程式設計能力,是我們的程式設計能力大有提升,所作的題目的難度也更加大,使用的知識也是更加的後面知識也是越來越有趣。

在本次作業中,主要事幾個較為具有代表性的練習題目,更加的較為有效的訓練我們的掌握類的繼承、多型性使用方法以及介面的應用.對於繼承,多型,介面時未來在開發中最為常用的開發手段,這時程式碼專案跑起來很重要的程式設計基礎。

在這次是要涉及到習題7的兩個卡片遊戲,這兩個遊戲看上去十分相似,但在具體的細節處十分有講究,細節決定成敗,相比之後之後的第二個卡片遊戲顯然時更加的完美的,程式設計的風範也是更加的研究,程式碼的之間的耦合度簡單,擴張能力變強,符合開閉原則

而在題目集8,和題目集9中就涉及到對於銀行系統中的atm取款存款查詢餘額這一專案進行了改進。設計一個atm系統,著很好的更加的使封裝繼承多型的使用更加尤為的突出中重點。

主要只是點有:到了這裡不僅是有前面所學的知識使用,對於java面向物件中三大特點:封裝、繼承、多型的使用,這是非常重要的一點。因為再將來的開發當中就是圍繞這三個特別的重要的知識無限的使用。練習類的構造方法、方法的呼叫、引數傳遞、物件的構造與使用、練習迴圈結構、控制結構、練習資料的輸入與輸出;學習編寫結構清晰、邏輯正確、功能完善的java程式碼、對於java當中的基礎語法知識點進行錯誤探查,從而達到掌握好知識的水平

 本次作業分為以下部分,三次作業實現介紹(包括排程方法), 總結作業。

三次作業的實現

題目集7:

習題7-1 圖形卡片排序遊戲 (40 分)

題目詳細:

知識點:這一道題目主要使用的知識就是對於大量的集合資料資訊進行處理,而這一點再未來開發中也是極為重要的,原因:不管是在現實社會中還是再任何地方都是具有大量資料的,而且基本是型別的資料處理,在不同的輸入資料的形式,就有不同的方式區隊資料進行處理,而在對資料進行處理的時候就要知道這些資料是代表什麼意思,是以什麼形式存在是以什麼反射光hi進行儲存,資料之間有什麼聯絡,有什麼規律。在第一道題目中,就體現了這一點,需要使用集合來對域資料的分門別類進行儲存,在整理完資料之後就要進行特定的資料處理,處理之後要進特定的形式輸出。主要設計到:集合對資料的整理儲存的應用、條件語句的判斷。

詳細分析題解:本題是使用者輸入何種圖形卡片已經圖片對應的引數資訊,而我們就要對於資料的整理與處理,然後輸出對應的結果返回給使用者,在整理資料的時候要分門別類的整理對應的資料,處理資料的時候要按照不同卡牌的形態來處理資料。

踩坑心得:本次對於資料的整理中對於資料的分門別類沒有使用很好的容器進行整理,導致之後的對於結果的運算結構有著很大的偏差,而在這裡之後使用到了集合的儲存就大大的方便了資料的整理處理,分門別類。

改進建議:在對於題目之前要分析號編碼的過程,在具體的實踐中要整理好自己要涉及的知識點,使用更加便利進行編碼,在編碼中要設計號資料的儲存方式。

執行結果:

輸入:

輸出:

輸入:

輸出:

輸入:

輸出:

習題7-2 圖形卡片分組遊戲 (60 分)

題目詳細:

知識點:這裡與上面的分析基本一致,畢竟是統一到題目。

題目詳細分析:同上,主要進行改進的地方,就是對於資料輸出的處理有著不一樣的形式。對於資料的處理們這裡運用到了在集合中排序,也就是說對於資料的處理有著並不一樣的形式,這裡使用到了比較器的辦法,去處理資料,這個是知識點很重要,對於之後學習資料結構與演算法對於資料的處理會常用到。

執行結果:

輸入:

輸出:

輸入:

輸出:

輸入:

輸出:

輸入:

輸出

習題8:ATM機類結構設計(一) (100 分)題目詳細:

題目詳細分析:本題中就詳細的模擬了在銀行的atm機器的取款的過程,對於使用者需要持有合法的銀行卡號與對應的密碼方可在atm上進行取款,本題中為涉及到比較複雜的情況在,僅僅是設計一個程式完成在現有的銀行系統中合法使用者持有合法的證件號、密碼方可以在本銀行中進行取款的、存款、查詢餘額的操作,那麼這樣就簡單了,在本次題目中就要很好的對於銀行這個取款作業系統進行類設計了,將功能去確定好了之後就要進行詳細的設計。

首先:確定設計的類,銀行類、atm機器類、賬戶類、。並且atm類繼承了銀行是銀行的一個子類,詳細的類設計在這裡就不多說明,每個人有每個人的風格對於類設計的形式有著不同的見解,但是都是滿足一定的模式進行設計,大同小異。

其次:在類設計完之後就要確認類中有什麼屬性,有什麼方法來完成對應的功能,各種的方分模組的設計完成就要想想,在個個方法之間要如何進行排程來完成整個功能,模擬出atm取款的全部過程。

最後就是測似:先準備好資料,所有的使用者資訊應該是儲存在對應的銀行當中的,如果設計到了銀聯,那麼所有的使用者資訊應該在銀聯中生成,在銀聯當中統一排程,在這裡就沒有設計,而在第二類atm題目當中就滿足了這個設計,之後:使用者在atm機器之前輸入自己的銀行卡號與密碼進行登入驗證的操作,成功之後就可以做出相關的操作(取款、存款、查詢餘額)的操作,而在這裡就有不同的行為方式【這裡就設計到了具體的類設計、方法規範的問題】,在這裡我進行設計的是,所有的功能都歸於銀行系統,atm機器上只是一個簡單的操作頁面,具體是在銀行系統的後臺就進行資料的排程與修改,其實這裡如果在atm機器上直接進行相應的資料呼叫也是關係的【這裡主要考慮到不同的設計方式有不同的操作行為】,處理資料結束返回使用者所需要的資訊與結果。

踩坑心得:在這裡使用者輸入的資料是很多的,一次進行多次的操作,但實際上是分開來的,一次操作結束後再進行第二次的操作,但這裡使用者輸入的資訊是很複雜的,所以這裡就要對於資料進進行前期的處理,而我在這裡就是用到了集合來分開使用者來進行操作,將資料分割成每一個使用者,然後講這些資料封裝成一個使用者。然後對於集合是採用泛型的方式來完成儲存使用者,然後再遍歷集合對每一個使用者進行功能的操作與完成。再再剛開始沒有想到要如何將這些大批量的資料進行處理,之後想到了最常用處理資料儲存的手段,集合就是非長不錯的形式,對於資料結構的理解更加的好用,使用不同的資料儲存形式來對對於資料進行不同的處理。

改進建議:類設計其實可以更加的完整合理一點,但是由於經驗尚淺所以

執行結果:

輸入:

輸出:

輸入:

輸出:

輸入:

輸出:

習題9:ATM機類結構設計(二) (100 分)

題目詳細:

輸入格式:

每一行輸入一次業務操作,可以輸入多行,最終以字元#終止。具體每種業務操作輸入格式如下:

  • 取款功能輸入資料格式:卡號 密碼 ATM機編號 金額(由一個或多個空格分隔)
  • 查詢餘額功能輸入資料格式:卡號

輸出格式:

①輸入錯誤處理

  • 如果輸入卡號不存在,則輸出Sorry,this card does not exist.
  • 如果輸入ATM機編號不存在,則輸出Sorry,the ATM's id is wrong.
  • 如果輸入銀行卡密碼錯誤,則輸出Sorry,your password is wrong.
  • 如果輸入取款金額大於賬戶餘額,則輸出Sorry,your account balance is insufficient.

②取款業務輸出

輸出共兩行,格式分別為:

業務:取款 [使用者姓名][銀行名稱][ATM編號]上取款¥[金額]

當前餘額為¥[金額]

其中,[]說明括起來的部分為輸出屬性或變數,金額均保留兩位小數。

③查詢餘額業務輸出

業務:查詢餘額 ¥[金額]

金額保留兩位小數。

題目詳細分析:本題中就詳細的模擬了在銀行的atm機器的取款的過程,對於使用者需要持有合法的銀行卡號與對應的密碼方可在atm上進行取款,本題中為涉及到比較複雜的情況在,僅僅是設計一個程式完成在現有的銀行系統中合法使用者持有合法的證件號、密碼方可以在本銀行中進行取款的、存款、查詢餘額的操作,那麼這樣就簡單了,在本次題目中就要很好的對於銀行這個取款作業系統進行類設計了,將功能去確定好了之後就要進行詳細的設計。再第二個實驗中新增加了功能,更加完善了銀行系統的取錢操作,對於不同銀行之間是由區別的,增加了跨行取款的問題,以及信用卡透支的問題,那麼這裡就要對於方法判斷的條件進行修改了,而這裡對了實現檢測到是不是跨行的操作就提供了銀聯類,有著更加完備的資訊系統,進行條件判斷也有不同的方式,檢測使用者是否存在,檢測使用者當前選擇的atm機器是不是本銀行的,檢測使用者是不是本銀行的使用者們提供對應把不同的取款規則,判斷使用者是什麼卡型別,然後提供不同的取款規則。

最後就是測似:先準備好資料,所有的使用者資訊應該是儲存在對應的銀行當中的,如果設計到了銀聯,那麼所有的使用者資訊應該在銀聯中生成,在銀聯當中統一排程,在這裡就沒有設計,而在第二類atm題目當中就滿足了這個設計,之後:使用者在atm機器之前輸入自己的銀行卡號與密碼進行登入驗證的操作,成功之後就可以做出相關的操作(取款、存款、查詢餘額)的操作,而在這裡就有不同的行為方式【這裡就設計到了具體的類設計、方法規範的問題】,在這裡我進行設計的是,所有的功能都歸於銀行系統,atm機器上只是一個簡單的操作頁面,具體是在銀行系統的後臺就進行資料的排程與修改,其實這裡如果在atm機器上直接進行相應的資料呼叫也是關係的【這裡主要考慮到不同的設計方式有不同的操作行為】,處理資料結束返回使用者所需要的資訊與結果。

踩坑心得:本次在修改上一次地方法時候加上了新的類,來提供更加完備地作業系統。使用者根據自己的卡資訊在不同地銀行都可以進行相關地操作,但這裡對於我們要判斷的條件就更加的多了,出遊不同銀行的卡在不同的銀行進行取款操作有著不同的跨行手續費用的問題,以及對於信用卡使用者在透支的條件下又有著不一樣的取款手續費用的問題,所以這裡就又不同的規則所以加上的條件語句就很多,在這裡我就根據不同的條件下的情況分門別類的整理使用者型別與取款規則,然後在次呼叫不同的方法進行相應的取款服務,而並不是放在一個方法中進行一次性的取款操作,那樣就會有很多的條件判斷語句,而且這樣的話對於編碼的過程有著很嚴重的影響,耦合度就很高,在將來增加業務就需要修改很多的程式碼,程式碼的連動性就很高。

改進建議:使用開閉原則,增加方法,使用方法過載的機制,已經介面的呼叫,分好情況根據不同的型別來分配呼叫方法來完成功能。

執行結果:

輸入:

輸出:

輸入:

輸出:

輸入:

輸出:

輸入:

輸出: