閱讀26 返回首頁    go 阿裏雲 go 技術社區[雲棲]


連載:麵向對象葵花寶典:思想、技巧與實踐(10) - “抽象” 詳解

抽象的中文概念非常形象,簡單來說就是“抽取出來比較像的部分”。

 

那麼,在麵向對象的領域裏,抽取什麼東西比較像的部分?

 

還記得前麵給類下的定義麼?我們一起來回顧一下:類就是一組相似事物的統稱。

再結合我們對象的定義:對象就是一個具體的類,一個真實存在的類。

我們就很容易發現了抽象的詳細含義:抽取多個對象或者類中比較像的部分。

 

 

 

注:

史派克:《貓和老鼠》中的鬥牛犬

 

這裏的抽象分為兩個層次:

第一個層次:對象 抽象成 類。

例如奧巴馬和梅西抽象成“人”,這一層的抽象主要是將“屬性類似”的對象抽取成類。

注意這裏的屬性類似是指屬性類別一致,而屬性的取值是不一樣的。例如如果將“奧巴馬”和“梅西”都抽象成“人”,那麼其屬性有身高、體重、性別、年齡等,但“奧巴馬”和“梅西”的這些屬性取值肯定是不同的。

 

第二個層次(或更高層次):將 類 抽象成超類(或者說父類,其實就是更高一級的類),

例如人和豬抽象成“動物”,這一層的抽象主要是將“行為類似”的類抽象成父類。

注意這裏是“行為類似”,而不是第一層抽象的那樣“屬性類似”,因為在麵向對象領域,行為一致的話就認為是同一類的,當然也不能是完全不同,完全不同的話就沒有相似點,也就無法抽象成類了,所以這一層抽象的重點是“相似”。

 

實際應用中,抽象的層次是不限的,根據業務的需要,或者不同的觀察角度,可以抽象出很多層。

 

【抽象的作用】

抽象並不是麵向對象領域特有的概念和方法,在人類的科學研究中,抽象是再常見不過的技術了:生物學將豬馬牛羊等生物抽象為“動物”,將花草樹木等抽象為“植物”,醫學將心肝脾肺腎抽象為“內髒”,化學將碳氫氧氮等抽象為“元素”,物理學上將地球、火星、水星等抽象為“行星”。。。。。。等等。

 

又比如我們的高中學習課程,也抽象出“語文、數學、物理、化學”等學科,我們的大學課程,又分為了幾十上百個專業。

 

在人類的科學研究,以及日常生活和學習中,抽象最主要的作用是“劃分類別”,而劃分類別的主要目的其實還是“隔離關注點,降低複雜度”。因為這個世界太複雜了,複雜到一個人不可能同時關注所有的內容。心理學上的研究證實,人同時能關注的事務不超過 7+/-2個。可以想象,如果沒有抽象分類,我們將麵對一個混沌的世界,同時關注如此多的內容,即使是天才,估計也要崩潰。

 

在麵向對象領域,抽象也不例外。抽象的主要作用也是劃分類別,所以,抽象是麵向對象領域裏麵發現類的主要方法


================================================ 
轉載請注明出處:https://blog.csdn.net/yunhua_lee/article/details/19165107
================================================ 

最後更新:2017-04-03 12:55:04

  上一篇:go MFC 樹形控件CTreeCtrl顯示文件路徑及文件
  下一篇:go Cmd批處理替換文件