北京電子科技學院(BESTI)html
實 驗 報 告java
課程:Java程序設計 班級:1353 姓名:王劍橋 學號:20135316程序員
成績: 指導教師:婁嘉鵬 實驗日期:2015.5.6編程
實驗密級: 預習程度: 實驗時間:設計模式
儀器組次: 必修/選修:選修 實驗序號:2eclipse
實驗名稱: JAVA面向對象程序設計 編程語言
實驗目的與要求:函數
1. 初步掌握單元測試和TDD。工具
2.理解並掌握面向對象三要素:封裝、繼承、多態。單元測試
3.初步掌握UML建模。
4.熟悉S.O.L.I.D原則。
5.瞭解設計模式。
實驗儀器:
名稱 |
型號 |
數量 |
PC |
Lenovo |
1 |
虛擬機 |
實驗樓 |
1 |
1、實驗步驟
Java中有單元測試工具JUnit來輔助進行TDD,咱們用TDD的方式把前面百分制轉五分制的例子重寫一次,體會一下有測試工具支持的開發的好處。
打開Eclipse,單擊File->New->Java Project新建一個TDDDemo的Java項目,以下圖:
注意測試用例前必定要有註解@Test,測試用例方法名任意,代碼以下:
通過測試修改,最終結果以下:
以後增長測試異常狀況和測試邊界狀況代碼以下:
測試運行結果入下:
(二)面向對象三要素
(1)抽象
抽象一詞的本意是指人在認識思惟活動中對事物表象因素的捨棄和對本質因素的抽取。抽象是人類認識復瑣事物和現象時常用的思惟工具,抽象思惟能力在程序設計中很是重要,"去粗取精、化繁爲簡、由表及裏、異中求同"的抽象能力很大程度上決定了程序員的程序設計能力。
抽象就是抽出事物的本質特徵而暫時不考慮他們的細節。對於複雜系統問題人們藉助分層次抽象的方法進行問題求解;在抽象的最高層,可使用問題環境的語言,以歸納的方式敘述問題的解。在抽象的較低層,則採用過程化的方式進行描述。在描述問題解時,使用面向問題和麪向實現的術語。
程序設計中,抽象包括兩個方面,一是過程抽象,二是數據抽象。
面向對象(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的核心和起源。
面向對象三要素是「封裝、繼承、多態」,任何面向對象編程語言都會在語法上支持這三要素。如何藉助抽象思惟用好三要素特別是多態仍是很是困難的,S.O.L.I.D類設計原則是一個很好的指導:
OCP是OOD中最重要的一個原則,OCP的內容是:
對擴充開放(Open For Extension )要求軟件模塊的行爲必須是能夠擴充的,在應用需求改變或須要知足新的應用需求時,咱們要讓模塊以不一樣的方式工做; 對修改封閉(Closed for Modification )要求模塊的源代碼是不可改動的,任何人都不準修改已有模塊的源代碼。 基於OCP,利用面向對象中的多態性(Polymorphic),更靈活地處理變動擁抱變化,OCP能夠用如下手段實現:(1)抽象和繼承,(2)面向接口編程。
(四)練習
1、使用TDD的方式設計關實現複數類Complex。
(1)僞代碼
1,定義一個複數類,分別用變量表示覆數的實部和虛部。
2,經過複數類的實部和虛部分別相加減實現複數的相加減。
3,按照複數的格式將複數打印出來
(2)產品代碼
(3)測試代碼
2、遇到的問題及解決
一、在本次試驗中,基本掌握了TDD測試方法,因爲粗心,第一次實驗的時候在進行測試代碼編寫時忘記輸入@Test,致使實驗結果失敗,進過反覆查看老師代碼後成功找到錯誤所在解決了該問題;
二、在進行增長異常測試和測試邊界實驗環節中,最終以至不能達到老師所給的實驗結果,提示有錯誤,在仔細閱讀兩個java文件以及錯誤提示後,大膽的修改了老師的代碼,修改結果以下:
最終達到了測試經過的實驗目的。
三、總體實驗來看,操做相對不熟悉,通過屢次練習,提升了必定的熟練度,大膽嘗試着本身獨立操做,基本可以達到基礎的運行結果;
3、實驗收穫
在通過第一次使用實驗樓後,此次實驗對實驗樓有了必定的瞭解,操做起來相對沒那麼困難。基於老師詳細的步驟,可以成功的獲得實驗結果。在遇到問題的時候,根據eclipse的錯誤提示,知道該去哪裏找錯誤,通過仔細查閱代碼,獨立思考問題所在,大膽嘗試修改代碼,反覆屢次調試,最終達到實驗練習的題目要求。經過此次的實驗操做,學習到了TDD測試方法以及對面向對象的三要素,封裝,繼承,多態還有抽象等有了必定的瞭解和認識,彌補了知識的空白。最後又瞭解了SOLID設計原則,SRP(Single Responsibility Principle,單一職責原則)OCP(Open-Closed Principle,開放-封閉原則)LSP(Liskov Substitusion Principle,Liskov替換原則)ISP(Interface Segregation Principle,接口分離原則)DIP(Dependency Inversion Principle,依賴倒置原則)。此次試驗收穫頗多。