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