Java實驗二實驗報告:java物件導向程式設計

來源:互聯網
上載者:User

標籤:

java實驗二實驗報告實驗內容1. 初步掌握單元測試和TDD2. 理解並掌握物件導向三要素:封裝、繼承、多態3. 初步掌握UML建模4. 熟悉S.O.L.I.D原則5. 瞭解設計模式實驗要求1.沒有Linux基礎的同學建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程2.完成實驗、撰寫實驗報告,實驗報告以部落格方式發表在部落格園,注意實驗報告重點是 運行結果,遇到的 問題(工具尋找,安裝,使用,程式的編輯,調試,運行等)、 解決辦法(空洞的方法如“查網路”、“問同學”、“看書”等一律得0分)以及 分析(從中可以得到什麼啟示,有什麼收穫,教訓等)。報告可以參考範飛龍老師的指導3. 嚴禁抄襲,有該行為者實驗成績歸零,並附加其他懲罰措施。4.  請大家先在實驗樓中的~/Code目錄中用自己的學號建立一個目錄,代碼和UML圖要放到這個目錄中,中沒有學號的會要求重做,然後跟著下面的步驟練習。實驗步驟(一)單元測試

      用程式解決問題時,學會寫三種碼:虛擬碼、產品代碼、測試代碼

 例:們要在一個MyUtil類中解決一個百分製成績轉成“優、良、中、及格、不及格”五級製成績的功能

       建立一個目錄:

    

   (1)虛擬碼:

百分制轉五分制:   如果成績小於60,轉成“不及格”   如果成績在60與70之間,轉成“及格”   如果成績在70與80之間,轉成“中等”   如果成績在80與90之間,轉成“良好”   如果成績在90與100之間,轉成“優秀”   其他,轉成“錯誤” (2)產品代碼:
(3)測試代碼:  

先寫測試代碼了。這種先寫測試代碼,然後再寫產品代碼的開發方法叫“測試驅動開發”(TDD)。TDD的一般步驟如下:

  • 明確當前要完成的功能,記錄成一個測試清單
  • 快速完成編寫針對此功能的測試案例
  • 測試代碼編譯不通過(沒產品代碼呢)
  • 編寫產品代碼
  • 測試通過
  • 對代碼進行重構,並保證測試通過(重構下次實驗練習)
  • 迴圈完成所有功能的開發

基於TDD,我們不會出現過度設計的情況,需求通過測試案例表達出來了,我們的產品代碼只要讓測試通過就可以了。 Java中有單元測試工具JUnit來輔助進行TDD,我們用TDD的方式把前面百分制轉五分制的例子重寫一次,

具體操作如:

 

二)物件導向三要素(1)抽象

抽象一詞的本意是指人在認識思維活動中對事物表象因素的捨棄和對本質因素的抽取。抽象是人類認識複雜事物和現象時經常使用的思維工具,抽象思維能力在程式設計中非常重要,"去粗取精、化繁為簡、由表及裡、異中求同"的抽象能力很大程度上決定了程式員的程式設計能力。 抽象就是抽出事物的本質特徵而暫時不考慮他們的細節。對於複雜系統問題人們藉助分層次抽象的方法進行問題求解;在抽象的最高層,可以使用問題環境的語言,以概括的方式敘述問題的解。在抽象的較低層,則採用過程化的方式進行描述。在描述問題解時,使用面向問題和面向實現的術語。 程式設計中,抽象包括兩個方面,一是過程抽象,二是資料抽象。

(2)封裝、繼承與多態

物件導向(Object-Oriented)的三要素包括:封裝、繼承、多態。物件導向的思想涉及到軟體開發的各個方面,如物件導向分析(OOA)、物件導向設計(OOD)、物件導向編程實現(OOP)。OOA根據抽象關鍵的問題域來分解系統,關注是什麼(what)。OOD是一種提供符號設計系統的物件導向的實現過程,用非常接近問題域術語的方法把系統構造成“現實世界”的對象,關注怎麼做(how),通過模型來實現功能規格。OOP則在設計的基礎上用程式設計語言(如Java)編碼。貫穿OOA、OOD和OOP的主線正是抽象。 OOD中建模會用圖形化的建模語言UML(Unified Modeling Language),UML是一種通用的建模語言,我們實驗中使用umbrello進行建模,Windows中推薦大家使用 StarUML。

過程抽象的結果是函數,資料抽象的結果是抽象資料類型(Abstract Data Type,ADT),類可以作具有繼承和多態機制的ADT。資料抽象才是OOP的核心和起源。

