面向對象課程總結

  十四次做業轉眼就過去了,面向對象這門課程也即將結束.本文即做爲對整個課程的總結與檢討.java

  老師從第一節課就開始強調,本門課程不叫作java程序設計,而是面向對象設計與構造.咱們所學的不只是java的語言特性,更重要的是透過這些語言特性反映出的面向對象的思想:抽象,繼承,封裝,多態性等.這些思想不依賴於語言而存在,即咱們的目標應該是,可以用java解決問題,同時若是給我一本c#或者c++的語法書的話,我很快地就能夠將用java解決的問題再用這兩種語言實現一遍.c++

面向對象的測試

  測試和正確性論證的優缺點.測試始終是找出程序問題的最直觀最重要的手段,即便咱們用正確性論證發現了程序的問題,一樣須要測試樣例將其復現出來.測試很直觀,很顯而易見地就能夠看到問題的發生.任何程序適用的輸入輸出均可以做爲測試.測試的問題在於基本沒法作到全面而有效的覆蓋,這是正確性論證大顯身手的時刻.編程

  正確性論證讓我想到了以前計算機組成課程上的一個名詞叫作形式驗證(Formal Verification)。 形式驗證的含義是根據某個或某些形式規範或屬性,使用數學的方法證實其正確性或非正確性。我以爲這兩個詞應該是計算機科學中至關同質的兩個詞.正確性論證能夠窮盡一切可能性,由於是經過分類和數學證實獲得的,在全面性方面賽過測試.c#

  正確性論證的缺點在於將問題的抽象和歸納對咱們的開發效率形成了很大的影響.想要論證結果的正確性必須保證論證過程的正確性.而論證過程所須要的時間和精力一點都不比咱們絞盡腦汁想到的不一樣分類的測試樣例須要的少.安全

  測試:多線程

  優勢:直觀,方便;測試

  缺點:構造的測試樣例很難作到全面.線程

  正確性論證:debug

  優勢:全面,保證正確性設計

  缺點:須要的前提條件多,繁瑣.

OCL語言和JSF的比較

  JSF是咱們後半部分課程中常常用到的用於程序規格化設計的規範化語言,而OCL咱們就相對比較陌生.OCL全稱是Object Constraint Language,即對象約束語言,是一種幫助UML更好的創建和描述抽象模型的,施加在指定的模型元素上約束的語言。

  OCL與JSF的相同之處在於都是嚴格的無二義的規範化語言,都包括類似的組成部分,前置條件,後置條件,不變式等等.並且都與具體的實現無關.

  不一樣之處在於OCL更復雜,具體一點,更接近程序的模型特徵.

電梯系統的模型

  類圖:

  

  時序圖:

學期總結:

  四個模塊之間的關係.

  第一個模塊毫無疑問是入門,創建面向對象編程思想的開始.我以前有過一些java的基礎還好,還記得第一次互測拿到的那個同窗的幾百行代碼的方法,雖然靠着大量的debug和精心設計也能正常運行.毫無疑問在可閱讀和可維護性方面差的太多了.而在以後碰到的互測做業,最起碼方法的劃分的進步仍是很明顯的.

  第二個模塊主要是多線程的介紹,與線程安全的實踐.這些是進行高級程序設計和工程化做品的一些基礎.爲了保證線程安全,必須對類的做用範圍和方法調用等知識瞭解的更加透徹.

  第三個模塊則是測試的入門.咱們以往的人工設計測試樣例顯然是沒法適應愈來愈複雜的功能的.

  第四個模塊告訴咱們怎麼設計更加規範,可維護,正確習慣的程序.

  一學期以來,在面向對象這方面的進步應該是很大的,老師頒發的金不換獎狀能夠做證.第三次的電梯模型拿到第十三次簡直沒眼看,迅速重構後,第十四次就能夠作到一句不改地進行正確性論證,也能夠充分地證實這一點.

  說實話,我感受本身進步最小的應該是測試能力,不過這個也沒法在短期內取得更快的進步.只能留待往後慢慢發展了.

對課程的建議:

  若是能夠每次做業結束以後公佈一些優秀做業就更好了.我感受每次做業都是本身在摸索和進步,沒有感受到你們是一個技術社區,相互促進的做用.即便是怕抄襲,也能夠在課程結束兩週後公佈,讓你們吸取優秀做業的特色.由於三次做業基本上是一個週期,就很難再抄襲了,可是一些優秀的特性卻不由於三次的間隔而褪色.但願老師和助教能夠考慮一下.

相關文章
相關標籤/搜索