對物件導向的一些思考

2021-09-25 02:56:41 字數 1112 閱讀 7142

到底什麼是物件導向,再討論這個問題之前我們先來假設一下如果不用物件導向用過程試程式設計來想象一下是什麼樣子的。

過程試的程式設計很好理解,我們再乙個main方法中從頭到尾一行一行的寫**,同時定義多個變數來完成我們的邏輯。後來高階一點的程式設計師會抽取一些共有功能,定義乙個函式。再**任何地方,我們都可以使用這個函式。

乙個函式其實單純的就是乙個**片段,它沒有狀態,只管你輸入乙個資料然後經過一系列的計算後給你返回乙個處理結果,或者void不返回任何資料。

好了這時候我們程式變複雜了,我們需要買肉,這時候需要向肉聯廠發起乙個購買請求,傳入我們需要的公斤數,然後程式內部通過malloc分配記憶體給我們建立了指定公斤數的meet,似乎是解決了我們的需求。但是問題來了,這個肉聯廠只是單純的為我們當前呼叫者來服務的,每次呼叫都會給我們返回指定公斤數的肉,但是實際情況是肉聯廠處理豬肉的能力是有限的,豬肉並不會無中生有,有時候他的存貨並沒有那麼多。函式只是乙個靜態的**片段,它的內部並沒有維護乙個剩餘豬肉公斤數的狀態。我們要如何解決的,除非是定義乙個全域性變數的capacity,每次獲取豬肉的時候對判斷容量如果不夠就返回沒有足夠的豬肉,如果可以購買就正常返回然後capacity進行減少。

好了暫時解決了豬肉**問題,現在又有新的問題誕生了,隨著我們購買量的增大我們肯定需要找運輸公司幫我們運貨。那麼運輸公司的車輛有沒有空閒,汽車車況是不是正常,汽車有沒有足夠的汽油。我滴天,**沒法寫了,我就想買一斤豬肉,為什麼我還要操心這麼多的東西。能不能就給我乙個方法,然後我傳入需要購買的公斤數,然後這裡面的所有事情我都不用操心了,豬肉就經歷九九八十一難到了我們手上。

要想完成這些需要需要怎麼辦,就需要肉聯廠他自己維護他們的capacity。然後肉聯廠需要和物流公司進行互動,那怎麼辦,要麼我肉聯廠內部維護乙個物流公司的物件,我需要車輛的時候就呼叫一下,或者物流公司暴露乙個介面供我呼叫,至於有沒有車輛空閒,車輛的車況是不是正常,有沒有足夠的司機,我都不管這是你的事情。

這樣每個物件各司其職,構成美好的世界,這就是物件導向的好處。

關於物件導向的一些思考

物件導向方法被人談論了二十多年了。我接觸它比較晚,直到九十年代中期才開始學習使用它。若說對這個方法做些評價,那還真是大言不慚了。不過這麼些年來,也週期性的對物件導向做些思考。或對或錯,我想都值得總結一下。一家之言,來看的同學不必太當真。首先我們要區分一下 基於物件 和 物件導向 的區別。基於物件,通...

一些關於物件導向的思考

python是一門神奇的語言,看了看裡面一些關於物件導向的描述。覺得挺受啟發的,在c 中同樣適用。主要觀點出自magnus lie hetland的 python基礎教程 1 將屬於一類的物件放在一起。如果乙個函式操縱乙個全域性變數,那麼兩者最好都在類內作為特性和方法出現。2 不要讓物件過於親密。方...

對物件導向的Windows程式設計實戰的一些補充說明

好不容易寫完了 物件導向的windows程式設計實戰 上,下 我在這裡當然還有一些沒有說完的話了.沒有messageloop巨集,你們是不是很失望?沒有繼承,沒有給你來點虛的,你是不是又很失望?你是不是覺得它太簡單,或者你還有些地方看不懂?這裡,它不是乙個複雜的oop封裝,我還沒有那個能力去把它做成...