Java第二階段學習總結

来源:https://www.cnblogs.com/yuan0512/archive/2020/04/30/12809908.html
-Advertisement-
Play Games

0. 前言 這段時間完成了第二階段的Java作業練習,第一階段是入手,那麼這個階段則是這之後的學習打基礎;這幾次作業主要是加強我們對面向對象的封裝性、繼承性、多態性特征的理解,下麵是我對此次作業的總結分析。 1.作業過程總結 (1) 三次作業之間的知識迭代關係 第4次作業涉及數據檢驗及處理,類的繼承 ...


0.  前言

  這段時間完成了第二階段的Java作業練習,第一階段是入手,那麼這個階段則是這之後的學習打基礎;這幾次作業主要是加強我們對面向對象的封裝性、繼承性、多態性特征的理解,下麵是我對此次作業的總結分析。

 

 1.作業過程總結

 

(1)   三次作業之間的知識迭代關係

  第4次作業涉及數據檢驗及處理,類的繼承。要求我們依題設計正確的正則匹配,實現多種數據格式的檢驗及處理,還有就是理解繼承特性。

  第5次作業是在作業4的鋪墊下,讓我們加強理解類的繼承、多態性;第6次作業相對於前兩次來說,更加簡單,也是在前者的練習過後,更加理解了類的多態使用方法,而且這次作業還加入了介面的應用,讓程式處理更加多樣了。

(2)   通過作業逐步理解面向對象的封裝性、繼承性、多態性特征

  作業不會刻意的說用到這幾個特征,但代碼實現上就會反映出這些特征,這也是面向對象編程的重要體現。理解見下文中的對這三個特性的理解。

(3)   作業過程中遇到的問題及解決方法

  ①作業4中題一對輸入的數據進行有效性校驗要求較高,因此在應對數據的格式測試上挺讓人頭疼的。具體如下:

   

  既然有這麼多種不同的格式,這就需要不斷地細分,對一條信息進行數據校驗、對各種不同數據進行校驗、對不同數據的不同格式進行校驗……具體的實現就不一一羅列了,總之就是不斷地切分功能,最後整合到一起。

  ②作業5題二、使用類的繼承、多態性編寫程式對簡單多項式的導函數進行求解中。同樣是在輸入輸出的格式上花費了不少功夫。

  

  在處理格式時,我的處理方法是這樣的:先將輸入的多項式以“+”分割成一個個單項,在每個單項進行格式匹配,若匹配成功則進行求導處理,當然得到的還是一個個單項,當所有單項都處理好了之後,將單項串成一個完整的表達式。這隻是概要的思路,具體實現還是挺困難的。

 

  ③作業6相對比較簡單,無非就是設計對象的實現,以及輸出的格式問題,這些問題解決起來還是比較輕鬆的。

(4)   三次作業花費的時間比例

  (花費時間為實際寫代碼所用時間)對於這三次作業,也許是難度有所加大,所花時間遠比階段一作業多:作業4所用時間大概是10小時、作業5所用時間大概是7小時、作業6所用時間大概是5小時,前後比例為10:7:5 。

(5)   對編程過程的嚴謹性的認識及教訓。

  數據的格式是十分嚴謹的,對於不同的需求,我們應該能靈活地做出應對,這也就要求我們在編程時多多思考,考慮到儘可能多的情況。在寫一個程式時,多多加上一些註釋,也是為之後的檢查及修改提供方便。

 

2.OO設計心得

(1)     面向對象三大技術特性之間關係的理解

  三大特性:封裝性、繼承性、多態性。

  ①所謂封裝,就是把客觀事物封裝成抽象的類,類中的私有屬性和方法是無法被訪問的,表現了封裝的隱藏性,增加數據的安全性。簡單來說,一個類就是一個封裝了特定屬性及方法的邏輯實體。依據某個類創建的對象對其內部屬性及方法實行不同程度的保護,根據需要來使用對象中的各屬性及方法。

  ②所謂繼承,就是讓某個類獲得另一個類或多個類的屬性。子類繼承父類。實現了繼承之後,子類就可以使用繼承來的所用方法,同時可以依據需要重寫從父類繼承來的方法。實現繼承大多通過組合來實現,其中有實現繼承以及介面繼承,在這幾次作業中,我們就用到了這兩種繼承方式。

  ③所謂多態,是指不同的對象,接收到不同的消息會有不同的行為,就像不同的人聽到一件相同的事所做的反應都是不同的。同一個類表現出不同的狀態,也就是說一個類具備了多種形態。

  繼承與封裝,一個讓類有了通用、靈活、獨立的效果,一個讓類與類之間有了直接的聯繫,這也就為多態打下了基礎。把不同的子類對象都當做父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適用需求不斷變化。

(2)     面向對象設計的基本原則理解(單一職責原則、“開閉”原則)

  之前不太瞭解這些基本原則,但經過這幾次的作業練習以後,有了更多的理解: ①單一功能原則,即一個對象只有一個功能,專註一個功能。這樣的話,如果需求有了改變,只需對該對象所對應的類進行修改,而且這樣不會影響到其他的功能,就是實現功能單一 ②開放封閉原則,即一個類寫好了,在更改性方面是封閉的,不改變原本的功能;在擴展性方面是開放的,能夠實現新功能的添加。③此外還有以下基本原則:依賴倒置原則,介面分離原則,里氏替換原則。其中,介面分離原則要求各個模塊之間通過抽象的介面分隔開;簡單來說,就是實現你需要用到哪些方法就調用哪些方法,屏蔽掉不需要的方法,同時也防止實施調用的對象訪問了不該訪問的方法。

