sponsored links

面向物件程式設計思想(OOP)的由來與本質,程式設計師必讀

大千世界,萬事萬物,對映到我們的大腦中,形成了色彩斑斕、奇幻玄妙的思想世界。當我們想把這種思想用軟體的方式表達出來時,我們面臨著很多中選擇:是面向物件、面向過程、面向函式還是面向方面(Aspect oriented Programming)?

由於當前的程式語言都是英文的,外國程式設計師程式設計不就是在說母語麼?我們國家軟體技術發展得晚,還沒有按照中文詞彙和語法的程式設計方法和工具,也只能跟著說英語。但中文和英文在詞彙和語法方面存在不小的差異,所以程式設計師理解起來也會存在一些問題,久而久之,就把這種程式設計思路和方法弄得有些玄乎其神了。

面向過程存在的問題

企業資訊處理程式最早是面向過程的程式,因為軟體是模擬人的思維過程,所以利用面向過程的思路來處理程式順理成章。由於最開始還是打孔紙帶式的計算機,程式量也很小,所以效率還比較高。但隨著軟體變得越來越龐大,面向過程思想逐漸變得難以駕馭,工程化難度很大。面向過程的軟體結構像一個複雜的迷宮,其間到處遍佈goto語句,這些跳轉語句就像遊戲中神秘的傳送門一樣,你永遠不知道下一站在哪裡。

面向物件程式設計思想(OOP)的由來與本質,程式設計師必讀


複雜過程能描述的清楚麼

面向過程往往使程式設計師不用系統地思考完整的需求,但在程式中完整地復現了人類思維過程的雜亂無章,其中程式碼被無節制地複製和更改,重複的程式碼量大大增加,原來自己編寫的程式讀懂難度都很大。

面向物件的歷史

面向物件在西方有著非常深刻的哲學基礎,也是西方近代科學產生的重要原因,內容也比較多,我們以後再詳細分析。

針對面向物件產生的問題,1972年美國計算機學家艾倫.凱(Alan Key)發明了面向物件的軟體開發架構。艾倫的本科讀的是生物學,博士導師是被稱為"計算機圖形學之父”的David Cannon Evans和Ivan Sutherland兩位大神,後者的博士導師是大名鼎鼎的夏農。在計算機領域,經常看到這樣學術傳承,一縷一大串,都是圖靈獎都是熟人。從這也看出了咱們國家要想在計算機方面立足,還有很長的路要走。

面向物件程式設計思想(OOP)的由來與本質,程式設計師必讀


面向物件是艾倫.凱(Alan Key)發明的

這是一種由生物細胞領域概念啟發而形成的架構方法,艾倫發現了在細胞領域中存在一些有趣的規律:首先,所有個體細胞都會遵從細胞這個類別元素的共同的行為模式;其次,每一個細胞都是一個獨立的個體,細胞之間透過傳遞化學物質訊號和電訊號能夠進行通訊,根據所收到的資訊調整自身的行為和策略;第三,細胞會進行分化,從原來的一個細胞分化成不同類別的細胞,進而形成各種器官。受到這些細胞特性的啟發,艾倫發明了面向物件的分析和設計方法。

面向物件程式設計思想(OOP)的由來與本質,程式設計師必讀


生物是如何封裝和傳遞訊息的

結合這些特點,艾倫發明了Smalltalk ,這種語言被設計為一個完全動態的系統,其中可以動態地建立和修改類。

面向物件的本質

面向物件與其說是一種設計方法,更像是一種理解世界的角度。類別、屬性、聯絡和是三個重要方面。聯絡和組成的概念更為複雜一些,例如SQL和知識圖譜就是致力於研究事物之間的關聯,我們有機會再另外詳細說,今天我們重點來講講類別和屬性。



面向物件的本質是本體論

面向物件的核心是本體論。本體類的核心就是分類,也就是我們詞語所指之“物”。當我們說杯子的時候,我們說的其實不是哪一個具體的杯子。我們說的是脫離了時間和空間之外的那個杯子,這種本體論古希臘人都搞明白了,可惜中國古代沒有這種本體思想。

「博士聊IT」一文看懂程式設計的本質,程式設計師有前途麼?

比如我們說今天很熱,我們翻譯過來肯定是想說Today is hot。但是這裡我們就錯誤地把今天作為主語了,其實今天應該是時間副詞。英語會翻譯成It is hot today這裡的It指的是天氣,也就是熱的主體。

