我們編寫的程序由兩個主要方面組成
1 算法的集合就是將指令組織成程序來解決某個特定的問題
2 數據的集合算法在這些數據上操作以提供問題的解決方案
縱觀短暫的計算機發展史這兩個主要方面算法和數據一直保持不變發展演化的
是它們之間的關系就是所謂的程序設計方法programming paradigm
在過程化程序設計方法procedural programming 中一個問題可直接由一組算法來建
立模型例如公共圖書館的資料借閱/登記check out/check in 系統是由一系列過程表現
出來的其中兩個主要的過程是資料的借閱和登記這些數據被獨立存儲起來我們既可以
在某個全局位置上訪問這些數據或者把數據傳遞給過程以便它能夠訪問這些數據Fortran
C 和 Pascal 是三種著名的過程語言C++也支持過程化程序設計單獨的過程如check_in()
check_out() over_due() fine()等等都被稱為函數第三篇將集中討論C++對過程化程序
設計方法的支持尤其將重點討論函數函數模板和通用算法
在20 世紀70 年代程序設計的焦點從過程化程序設計方法轉移到了抽象數據類型
abstract data type 簡寫為ADT 的程序設計上現在通常稱之為基于對象(object based
的程序設計在基于對象的程序設計方法中我們通過一組數據抽象來建立問題的模型在
C++中我們把這些抽象稱為類class 例如在這種方法下圖書館資料借閱登記系統就
由類的對象實例比如書借閱者還書時間罰款等之間的相互作用表現出來以此表
示出圖書館的抽象概念與每個類相關的算法被稱為該類的公有接口public interface 數
據以私有形式被存儲在每個對象中對數據的訪問應與一般的程序代碼隔離開來CLU Ada
和Modula-2 是三種支持抽象數據類型的程序設計語言第四篇將說明和討論C++對抽象數據
類型程序設計方法的支持
面向對象的程序設計方法通過繼承inheritance 機制和動態綁定dynamic binding 機
制擴展了抽象數據類型繼承機制是對現有實現代碼的重用動態綁定是指對現有的公有接
口的重用以前獨立的類型現在有了類型/子類型的特定關系一本書一盒錄像帶一段錄
音甚至孩子的寵物盡管它們有各自的借閱/登記方式但都可以成為圖書館的收藏資料
共享的公有接口和私有的數據都放在一個抽象類圖書館資料LibraryMaterial 中每個特
殊的圖書館資料類都從LibraryMaterial 抽象類繼承共享的行為它們只需要提供與自身行為相
關的算法和數據Simula Smalltalk 和Java 是三種支持面向對象程序設計方法的著名語言
第五篇將集中討論C++對面向對象程序設計方法的支持
C++是一種支持多種程序設計方法的語言雖然我們主要把它當作面向對象的語言但
實際上它也提供對過程化的和基于對象的程序設計方法的支持這樣做的好處是對每個問題
都能夠提供最合適的解決方案事實上沒有一種程序設計方法能夠
標簽:
c++從入門到精通.pdf電子書 第二版
上傳時間:
2019-01-30
上傳用戶:jizhi111