C++——談談你對物件導向程式設計的認識

readyao發表於2015-12-25

物件導向程式設計的特點:封裝、繼承、多型

面對一個問題的時候要把這個問題解決掉,我們有兩種思路;一種是按過程來一步一步的來執行,直到完成最後的問題,這是
一種程式導向的思考方法;另一種是按物件來分類,將問題看成是若干個事物的組合;

例項分析:

比如我們在Linux下用C語言來實現多執行緒(多程式)程式設計的時候,我們需要呼叫標準的多執行緒相關的函式,比如:建立執行緒函式,等待執行緒函式,
設定執行緒屬性函式,退出執行緒函式,獲得執行緒ID函式,獲得執行緒屬性函式......

第一種方法:

在建立一個執行緒的時候首先呼叫初始化執行緒屬性的函式,然後呼叫建立執行緒的函式,再呼叫等待執行緒退出的函式......
在建立另一個執行緒的時候也呼叫初始化執行緒屬性的函式,然後呼叫建立執行緒的函式,再呼叫等待執行緒退出的函式......

參考本部落格:http://blog.csdn.net/linux_ever/article/details/50326397

第二種方法:

將所有與執行緒相關的函式封裝成一個類,在這個類裡面有與執行緒有關的資料,比如:執行緒ID,執行緒屬性;在這個類裡面還有與執行緒有關的方法(將建立執行緒的API函式封裝成方法),比如:建立執行緒函式create,設定執行緒屬性函式set_attr,獲得執行緒屬性函式get_attr,退出執行緒函式exit,等待執行緒函式wait.....
這樣我們在建立一個執行緒的時候直接用剛才的那個執行緒類建立一個物件就是建立了一個執行緒ThreadObj,然後建立執行緒呼叫ThreadObj.create(),
設定執行緒屬性呼叫ThreadObj.set_attr(),獲得執行緒屬性呼叫ThreadObj.get_attr(),退出執行緒呼叫ThreadObj.exit(),等待執行緒呼叫ThreadObj.wait();
再建立一個執行緒的時候還用剛才的那個執行緒類建立另一個物件ThreadObj_2;然後還呼叫相應的類方法;

參考本部落格:http://blog.csdn.net/linux_ever/article/details/50299045

封裝:就是將一個事物的屬性和行為進行封裝;還通過private,public,protected關鍵字來限制屬性和行為方法的許可權,來決定暴露給外界的介面方法;

繼承:就是得到另一個事物的共同點,比如相同的屬性和相同的行為;繼承之後就屬於該事物自身的屬性和方法了就可以直接使用;

多型:包括過載和重寫方法;相同名字的方法靠不同的引數列表來區分呼叫哪一個方法這是函式過載;當子類繼承父類的方法之後,但是父類的方法不是特別適合子類的行為,則應該重寫繼承的該方法;

總結:

物件導向程式設計是將問題看做是若干個事物之間相互作用,首先抽象各個事物的屬性和行為並進行封裝,然後在建立各個物件,各個物件之間通過各自的方法來影響,或事物之間可能也存在繼承或包含的關係;

相關文章