面向物件程式設計思想(OOP)的由來與本質,程式設計師必讀


中英文用法上差異增加了我們理解的難度

本體(Ontology)、分類(Class)、概念(Conception)、集合(Set)和名詞(Noun)其實是一回事,都指的是你腦海中的那個概念。這是人類理解世界的根本,就從哲學觀點上來看,這是我們認識世界的方式。

我們的生物需要分類,就是門、綱、目、科、屬、種;法律需要分類,輕度傷害、重度傷害量刑不同;社會管理要分類例如不同企業上不同的稅;產品需要分類,不同的產品有不同的引數.......我們思想和語言交流的基礎就是分類。

事實上我們說的每一個名詞都是一個分類,當加上編號或者定冠詞就變成例項了。那我們我和當我們區分例項的話,不特指的時候直接用複數或者要加上不定冠詞“a”表示這分類,特指例項的時候要加上“the”。

面向物件程式設計思想(OOP)的由來與本質,程式設計師必讀


分類是我們認識世界的基礎

分類決定屬性,一個分類的屬性有兩種來源:從父類那兒繼承的和自己特殊的。當然這個分類也會有孩子繼承他的屬性。

分類決定方法,道理是一樣的,不一樣的類可以有不同屬性。重寫是一種繼承中的變異,大規模重寫就沒必要分類了;多型是對方法的封裝,以便模糊呼叫,

在實際中,操作分類、屬性和繼承關係的難度很大。我們很多程式設計師討厭繼承,覺得繼承對程式靈活性沒好處,根本上是我們對業務沒有系統化掌握,導致業務和技術架構總是變化。一個真正領域業務架構專家是不會總去更改系統類別結構的。

對於成熟和不成熟的業務可以分開處理,成熟了就分類,不成熟就都分扁平類,階段性認識清楚了再重構,這樣能更好地完成開發。

類比是認識世界的方法

類別決定了基本特徵的繼承,許多非常抽象的事物透過類比和歸類的方式能夠迅速帶給人非常清晰的印象。例如一部電影在前期策劃時,導演需要和投資方、製片人交流,還需要和演員、道具、服裝、音樂等多個專業部門打交道,大家都想知道自己工作目標是什麼。這時導演的類比能力就顯得非常重要,例如電影《異形》在拍攝前,大家都不知道導演到底想要拍什麼,導演斯皮爾伯格說我要拍一部太空版的《大白鯊》,神秘、恐怖、壓抑、陰暗的氣氛迅速湧現出來,只不過場景是在太空中。於是各個崗位立刻都明白自己的工作該做什麼了。

面向物件程式設計思想(OOP)的由來與本質,程式設計師必讀


大白鯊是什麼類別的電影

在好萊塢吳宇森的電影已經形成一種特殊類別,被稱為“Woo movie”,提到這個風格的電影,大家腦海中就會聯想到兄弟情、槍戰、白鴿、風衣等場景和物件。所以類別是人類形成思想概念的重要因素。僅有類別還不夠,還要把這個類別的屬性準確地描述出來,才能更好勾畫出這個個體的特徵。

面向物件程式設計思想(OOP)的由來與本質,程式設計師必讀


你看過幾部Woo movie?

面向物件的意義不僅僅是我們觀察世界的條理更清晰,更為重要是的,這種方法還把事物的內在機理和外在表現進行了分割,使得程式設計師之間的大範圍協作成為可能。

這就是我們說的“封裝”。

我們會使用手機,可是我們不知道手機和基站是如何通訊的,也不需要知道手機是如何製造的,我們需要知道的是手機如何操作就可以。這樣程式設計師就可以像蓋房子一樣,使各種有明確功能和使用介面程式拼接起來,而不用深入研究其機理,並且能夠保證最終整合起來的程式具有較高的質量水平。

這就是面向物件。面向物件的方法能夠讓世界更有條理。我會在後續從哲學思想、物件關聯和物件組成幾個方面再做單獨的介紹。

這裡是【博士聊IT】,感興趣請加關注。

「博士聊IT」一文看懂程式設計的本質,程式設計師有前途麼?

中國為什麼沒有自己的程式語言?哲學、數學和語言學基礎是關鍵

「博士聊IT」資訊化是買不來的!特斯拉為啥不用SAP

「博士聊IT」資訊化建設效率為啥這麼低?一文看透本質

分類: 動物
時間: 2021-10-22

相關文章

