程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 對C++特性說明介紹

對C++特性說明介紹

編輯:C++入門知識

作者從抽象的角度描述了程序設計語言的發展,匯編語言是對機器底層的抽象,過程語言是對匯編語言的抽象,這兩種語言都是用來描述機器的,而必須由程序員負責建立起問題空間和解空間之間聯系的橋梁。

於是人們試圖直接在機器上建立問題空間的模型,面向對象語言應運而生。面向對象語言用對象來模擬現實世界中的事物,於是它也就跟現實世界的事物一樣,擁有了它需要的各種特性。

在這個大背景下,對象必然擁有自己的類別,於是引入了class的概念。對象要跟外界交互,它的接口便是類的函數。為了控制類的創建者和類的使用者之間的聯系,提高模塊的獨立性,必要的封裝是少不了的。

實現代碼重用是編程界的重大問題。於是面向對象語言使用組合來重用類的實現,引入繼承來重用類的接口。而為了重用類的客戶代碼,多態就必不可少了。

談到對象,不免要談到它的創建和銷毀,以控制其生存期和存儲區。C++特性的設計目標是效率第一,它靈活多變但比較復雜的內存管理機制便顯得理所當然了。意外處理是實際項目中的大問題,標准C++特性在這方面做了大幅度的增強,在語言上保證錯誤將被處理並且可以恢復正常。

下面作者用很大的篇幅介紹了軟件分析和設計的過程。現成的方法都是為了最復雜的情況設計的,我們只需采用一小部分,夠用就行。總的來說,作者提倡盡快讓程序運行起來,通過簡要的分析。

把最重要的部分和風險比較大的部分優先考慮,盡早拿出一個測試版本。當然不是直接開始編碼,哪怕再簡單的分析也比直接開始編碼好得多。但不要過早陷入細節,分析不可能一步到位。

總有些因素要到編碼甚至測試階段才能發現。分析應該做到什麼程度呢,對於面向對象編程來說,就是要搞清有哪些對象,它們各有什麼接口,你可能需要更多的說明信息,但絕不能再少了。整個過程大概可以分衣五個步驟:

0.制訂計劃。直接開做也是一種計劃,但增加幾個裡程碑往往更能激勵程序員,也多了慶祝的機會。這裡用高度抽象的幾句話概括整個系統即可,以後覺得不夠准確可以改。

1.做什麼。即需求分析和系統規范說明。這些文檔通常要經過討論,所以越精簡越好。作者建議使用用例,一個用例揭示了系統的一個功能,包括它在各種情況下的反應。用例應該盡量簡單,以免過早被一些細節所困擾。接下來,就該制定時間進度表了,盡可能忠實地估算時間,乘以2再加上10%,基本上就可以很好地完成任務了。

2.怎麼做。作者建議使用CRC卡,用一張3乘5的卡片,記錄一個類的名字、功能及其交互。卡片空間有限,以免過早陷入細節,它讓你盡快對系統的全貌有一個初步的認識,也方便討論。你也可以使用UML。對象的設計一般分為五個階段:對象的發現、對象的組裝、對象的構造、系統的擴充和對象的重用。每個階段都可能出現新的類,所以不要奢望在這個階段就提出所有類。對象的開發原則是:一個類只解決一個問題,系統設計的主要任務就是實現需要的類,不要強求一步到位,盡早開始編程,盡量簡單。

3.創建內核。只實現讓系統運行起來的必要部分和風險比較大的部分,以盡早看到結果。

4.迭代用例。一次迭代增加一個用例,逐步完善。

5.進化。盡善盡美,以備後用。

各種分析和設計方法中最突出的就是極限編程了,很多方法都受它影響,它最重要的兩條是先寫測試和結對編程。先寫測試能強迫程序員給出完整清晰的類接口,還能在每次建立系統時自動測試。從檢測的觀點來看,程序設計語言的進步就是檢測的進步。

匯編語言只能檢查到語法錯誤,C++特性還能檢測一些語義上的錯誤,而面向對象編程語言對主義的檢查更為嚴格。盡管如此,有些錯誤還是只有運行的時候才能發現,這就需要我們加入一些測試代碼來保證程序的正確性。結對編程就是讓一個人寫代碼,另一個人考慮全局,一旦編碼無法進行下去,就可以交換過來,再不行還可以讓大家一起討論。

  1. C與C++中標准輸入實現方式上的一點區別
  2. C++編譯器如何對Const常量進行分配存儲空間
  3. C++類庫設計的基本構思與方法
  4. 玩轉C++語言的幾種方法
  5. 如何更好的進行C++代碼編制

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved