身為乙個程式設計師,我個人很喜歡早洗澡的時候去思考一些技術上的東西,今天有人問我什麼是物件導向,其實我也不是很懂,我以前一直認為物件導向就是繼承,而繼承就是虛函式,但是我洗澡的時候在思考,真的是這樣子的嗎?錯了,不管虛函式的機制是為了繼承和多型而服務,而繼承和多型確實為了oo的思想而服務,怎麼說呢?
我們都知道,當我們都知道學生a,b,c,d.....,都是學生,並且他們有一些共同的屬性,比如年齡,性別,學號。。。,如果在面向過程的程式設計模式中,我們可能要為每乙個學生建立乙個存放他/她屬性的乙個東西,而物件導向呢,我們只要將他們共同的東西抽象出來形成乙個類,而類中只有他的屬性,那麼我們只要使用這個類去建立不同的學生物件即可,但是我們都知道每一種資料型別都有它本身的運算方式,比如整形,它可以做+-*%,等等,而有學生抽象出來的這個類他也有自己對於類中屬性的操作方式,所以我們就將這個屬性的操作方式也放在類裡面,那麼整個類就真正的成為乙個資料型別而存在,那麼任何想使用這個資料型別的人只要定義乙個關於這個資料型別的變數即可,而操作這個變數的方式也已經寫好,就像int型別一樣,這樣你就不必為每乙個學生去定義乙個型別,真正實現了oo中的因為抽象而共享,增加了**重用的可能性,減少了程式的**量。
當然這個思想在模版中也得到了推廣,不管是模板類,還是模版函式,抽象出共同的,形成乙個可悲更多時候使用的乙個東西。模板類對資料型別再一次抽象,模版函式不同資料型別同一控制流的抽象。
那麼函式式程式設計又和物件導向程式設計有什麼不同呢?我覺得函式式程式設計和物件導向程式設計是相輔相成的,為什麼這麼說,物件導向抽象出共同屬性形成乙個新的資料型別,暫且就這麼說吧,而函式式程式設計將函式也當成物件,可當變數,當引數,當返回值,簡直就是全能神,哈哈,函式式程式設計當然得講閉包,閉包是什麼,閉包其實就是類,類抽象的是資料型別,而閉包抽象的是函式,閉包通過不同的輸入引數實現返回不同的函式物件。
所以當你要抽象資料型別,請用oo,當你要抽象函式,請用fp。
函式式程式設計vs物件導向程式設計
什麼是物件導向,其實我也不是很懂,我以前一直認為物件導向就是繼承,而繼承就是虛函式,有時候在思考,真的是這樣子的嗎?錯了,不管虛函式的機制是為了繼承和多型而服務,而繼承和多型確實為了oo的思想而服務,怎麼說呢?我們都知道,當我們都知道學生a,b,c,d 都是學生,並且他們有一些共同的屬性,比如年齡,...
面向過程程式設計VS物件導向程式設計
面向過程程式設計vs物件導向程式設計 a.面向過程程式設計的特點 a c語言的特點 優點 簡潔緊湊,靈活方便 結構化語言 語法限制不太嚴格,程式設計自由度大 允許直接訪問實體地址 可以直接對硬體操作 生成目標 質量高,程式 執行效率高 具有較 高的可移植性 缺點 靈活性 維護性 復用性 擴充套件性差...
物件導向程式設計VS泛型程式設計
物件導向程式設計vs泛型程式設計 1 物件導向 oop是對data operation的封裝,是對同類事物的抽象,跟結構化程式設計相比它更接近自然語言。繼承使得oo具有了更強的表達能力,進一步地接近了自然語言的屬性。而多型則是oo的最為巧妙和強大的地方,它催生了一系列的設計模式,而設計模式的應用體現...