計算機概論:C/C++程式設計
|
第8章 C++物件導向程式設計 |
|
|
授課教師:陳慶瀚 WWW : http://www.miat.ee.isu.edu.tw/cpp E-mail : pierre@isu.edu.tw |
|
設計程式的目的是什麼?當然是為了解決問題(problem solving)。解決相同一個問題的方法可能很多,從第1章到第7章,我們解決問題的方法都是建立一種線性的解題流程,流程中我們隨時會嵌入一些我們所需要的資料變數(第2章、第5章)、流程控制(第3章、第4章),或者把一個較大的問題切割成較小的問題予以解決後再將它插入流程中(第6章)。因此每一個解題的程式都是單一的程序(procedure),程序中可能混合使用了各種資料、函式和流程控制,最後結合成單一程式。 這種程式設計的概念成為程序導向的(Procedure-Oriented),CPU架構和電腦運作機制基本上就是以這種方式在運作,因此採用程序導向的方法來設計程式也就順理成章。但是程序導向的方法在軟體設計工作上卻存在著一些先天的限制。首先CPU和電腦運作原理本來就與真實世界的運作原理不同,因此任何真實世界中待解的問題都必須先形式化(或模型化)轉為電腦可以操作的模型,如果問題規模小,這樣的轉換比較單純容易,譬如將問題視為輸入─>轉換公式─>輸出,但是當問題的複雜度變大,變數的數量和模式增加,問題中的子問題間互動增加,都會使得設計工作變得十分困難。 就算解決了上述問題,所完成的程式碼勢必將非常複雜,以致於難以維護,而不利於程式的修改和擴充。由於近年來軟體需求的複雜度大量增加,以團隊方式來進行協同式設計的趨勢已經不可避免,傳統程序導向的設計方法顯然不足以應付工業層級的系統設計需求,因而物件導向方法(Object-Oriented Approach)就成了主流的設計概念。 物件(Object)比程序(procedure)更適合去描述真實世界的問題,一個程式就是由一群物件的關係(從屬、包含...)和互動(輸入、輸出、轉換...)所構成。描述一個物件比描述一個程序要更合乎直覺,操作物件的方便性也比操作函式要來得簡易,因為真實世界的物件本來就是以階層的、模組的方式存在,各階層的模組都隱藏了更下層模組的內部細節和複雜度,以便提供簡易的方法來掌握更高層次的模組設計和使用。 C++就提供了很好的模組化機制─物件類別(class),以便讓程式設計師進行物件導向程式設計。由於本書的目的並不在於商業化的軟體開發工程技術,而是針對非資訊專業的理工科系學生,教導如何藉由C/C++語言,設計出功能正確、高效率和高品質的科學和工程計算解題程式。所以本章只介紹最重要和最實用的C++語言的物件導向語法和相關技巧,至於深入的物件導向方法的探討,有興趣的讀者可以參考書末的推薦書目。 8.1 類別(class)宣告 8.2 存取物件的成員變數 8.3 類別的成員函式 8.4 建構者函式(Constructor Function) 8.6 傳遞參數
|
||
計算機概論:C/C++程式設計 義守大學電機系 陳慶瀚 |