把C 當作產品來研究

2021-10-04 12:23:09 字數 1198 閱讀 6722

開發乙個產品,我們會首先研究它的需求,也就是要解決的問題,然後再去用**實現它。

同樣,c++也是乙個軟體產品,我們從乙個產品的角度來分析它,並逐漸深入它。將之前學習的知識點(多型、虛表等特性)系統化。

開發c++的需求背景是什麼?

c++是基於c語言開發的,那為什麼不要c語言,而要開發c++呢?有的同學可能會說,是為了加類。是嗎?那為什麼要加類呢?

之所以開發c++,是因為隨著軟體行業的發展,軟體不僅僅是解決工業控制這些直線邏輯的問題。要解決的問題開始變得複雜。如何解決複雜的問題,人類解決複雜的問題就是將問題劃分成多個小問題,分而治之。這是人類的思維,那如何讓c++具備這種特性呢,那就需要乙個東西把資料和方法封裝起來,這個就是類。

談完需求背景,我們具體來分析下要開發的c++這個產品的需求。

1,能夠封裝資料和方法。

2,能夠復用**

其實,在c語言的時候,第一點需求(能夠封裝資料和方法),就能夠通過struct來實現。那為什麼還需要重新實現類這樣乙個機制呢。那是因為,struct只是簡單封裝,不能滿足現實中的需求。

因為,現實開發中,會有很多模組的**比較重複,因為他們處理的事情是屬於同一大類,只不過有些細節區別。所以,基於c開發的c++希望解決這個問題。

所以,c++中就支援乙個類能夠用另乙個類的**和資料。這種機制就像兒子從父親那裡繼承東西一樣,所以這種機制取名叫繼承。

3,抽象

現在,c++支援繼承,子類能夠從父類繼承**,那這個父類的**怎麼寫。如何提取父類,這叫抽象。

4,父類能夠代替子類

現在有了繼承和抽象,我們能夠將複雜問題通過c++的特性,編寫乙個乙個小的模組去解決這個問題。也能通過繼承,抽象出很多父類,來復用子類的**,從而減少**編寫。現實開發中,經常乙個父類會有很多子類,這個時候,不僅是希望**能夠復用,我還希望能夠用抽象出來的父類去代替所有的子類。(看到這個需求可能會覺得有點扯淡,沒關係,我們現在只看需求,怎麼去實現,是後面的事情)。

為什麼父類能夠代替子類,因為父類具有所有子類公共的介面,可以讓父類代替子類,然後再告訴子類該去做什麼。對外的介面都讓父類去實現。就像,每個家庭中,父親是一家之主一樣,什麼事都是父親與外界打交道。(可能大家會想到多型、虛表這些特性,其實這些不是關鍵,關鍵是搞清楚這裡的需求)。這樣做的好處是,能夠更好的封裝模組,解耦模組與模組之間的關係。

好,到這裡我要講的需求說完了。(這是主要的需求,不是所有的,還有過載這些,但這些不是本文討論的重點)。

待續。。。

《把時間當作朋友》 李笑來

學習是最節省時間的方法 只有學會正確的思考才意味著真正進化為人 既勤奮又懶惰 死亡困境 沒有時間了 真的是極其可怕,懶惰是罪惡之源 不以物喜,不以己悲 你現在學的可能覺得沒用的東西,在多年之後的某個時間,他會展示出它的用途,不論是什麼,不要問學他有用沒用。都有用 方法是對是錯,實踐了才知道,不要考慮...

《把時間當作朋友》 李笑來

讀這本書是因為在 暗時間 中作者的推薦,所以也順便拿來讀讀,書的開頭並不喜歡,有些傳統成功學書籍的一些感覺,讀了幾頁也就放下了。昨天晚上失眠,煩躁中又拿起這本書翻看,誰知漸入嘉靖,一發不可收拾,昨晚看到三點多,今天上午九點醒來後就一直在床上看到中午,李笑來先生的對於時間的支配和總結,關於一些最受社會...

應當把身體當作事業來經營

應當把身體當作事業來經營 人類還有很多病無法醫治好,比如說 愛滋病,肝病.人類也受到病魔的入侵,那場讓人恐慌的sars病毒 當前的禽流感病毒也遍及了好多國家,有些人也因此命喪九泉.讓人感到不安,也給人類敲響了警鐘.公司剛做完體檢,結果讓人喜讓人憂,絕大部分的同事身體正常,也有少數的同事不正常.不正常...