“小哪吒”後程發力拿下冠軍,梁小靜錯失良機,韋永麗僅排第六

“小哪吒”後程發力拿下冠軍,梁小靜錯失良機,韋永麗僅排第六
全運會比賽如今已經正式開始,百米大戰一定是最精彩的比賽之一,不管是男隊還是女隊,我們都擁有非常多的優秀的運動員,在這次的百米女飛人大戰中,葛曼棋,韋永麗,孔令薇和梁小靜都闖進了決賽,為這場比賽增加了很 ...

北斗三號全球系統已提供七種服務

北斗三號全球系統已提供七種服務
本文內容轉載自微信公眾號:中國地理資訊產業協會,內容來源於:人民日報海外版,作者:何勇,版權歸原作者及刊載媒體所有,所刊載內容僅供交流參考使用,不代表本刊立場. "目前北斗三號全球系統提供七 ...

山西榜上有名的七種麵食,你吃過幾種?哪一種是你的最愛?

山西榜上有名的七種麵食,你吃過幾種?哪一種是你的最愛?
俗話說得好,世界的麵食在中國,中國的麵食在山西.山西人愛吃麵,我想這是大家都熟知的.其中的原因與歷史.地理環境.文化等諸多因素是分不開的.說到山西的特色面,種類是非常多的.今天我就來為大家盤點一下山西 ...

痛風是吃出來的疾病嗎?適量食用七種食物讓吃出來的病吃回去

痛風是吃出來的疾病嗎?適量食用七種食物讓吃出來的病吃回去
痛風,是一種代謝性.晶體性.風溼免疫性疾病,痛風主要是嘌呤代謝異常所致.痛風的急性發作,是尿酸鹽結晶在關節.軟骨.滑膜沉積所引起的無菌性的炎症反應.痛風的發病基礎是高尿酸血癥,也就是說血尿酸濃度常常高 ...

越美的花越有毒,生活誠不欺我!快來認識七種大毒花,避免受傷害

越美的花越有毒,生活誠不欺我!快來認識七種大毒花,避免受傷害
生活中很多人都喜歡在家裡養一些花,用來美化居室,淨化空氣,家裡有院子的人,還喜歡在院子裡養一些花草,打造出一個庭院小花園,每天看著美麗的花花草草,心情也會好很多,但是你知道嗎?喜歡花草也有一定的危險性 ...

打造北歐風格公寓的七種造型元素

打造北歐風格公寓的七種造型元素
歡迎關注微信公眾號"米亞羅生活",尋找裝修設計靈感和物美價廉的家居好物. Niki Brantmark, 一個居住在瑞典的倫敦女孩,她為我們呈現了她的瑞典公寓,一個乳白色調.極簡裝 ...

七種漂亮花,天生“不怕冷”,好養寓意好,喜歡別錯過
現在很多人都喜歡在家養一些花,用來美化居室,點綴生活,養花的時候,還能感受得到多多的樂趣,現在正是金秋十月, 又到了一年一度的養花,這個時候,再想養花,建議購買一些喜歡溫涼,有一定"耐寒性& ...

羽毛球接發球技術七種常見錯誤,擁有第一擊球主動權,發揮很重要

羽毛球接發球技術七種常見錯誤,擁有第一擊球主動權,發揮很重要
羽毛球接發球技術七種常見錯誤,擁有第一擊球主動權,如何正確發揮很重要! 1.接發球腳步準備姿勢錯誤: 準備接發球時,雙腳的腳後跟同時著地,八字腳直立,身體重心在兩腿之間,不利於發揮突然起動和移動的速度 ...

21醫學類專業冷熱出現大變局,臨床醫學不是第一,口腔僅排第3位

21醫學類專業冷熱出現大變局,臨床醫學不是第一,口腔僅排第3位
21年醫學類專業熱度依然排在前幾位,和IT類專業可以媲美,雖說目前大家更看重IT類等計算機等相關專業,但是該專業目前也是越來越內卷,35歲現象也很常見,因此現在大家更看重職業的穩定及未來有很重要的預期 ...

湖人13人豪陣再升級?側翼目標3選1!馬修斯僅排第二,榜首太完美

湖人13人豪陣再升級?側翼目標3選1!馬修斯僅排第二,榜首太完美
在上個賽季折戟首輪後,湖人在今夏成為最忙碌的球隊之一,不僅在交易市場中得到威少這名第三巨頭,還一口氣簽下多名新援. 儘管陣容中老將居多,但目前湖人的13人陣容足夠豪華,擁有大量昔日的全明星球員. 與此 ...

