C語言和設計模式(繼承 封裝 多型)25

2022-03-24 14:23:12 字數 1229 閱讀 5801

記得還在我們大學c++第一門課的時候,老師就告訴我們說,c++是一門物件導向的語言。c++有三個最重要的特點,即繼承、封裝、多型。等到後來隨著編碼的增多和工作經驗的積累,我也慢慢明白了物件導向的含義。可是,等我工作以後,使用的程式語言更多的是c語言,這時候我又想能不能把c語言變成物件導向的語言呢?等到後來通過思考和實踐,我發現其實c語言也是可以物件導向的,也是可以應用設計模式的,關鍵就在於如何實現物件導向語言的三個重要屬性。

(1)繼承性

[cpp]view plain

copy

print

?typedef

struct

_parent  

parent;  

typedef

struct

_child  

child;  

在設計c語言繼承性的時候,我們需要做的就是把基礎資料放在繼承的結構的首位置即可。這樣,不管是資料的訪問、資料的強轉、資料的訪問都不會有什麼問題。

(2)封裝性

[cpp]view plain

copy

print

?struct

_data;  

typedef

void

(*process)(

struct

_data* pdata);  

typedef

struct

_data  

data;  

封裝性的意義在於,函式和資料是綁在一起的,資料和資料是綁在一起的。這樣,我們就可以通過簡單的乙個結構指標訪問到所有的資料,遍歷所有的函式。封裝性,這是類擁有的屬性,當然也是資料結構體擁有的屬性。

(3)多型

[cpp]view plain

copy

print

?typedef

struct

_play  

play;  

多型,就是說用同一的介面**處理不同的資料。比如說,這裡的play結構就是乙個通用的資料結構,我們也不清楚pdata是什麼資料,start_play是什麼處理函式?但是,我們處理的時候只要呼叫pplay->start_play(pplay)就可以了。剩下來的事情我們不需要管,因為不同的介面會有不同的函式去處理,我們只要學會呼叫就可以了。

C語言和設計模式(繼承 封裝 多型)

記得還在我們大學c 第一門課的時候,老師就告訴我們說,c 是一門物件導向的語言。c 有三個最重要的特點,即繼承 封裝 多型。等到後來隨著編碼的增多和工作經驗的積累,我也慢慢明白了物件導向的含義。可是,等我工作以後,使用的程式語言更多的是c語言,這時候我又想能不能把c語言變成物件導向的語言呢?等到後來...

C語言和設計模式

關於軟體設計方面的書很多,比如 重構 比如 設計模式 至於軟體開發方式,那就更多了,什麼極限程式設計 精益方法 敏捷方法。隨著時間的推移,很多的方法又會被重新提出來。其實,就我個人看來,不管什麼方法都離不開人。乙個人寫不出二叉樹,你怎麼讓他寫?敏捷嗎?你寫一行,我寫一行。還是迭代?寫三行,刪掉兩行,...

《大話設計模式》 附錄A 封裝 繼承 多型

對於不是純軟體開發出身的flasher,什麼是設計模式,什麼是oop程式設計,簡直就是一頭霧水。但每每回頭看自己寫的一坨坨 屎 一樣的 心都碎了,是應該是時候要改變了。從網上搜尋了一下資源,買了本程杰的 大話設計模式 粗看了一篇感覺很不錯,通過故事講述程式如何設計的,使高深的oop程式設計思想變得通...