什麼是面向對象、面向過程?

1.1 面向對象

這種思想的實質是:程序可以添加新類型的對象使自身適用於某個特點的問題。所以你在閱讀描述解決方案的代碼時,也是在閱讀問題的描述。
每個對象看起來都有點像一臺微型計算機——它具有狀態還有操作,用戶可以要求對象執行這些操作。如果要對現實世界種的對象作類比,那麼說它們都具有特性和行爲似乎不錯。
Alan Kay曾經總結了面嚮對象語言的五大特徵:
1)萬物皆爲對象。將對象視爲奇特的變量,它可以存儲數據,除此之外,你還可以要求它在自身上執行操作。理論上講,你可以抽取待求解決問題的任何概念化構件(狗、建築物,服務等),將其表示爲程序中的對象。
2)程序時對象的集合,它們通過發送消息來告知彼此所要做的。要想請求一個對象,就必須對該對象發送一條信息。更具體地說,可以把消息想象爲對某個特定對象的方法的調用請求。
3)每個對象都有自己的由其他對象所構成的存儲。換句話說,可以通過創建包含現有對象的包的方式來創建新類型的對象。因此,可以在程序中構建複雜的體系,同時將其複雜性隱藏在對象簡單性背後。
4)每個對象都擁有其類型。按照通俗的說法,“每個對象都是某個類(Class)的一個實例”,這裏“類”就是“類型”的同義詞。每個類最重要的區別於其他類的特性就是“可以發送什麼樣的消息給它”。
5)某一特定類型的所有對象都是可以接受同樣的消息。因爲“圓形”類型的對象同時也是“幾何形”類型的對象,所以一個“圓形”對象必定能接受發給“幾何形”對象的消息。這意味着可以編寫於“幾何形”交互並自動處理所有與幾何形性質相關的事物代碼。這種可代替性時OOP(面向對象)中最強有力的概念之一。
Booch對對象提出了一個更加簡潔的描述:對象具有狀態,行爲和標識。這就意味着每一個對象都可以擁有內部數據(它們給出了該對象的狀態)和方法(它們產生的行爲),並且每一個對象都可以唯一的與其他對象區分開來,具體的說每一個對象在內存中都有一個唯一的地址。

1.2 面向過程


面向過程”(Procedure Oriented)是一種以過程爲中心的編程思想。“面向過程”也可稱之爲“面向記錄”編程思想,他們不支持豐富的“面向對象”特性(比如繼承、多態),並且它們不允許混合持久化狀態和域邏輯。
就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章