第三單元作業總結

来源:https://www.cnblogs.com/yakan2333/archive/2020/06/09/13072504.html
-Advertisement-
Play Games

1.前言 這應該是本學期最後一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得瞭如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業過程總結 相比前兩個單元,此單 ...


  1.前言

這應該是本學期最後一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得瞭如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。

 

  2.作業過程總結

相比前兩個單元,此單元的三次作業每次作業只有一道題。做題目沒有了像之前那樣的優先順序,而是全程專註一道題。作業九則是通過雨刷程式功能擴展設計考察對類的封裝、繼承、多態的掌握度,作業十是通過 統計Java程式中關鍵詞的出現次數考察對工具類List、Set或Map的掌握程度,作業十一則是設計表達式求值的程式,考察對棧的使用,並檢驗自己之前對正則表達式的掌握程度。總的來說,三次作業考察的重點是併列的,但都需要有之前學到的基礎知識。通過這幾次作業,對面向對象以及其基本原則有了更深的理解。

作業九剛開始看題目的時候感覺整體不難,但是仔細一想,需要在繼承與組合的方法之間斟酌,是自己寫出的程式能夠使得程式在符合單一職責原則、迪米特法則、合成復用原則的基礎上具有良好的擴展性(開-閉原則)、里氏代換原則、介面隔離原則及依賴 倒轉原則。將題目寫出來問題不大,但是如何使代碼實現要求很難。我開始使用了繼承的方法,但是因為子類要實現父類的方法,使得代碼寫到很長。我開始嘗試去網上找一些例題,查找了一些組合的方法來解決問題。

作業十給人一種很簡單的感覺,但實際卻不簡單,剛開始做的時候覺得這是到用正則表達式匹配,然後返回匹配正確次數的題目。但開始寫主函數代碼的時候,就碰到了問題。如何輸入數據呢?是一行一行輸還是整體用一個StringBuilder類型的參數將整體接收呢?如何判斷輸入的數據是否為源代碼呢,遇到多行註釋該如何跳過呢?諸如此類的很多問題,這個題目在細節上處理很麻煩。第一次的時候是直接用一個StringBuilder類型的參數將整體接收,發現在遇到單行註釋的時候很難講數據處理,就改為了一行一行輸入,併在每行結尾加上換行符作為每一行結束的標誌,通過換行符將數據切割成字元串數組,對每個字元串進行正則匹配,在每一行遇到單行換行符後直接跳過字元串後面的數據轉而匹配下一行的數據,在遇到多行註釋時,同理跳過知道遇到下一個註釋符是繼續匹配。因為TreeMap可以自動排序,所以選擇TreeMap來裝載得到的數據。因為53個關鍵詞是不重覆的,而關鍵詞出現的次數是可以重覆的,所以關鍵詞為key,出現的次數對應value。本題存在疏漏,即題目測試未給出題目所測的53個關鍵字是以什麼來排序的。而是叫我們去網上找,但是網上找的53個關鍵字的先後順序是不一樣的,我開始以為是按拼音來排序的,不管怎麼做,正確的測試點只能過一個。看到有網站上寫到53個字也是按拼音排的,唯一不同的是它將null放在了末尾,後來我嘗試按這種方法排序,結果大部分測試點都過了。最後一個測試點過不了,至少我到最後都不知道最後一個測試點測的是什麼數據。

作業十一的表達式求值,則需要用到自己完全沒有接觸過的知識,棧。開始基本上完全不知道棧是如何使用的,學著網上的一些例題和相關資料才有了一個大致的輪廓。大致思路是通過用一個棧來裝數字,一個棧用來裝符號,通過設定符號的優先順序,來對數據進行計算。大致思路是將輸入的字元串傳入到一個字元數組中去,然後對字元數組遍歷,用準備好的兩個棧,分別來裝載數字和字元,當輸入比之前字元優先順序的字元時,對之前的數據進行計算。開始經過測試的時候發現輸入帶括弧的數據時很容易出錯。通過設置一個條件語句,判斷是否掃描到括弧,若出現右括弧,則從後往前計算,並不斷刪除已使用的符號,直到遇到左括弧為止。此題考慮數據錯誤的情況有很多,需要逐一判斷,總體上花了不少時間。