2021福布斯中國名人榜出爐,00後蟬聯榜首,王一博僅排第二

2021福布斯中國名人榜出爐,00後蟬聯榜首,王一博僅排第二
導語,作為一款創辦於1917年的商業雜誌,<福布斯>在全球享有非常高的知名度,從2004年開始,該雜誌開始對中國名人進行調研和評估,並整理成<福布斯中國名人榜>. 能夠進入福布 ...

陳獨秀一生有七個子女,去世時身邊僅一人,其他子女過得怎麼樣?

陳獨秀一生有七個子女,去世時身邊僅一人,其他子女過得怎麼樣?
1942年5月27日,"新文化運動"的領軍人物.大名鼎鼎的北大學長陳獨秀因病逝世,這年,他63歲. 陳獨秀一生共有七個子女,而他去世時,身邊卻只有三子陳松年一人,那其他六個子女呢? ...

河南人最愛吃的七種麵條,一週七天,每天不重樣,你喜歡吃哪種?

河南人最愛吃的七種麵條,一週七天,每天不重樣,你喜歡吃哪種?
河南作為我國的食麵大省,在麵條的調理和製作上的地位稱得上是首屈一指.同樣都是普通的麵條,河南面條究竟用了什麼魔法,使得它從各種美食中突出重圍?本期子牙童趣城市觀察,就為大家盤點河南人最愛吃的7種麵條, ...

西甲最新積分榜:巴薩爆冷,絕平魚腩,僅排第七,馬德里雙雄領跑

西甲最新積分榜:巴薩爆冷,絕平魚腩,僅排第七,馬德里雙雄領跑
北京時間9月21日,西甲聯賽第5輪最後一場比賽打響,結果巴薩爆出大冷,1-1與格拉納達握手言和,目前在最新的積分榜上,馬德里雙雄領跑,皇馬第一,馬競第二,瓦倫西亞第三,皇家社會第四,巴薩僅排名第七,西 ...

七種房門設計,打造你的個性小家

七種房門設計,打造你的個性小家
在裝修過程中,很多戶主對於房門而言,並沒有太多的考慮,只要求實用就好.因此當我們進行房門選擇時一般都只考慮其隔音.私密性等因素. 但是每一個家都應該是個性的,看膩了千篇一律的大白門,其實我們還可以嘗試 ...

科學家揭秘貓的七種性格型別

科學家揭秘貓的七種性格型別
如果你家裡只養了一隻貓,你可能會以為貓的性格只有一種,那就是時而高冷,時而粘人.但是如果你接觸的貓足夠多,你會發現,貓和人一樣,也有不同的性格型別. 如果讓貓主人描述自家的貓,他們可能會親暱地稱之為& ...

曾國藩曾文正公七種集及名句100條

曾國藩曾文正公七種集及名句100條
曾國藩(1811年11月26日-1872年3月12日),漢族,初名子城,字伯涵,號滌生,宗聖曾子七十世孫.中國近代軍事家.政治家.戰略家.理學家.文學家,湘軍的創立者和統帥.與胡林翼並稱"曾 ...

不工作也能活,美國男人的七種“躺平”方式

不工作也能活,美國男人的七種“躺平”方式
亞太日報 Shannon 在美國,所有工作年齡(通常算作16至64歲)的男性中,幾乎有三分之一的人沒有工作,也沒有在找工作 -- 三分之一的適齡男性,幾乎有3000萬人!但他們是如何生活的呢? 誠然, ...

塞班島最美沙灘之一,海水呈七種顏色,零差評旅遊景點

塞班島最美沙灘之一,海水呈七種顏色,零差評旅遊景點
美麗的塞班島景點眾多,太平洋賦予了這裡太多獨特的景色,而塞班島上的每個景點又是各具特色,每一個都有自己的故事和風情. 到了海島旅遊,海灘是一定要打卡的地方,踩水玩沙,看海景看夕陽都是經典專案,那麼麥克 ...

七種果園打藥機美圖欣賞

七種果園打藥機美圖欣賞
果士捷拉桿式果園打藥機,小巧靈活 裝600斤水 藥泵前置的果園打藥機,使用方便 四輪果園打藥機,藥泵前置,這種行駛穩定 三輪果樹打藥機,方向盤操控,藥泵前置 履帶式果園打藥機,效果很好,轉彎半徑小,透 ...