(3)     OO編程思維的理解

  在面向對象編程過程中都以對象為主,即把問題的某些內容抽象為某個對象,然後創建出具有屬性和方法的類,依據類中的屬性和方法之間的各類關係來實現各種功能,在不同情況下實現各種調用。這種將抽象出對象對應實際問題的某些內容的思維,對於以後的軟體開發的可維護性、可擴展性以及可復用性等都是有極大的好處的。

 

 3.測試的理解與實踐

(1)     測試對編碼質量的重要性

  測試對於編碼質量很重要,因為在投入使用前,我們對它的細節要求並不是很清楚,就像作業中所給出的測試點經常要多次調試才能過。而測試則可以讓我們對代碼進行全面檢查,一步一步完善每個功能,實現編碼的高質量。

(2)     使用Junit進行程式的測試分析

  Junit是一個Java語言的單元測試框架,Junit測試是程式員測試,即所謂白盒測試,因為程式員知道被測試的軟體如何(How)完成功能和完成什麼樣(What)的功能。我們在編程時使用Junit寫一些適當的測試是有必要的,Junit有斷言功能,如果測試結果不通過會告訴我們哪裡測試不通過,如果Junit報告了測試沒有成功,它會區分失敗(failures)和錯誤(errors),在此基礎上進行修改,這大大提高了效率。

  在實踐中,編寫測試代碼會使我們的壓力逐漸減輕,因為通過編寫測試代碼,我們也能對類的行為有更確切的認識。以下是我認為比較有必要掌握的技巧:①確保測試與時間無關,不要依賴使用過期的數據進行測試。②儘可能地使用Junit提供的assert/fail方法以及異常處理的方法,利用Junit 的自動異常處理書寫簡潔的測試代碼可以使代碼更為簡潔。③測試類和測試方法應該有一致的命名方案。如在工作類名前加上test從而形成測試類名。④測試要儘可能地小,執行速度快。

 

 4.  課程收穫

  通過這四周的學習,在OO方面,以及漸漸養成了面向對象的編程思維,解決一個問題時,慢慢習慣去實現一個個模塊化的功能,估計這就是封裝吧,同時做了這麼多的練習,對於三大特性已經慢慢地體現在了代碼中。

  此外,這幾次的作業做下來還是覺得挺吃力的,還是得多多練習,把基礎打牢靠。

 

5.之後一段時間的學習計劃

  結束了第二階段的學習,在之後的學習中,多多練習寫代碼,同時由於下一階段更考驗每個人對於類的設計,這就需要在類的設計上多花心思,需要更加針對性地學習。希望能和同學多多交流與探討。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Response對象 功能:設置響應消息 1. 設置響應行 1. 格式:HTTP/1.1 200 ok 2. 設置狀態碼:setStatus(int sc) 2. 設置響應頭:setHeader(String name,String value) 3. 設置響應體 使用步驟 1. 獲取輸出流 字元輸 ...
  • 什麼是函數重載?簡單的理解,支持多個同名函數的定義,只是參數的個數或者類型不同,在調用的時候,解釋器會根據參數的個數或者類型,調用相應的函數。 重載這個特性在很多語言中都有實現,比如 C++、Java 等,而 Python 並不支持。這篇文章呢,通過一些小技巧,可以讓 Python 支持類似的功能。 ...
  • 最近Switch上的《動物森友會》可謂是炙手可熱,它幾乎算是任天堂版的《模擬人生》了,它的最新游戲《集合啦!動物森友會》(以下稱“動森”)在發售後,取得了不錯的媒體評價和首發成績。 動森火起來有大部分原因是因為它的細節做的很到位,例如最受好評的:玩家可以自己手工DIY。(說實話,如果不是動森,我的N ...
  • Composer 使用不同的技術和標準簡化了類的自動載入。當今最常見的自動載入標準是 PSR-4: "autoload": { "psr-4": { "App\\": "src/" } } 這將使用帶有 “App” 名稱空間首碼的 PSR-4 標准將 src 文件夾中的所有類自動載入。但是,我們如何 ...
  • 前言 最近娛樂圈可以說得上是熱鬧非凡,前有霸道總裁愛小三,正宮撕逼網紅女,後有陽光大男孩羅志祥,被周揚青扒的名聲掃地。貴圈的愛情故事,常人是難以理解的,正如賈旭明張康這段相聲所說的這樣,娛樂圈的愛情總是分分合合,成為老百姓茶餘飯後的談資,城外的人想進去,城裡的人真會玩。 各種版本的洗白、謠言遍地亂飛 ...
  • 歸併排序 歸併排序演算法的核心就是 “歸併”,將兩個有序的數列合併,形成更大的有序數組。 歸併排序的原理 上面說了,歸併排序的核心就是“歸併”。如果排序一個數組,那麼將數組從中間分成前後兩部分,對前後兩部分分別進行排序,然後再將排序好的合併在一起,那麼這樣整個數組就會成為更大的有序數組。例如下麵示圖: ...
  • Python對List的排序主要有兩種方法:一種是用sorted()函數,這種函數要求用一個變數接收排序的結果,才能實現排序;另一種是用List自帶的sort()函數,這種方法不需要用一個變數接收排序的結果.這兩種方法的參數都差不多,都有key和reverse兩個參數,sorted()多了一個排序對 ...
  • 棧長在之前的文章分享過關於 Spring Boot 打包運行的兩篇文章: "運行 Spring Boot 應用的 3 種方式" "Spring Boot 怎麼打一個可執行 Jar 包?" 不過一直沒機會對 Spring Boot Maven 插件做詳細介紹。 Spring Boot 對 Maven ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...