本單元的三次作業在大體上花的時間大概差不多,按順序來三次作業大概花3:3:4的時間,總體上3次作業難度上總體難度相差不大。但是實際花的總時間應該能更短。每次拿到題目,一上來就是想到什麼寫什麼,很容易卡殼。經過這幾次的作業,我更加深入的理解面向對象的理念。在拿到一個題目時,應該先找出其中有哪些對象,然後通過一些方法將它們之間聯繫起來,形成一個大致的輪廓,同時也便於之後對疏漏的方法進行補充、對代碼進行擴充。而不是想到什麼寫什麼,這樣到後面很容易出現自己用到的一大串的方法可能到後面用不上或者會影響代碼的可拓展性而不得不捨棄。在添加新的方法時,應該考慮會不會影響代碼的可擴展性和復用性,這樣能夠為之後增加新方法省下不少時間。

 

  3.OO設計心得

①里氏替換原則:通俗的來講就是:子類可以擴展父類的功能,但不能改變父類原有的功能。在寫代碼時,經常會設計介面或抽象類,然後由子類來實現抽象方法,其中子類可以實現父類的抽象方法也必須完全實現父類的抽象方法,否則編譯器就會報錯。關鍵點在於子類不能覆蓋父類的非抽象方法。如果子類對這些非抽象方法任意修改,就會對整個繼承體系造成破壞。而里氏替換原則就是表達了這一層含義。在繼承父類屬性和方法的同時,每個子類也都可以有自己的個性,在父類的基礎上擴展自己的功能。當功能擴展時,子類儘量不要重寫父類的方法,而是另寫一個方法。

②依賴倒置原則:依賴倒置原則的包含如下的三層含義:高層模塊不應該依賴低層模塊,兩者都應該依賴其抽象,抽象不應該依賴細節,細節應該依賴抽象。打個比方奶茶店賣各種各樣的奶茶,奶茶店就是高層模塊,各種各樣味道的奶茶就是低層模塊。當我們想到奶茶這個名詞時,我們會想到,奶茶店賣奶茶,奶茶有冰鎮奶茶,酸奶等這類具體的東西。奶茶就好比一個由各種各樣奶茶共用的介面,而奶茶店也依賴奶茶這個抽象類。

③介面隔離原則:通俗來理解就是,不要在一個介面裡面放很多的方法,這樣會顯得這個類很臃腫不堪,而且後續維護與擴展也十分麻煩。介面儘量細化,一個介面對應一個功能模塊,同時介面裡面的方法應該儘可能的少,使介面更加輕便靈活。

 ④類設計心得:在拿到題目後,應先找出題目中的對象,通過構造方法使他們之間產生聯繫,一開始就要構造一個大致框架,把幾個大模塊設計成類,遵循單一職責原則和合成復用原則,並註意考慮其可擴展性和復用性,多使用介面、抽象類、多態等技術來設計類。儘量使用組合而不是繼承。類與類之間可通過關聯,聚合,依賴等關係來實現代碼的復用,從而提高功能執行的效率。

  4.測試的理解與實踐

 測試對於編碼質量的重要性:測試能夠極大的減少代碼的錯誤以及漏洞,同時它還能夠提醒寫代碼的人對運行時間過長冗雜的部分進行方法的改進。只要是提交的代碼便會有錯誤的可能,而測試正是減少這些錯誤的最好的工具。測試還能夠檢測代碼的效率,是否存在冗長多餘的部分,通過測試可以提高代碼的質量。

只有不斷的練習,才能熟能生巧。通過練習,才能真正的將所學的知識運用起來,才能更加深入的理解,更好的掌握新知識。

  5.課程收穫

