c 程式設計思想 第一章

2021-07-03 22:39:42 字數 1813 閱讀 8207

第一章 物件導言。7-19

在這一章討論了物件導向程式設計(opp)的思想和如何用這一思想解決軟體危機的問題。

物件:我們可以設定乙個物件,並對他發出請求(發出乙個訊息),使它能夠為我們完成某種功能,可以向物件發出的請求是由他的介面(inte***ce)定義的,而介面由型別確定。

對於物件導向程式設計的三個特性:

封裝,繼承,多型。

封裝:封裝的目的主要是為了實現源**的安全性。所以我們對其有訪問控制。c++語言使用了三個明確的關鍵字來設定類中的邊界:public,private,protected。繼承的類可以訪問protected成員,但是不能訪問私有成員。

繼承:重用介面,如果乙個類的功能不夠強大,或者我們需要在這個類的中加上另外一些功能,我們就可以使用繼承,對這個基類只能能更加或者修改。缺點:如果原來的類(基類,父類)被修改,則這個修改過的類(子類或者派生類)也會表現出這些改變。

新派生類區別與原始基類:1,簡單地向派生類新增全新的函式

2,過載函式(改變已經存在的基類函式的行為)

多型:要實現動態有覆蓋和過載兩種方式,覆蓋就是子類重寫父類虛函式的做法。過載就是函式名相同只是這些函式 的參數列不同(或許引數個數不同,或許引數型別不同,或者兩者兼有)。

早繫結指在物件申明的時候就和他的型別建立了關聯。

晚繫結是指我們的**在執行時再檢查物件是否提供了我們所需要的方法和屬性。

這些是我在網上找到的自認為最好的解釋:

多型 多型性(polymorphisn)是允許你將父物件設定成為和乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話:允許將子類型別的指標賦值給父類型別的指標。 實現多型,有二種方式,覆蓋,過載。 覆蓋,是指子類重新定義父類的虛函式的做法。 過載,是指允許存在多個同名函式,而這些函式的參數列不同(或許引數個數不同,或許引數型別不同,或許兩者都不同)。 其實,過載的概念並不屬於「物件導向程式設計」,過載的實現是:編譯器根據函式不同的參數列,對同名函式的名稱做修飾,然後這些同名函式就成了不同的函式(至少對於編譯器來說是這樣的)。如,有兩個同名函式:function func(p:integer):integer;和function func(p:string):integer;。那麼編譯器做過修飾後的函式名稱可能是這樣的:int_func、str_func。對於這兩個函式的呼叫,在編譯器間就已經確定了,是靜態的(記住:是靜態)。也就是說,它們的位址在編譯期就繫結了(早繫結),因此,過載和多型無關!真正和多型相關的是「覆蓋」。當子類重新定義了父類的虛函式後,父類指標根據賦給它的不同的子類指標,動態(記住:是動態!)的呼叫屬於子類的該函式,這樣的函式呼叫在編譯期間是無法確定的(呼叫的子類的虛函式的位址無法給出)。因此,這樣的函式位址是在執行期繫結的(晚邦定)。結論就是:過載只是一種語言特性,與多型無關,與物件導向也無關!引用一句bruce eckel的話:「不要犯傻,如果它不是晚邦定,它就不是多型。」 那麼,多型的作用是什麼呢?我們知道,封裝可以隱藏實現細節,使得**模組化;繼承可以擴充套件已存在的**模組(類);它們的目的都是為了——**重用。而多型則是為了實現另乙個目的——介面重用!多型的作用,就是為了類在繼承和派生的時候,保證使用「家譜」中任一類的例項的某一屬性時的正確呼叫。

第一章還介紹了c和c++之間的關係和c++的一些新的概念。以及在以後專案開發中的對於c++的感性認識。為什麼c++會成功:盡可能的為程式設計師提供最大的利益。

介紹了物件設計的五個階段和一些方法,booch,rdd,omt等一步步步入oop的設計。

多型與非多型的實質區別就是函式位址是早繫結還是晚繫結。如果函式的呼叫,在編譯器編譯期間就可以確定函式的呼叫位址,並產生**,是靜態的,就是說位址是早繫結的。而如果函式呼叫的位址需要在執行時才確定,這就屬於晚繫結。

第一章 C 程式設計

今天終於下定決心將資料結構與演算法重新在複習一遍,先是c 的一些比較容易忘記的特性簡單的溫習一遍 包括遞迴呼叫,異常操作,類模板,函式模板等等,這三天寫得原始碼如下 book name c structure and algorithm filename chapter1.cpp version 1...

C 程式設計第一章

c 被稱之為混合型語言 1 c 的函式和物件c 將資料從乙個物件流向另乙個物件的流動抽象為流。cin,標準輸入,cout,標準輸出1 從流中獲取資料的操作稱為提取操作。當程式需要執行鍵盤輸入時,使用提取操作符 從cin輸入流中提取字元 2 向流中新增資料的操作稱為插入操作。當程式需要在螢幕上顯示輸出...

C 程式語言(第一章)

一.全書結構 1,1 3章,c 程式設計風格,以及有關c 標準庫的綜述 2,4 9章,c 內部型別 3,10 15,c 物件導向和通用型程式設計 4,16 22,c 標準庫 5,23 25,設計和開發軟體 6,附錄 二.給c程式設計師得建議 1,c 裡幾乎不需要用巨集,用const或enum定義明顯...