,封裝就是將資料與相關行為封裝在一起以實現資訊就隱藏。Java中用類進行封裝,

封裝實際上使用方法(method)將類的資料隱藏起來,控制使用者對類的修改和訪問資料的程度,從而帶來模組化(Modularity)資訊隱藏(Information hiding)的好處;介面(interface)是封裝的準確描述手段。 Dog類通過使用類和存取控制(private,public)隱藏了屬性color,開放了介面setColor(),getColor(),bark()toStringDog類是一個模組,我們可以通過下面的代碼使用它,測試代碼與運行結果如下:

用UML中的類圖來描述類繼承是實現軟體可重用的根基,是提高軟體系統的可擴充性與可維護性的主要途徑。 如上面所示,以封裝為基礎,繼承可以實現 代碼複用,需要注意的是,繼承更重要的作用是實現 多態。 物件導向中允許不同類的對象對同一訊息做出響應,即同一訊息可以根據發送對象的不同而採用多種不同的行為方式,我們稱此現象為多態性。Java中, 多態是指不同的類對象調用同一個簽名的成員方法時將執行不同代碼的現象。 多態是物件導向程式設計的靈活性和可擴充性的基礎。(三)設計模式初步(1)S.O.L.I.D原則

物件導向三要素是“封裝、繼承、多態”,任何物件導向程式設計語言都會在文法上支援這三要素。如何藉助抽象思維用好三要素特別是多態還是非常困難的,S.O.L.I.D類設計原則是一個很好的指導:

  • SRP(Single Responsibility Principle,單一職責原則)
  • OCP(Open-Closed Principle,開放-封閉原則)
  • LSP(Liskov Substitusion Principle,Liskov替換原則)
  • ISP(Interface Segregation Principle,介面分離原則)
  • DIP(Dependency Inversion Principle,依賴倒置原則)
  • (2)模式與設計模式

    模式是某外在環境(Context) 下﹐對特定問題(Problem)的慣用解決之道(Solution)。模式必須使得問題明晰,闡明為什麼用它來求解問題,以及在什麼情況下有用,什麼情況下不能起作用,每個模式因其重複性從而可被複用,本身有自己的名字,有可傳授性,能移植到不同情景下。模式可以看作對一個問題可複用的專家級解決方案。 電腦科學中有很多模式:

    • GRASP模式
    • 分析模式
    • 軟體體繫結構模式
    • 設計模式:建立型,結構型,行為型
    • 管理員模式: The Manager Pool 實現模式
    • 介面設計互動模式
  • (3)設計模式實樣本
    • attern name:描述模式,便於交流,存檔
    • Problem:描述何處應用該模式
    • Solution:描述一個設計的組成元素,不針對特例
    • Consequence:應用該模式的結果和權衡(trade-offs)
    • Java類庫中大量使用設計模式:

      • Factory:java.util.Calendar
      • Compsite:java.awt.Container
      • Decorator:java I/0
      • Iterator:java.util.Enumeration
      • Strategy:java.awt.LayoutManager(四)練習1使用TDD的方式設計關實現複數類Complex。
      • //虛擬碼 類有虛部實部 複數的加法運算 複數的減法運算 複數的乘法運算 複數的除法運算

        //產品代碼

      •  2.自己的PSP(Personal Software Process)時間
        步驟 耗時百分比
        需求分別析 10%
        設計 5%
        代碼實現 50%
        測試 20%
        分析總結 15%

         

        4.總結單元測試的好處
      • 單元測試可以讓我們複習前幾周學過的內容,加深印象,知道本章學習內容的使用方法,瞭解相關知識的應用方面。周而復始的複習前面學過的知識,可以讓我們學的更加牢固,學的更加紮實。堅持敲代碼,也會使我們的編程思維變得更加嚴謹,思維更加慎密。

        遇到的問題及解決方案

        1.eclipse敲代碼時,總會忘記打分號,或者忘記切換IME就打分號了。時刻提醒自己,認真編寫。

        2.設計複數類Complex虛擬碼時不知道該如何弄,查閱資料,自己理解後,嘗試編寫除了代碼。

        實驗收穫

        本次實驗讓我瞭解到想用程式解決實際問題時,最好寫出三種代碼:虛擬碼、產品代碼、測試代碼,這樣才能快速的寫出代碼,並且實用性強。

        單元測試讓我複習了學過的知識,加深了印象。希望以後能通過實驗瞭解更多運用java解決實際問題的方法,學好Java。

Java實驗二實驗報告:java物件導向程式設計

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.