通過本單元的學習,我對類的封裝、繼承、多態,抽象類,介面的使用有了更深刻的認識,基本上已經能過熟練使用。加強了我對工具類List、Set或Map的認識,學會使用棧來解決題目。通過這幾次作業,我認識到自己的不足,更能深刻體會學無止境這一道理,只有通過不斷地學習,懂得東西才會更多,只有多動手,才能更加清楚發現自己的問題所在,加油。

 

  6.對課程的建議

每次的作業總是和上課所學的知識不能緊密聯繫,上課所講的進度每次都要比作業超前,以至於每次做實驗時都要重新撿起以前的知識,這樣要花費更多的時間。希望以後講課能對標上作業,也希望老師可以帶領我們多多練習,讓學生也能看看老師是如何解題的。

 


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

-Advertisement-
Play Games
更多相關文章
  • 坐標珠海,前端程式媛一枚 實習時候做的是測試,2.5k+600餐補; 後來覺得對前端更有興趣所以重新找工作,但是苦於沒有經驗,畢業第一年在一個傳統行業的公司找到了一個前端崗位,薪酬4k,公司主要是接政府項目,伺候甲方爸爸。 前端崗位歸在產品組,實際做的是產品經理+UI+交互+代碼 產品組長/真 · ...
  • 先說一下現在公司企業招聘前端開發人員需要掌握哪些技術要求 目前企業招聘前端工程師的基本需求: 1.精通DIV+CSS網頁框架佈局的HTML代碼編寫,熟悉W3C標準; 2、使用HTML5/CSS3熟練地進行頁面開發; 3.具備良好的前端架構分析能力與設計能力,與開發團隊保持良好溝通; 4.精通各主流瀏 ...
  • Vue Axios 封裝 定義 Axios 是一個基於 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中。 特性 支持Promise API 攔截請求和響應 轉換請求數據和響應數據 自動轉換JSON數據 客戶端支持 XRSF 回歸正題 在Vue 項目開發中,我們與介面打交道最多 ...
  • 訪問谷歌頁面,商店應用等 1.下載鏈接:https://pan.baidu.com/s/1yt0PGLpQkQIE5FYXA4v7yA提取碼:kqp2 2.安裝將 crx 尾碼改成 rar 尾碼,然後解壓 3.添加擴展程式 4.完成安裝 提示需要激活,否則只有12小時免費 5、點擊永久免費激活 要想 ...
  • 前言 本文旨在理一下vue中diff演算法的主要邏輯和關鍵細節。 從一個簡單的demo切入: p標簽渲染一個items數組 <div id="demo"> <p v-for="item in items" :key="item">{{ item }}</p> </div> <script src=". ...
  • 前言 有一個問題, 給定一個物體的運動軌跡, 包含時間和坐標的數組, 如何使用這個數據來預測物體未來的運動走勢?? 本文提供了一個很簡單的方式去實現這個演算法. 效果夠用, 又簡單, 有一定的準確程度. 緣由 以前做過的一些手機應用, 沒有做動畫的 , 也沒做手勢. 這個做起來挺麻煩的. 最近開始了新 ...
  • 雖然Vue 3還沒有正式發佈,但是熱愛新技術的我早已按捺不住自己的內心,開始嘗試在小項目中使用它了。 1.根據這篇《今日凌晨Vue3 beta版震撼發佈,竟然公開支持腳手架項目!》我搭建了一個Vue 3的腳手架項目,用這種方式搭建的腳手架項目不僅僅只有vue是新版的,就連vue-router、vue ...
  • 1.1什麼是數據結構? 官方解釋: 數據結構是一門研究非數值計算的程式設計問題中的操作對象,以及他們之間的關係和操作等相關問題的學科。 大白話 : 數據結構就是把數據元素按照一定的關係組織起來的集合,用來組織和存儲數據 1.2數據結構分類? 傳統上。我們可以把數據結構分為邏輯結構和物理結構兩大類。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...