- UML基礎與Rose建模實用教程(第三版)
- 謝星星 周新國編著
- 1484字
- 2020-11-23 15:05:05
1.2.1 抽象
人們每天都要應對身邊的各種各樣的信息,比如電子郵件、新聞信息等,要想辦法從這些信息中提取出精華,人們的大腦懂得如何去簡化所接收的信息,讓信息細節通過抽象(Abstraction)這一過程進行管理。通過抽象可以進行以下操作:
(1)將需要的事物進行簡化
大家都熟悉的地球儀,作為一種抽象,地球儀上標明了地球信息的特征,在地球儀上可以清楚地看到各個大洲的位置,各個大洲的具體形狀等。就必要性而言,地球儀并不包括真實世界中的所有存在物,比如你在什么位置、學校在什么位置、學校的教學樓是什么樣的,等等。如果地球儀上真的有這些東西,是難以想象的,因為很難把重要的地球特征表述出來。相反,人們會根據地球的特征,比如地球的形狀、五個大洲的位置、形狀等繪出地球儀,如果制作的是一個大型的地理信息系統,可能關注的東西會更多。總之,抽象真實世界的不同特征是根據使用對象的不同或者是使用者的類型不同進行確定的。
以圖書管理信息系統為例,從學生的角度來看,關注的是能否借書、能否還書。對于圖書管理員而言,關注的往往是能否更好地維護好圖書,等等。而他們都不會關注圖書館有多少個衛生間等特征。
通過抽象能夠識別和關注當前狀況或物體的主要特征,淘汰掉所有非本質的信息。也就是說,通過抽象可以忽略事物中與當前目標無關的非本質特征,強調與當前目標有關的特征。
(2)將事物特征進行概括
如果能夠從一個抽象模型中剔出足夠多的細節,那它將變得非常通用,能夠適應于多種情況或場合,這樣的通用抽象通常都很有用。以學生為例,抽象出“學號”、“姓名”、“學院”、“年級”等來描繪學生,能夠描繪出學生的一般功能,但是要具體到如學生在教室里的座位號等,描述力就差了一些。
抽象模型越簡單,展示的特點越少,它就越通用,也就越具有普適性。抽象越復雜,就越具有限制性,用于描述的情況也就越少。
(3)將抽象模型組織為層次結構
通過抽象按照一定的標準系統地對信息進行分類處理,以此來應付系統的復雜性,這一過程被稱為分類(Classification)。
例如在科學領域中將自然物區分為動物、植物和礦物質。動物應該滿足:①有生命;②能夠自主運動;③對外界刺激能夠產生反應。可以按照這個條件將一些自然物劃分為動物,比如飛翔的天鵝、水中游的鯨魚,還有狗和貓等。當有了這個規則并且按照這個規則進行分類時,把一個物體劃分為適當的類別就相當簡單了。我們可以將動物再分類,定義出不同的規則將其繼續區分,直到能夠構造出一個自頂向下漸趨復雜的抽象層次結構為止。比如可以把飛翔的天鵝劃分為鳥類,將貓和狗劃分為哺乳類。圖1-1是一個抽象層次結構的例子。

圖1-1 自然物的抽象層次結構示例
然而,在抽象過程中,由于規則的不嚴格,會導致抽象面臨著挑戰。比如前面所說的鯨魚,可以劃分為哺乳類,但是也有標準讓其劃分為魚類。合適的規則集合對于抽象非常的重要。
(4)將軟件重用得以保證
抽象強調實體的本質、內在的屬性。在認知新的事物時,通常會搜索以前創建和掌握的抽象模型,用來更好地抽象。當認知到大卡車后,抽取出大卡車的抽象模型,再去認知小汽車的時候通常會自動聯想到大卡車。將兩者特性進行對比,并且找到可供重用的近似抽象的過程,稱為模式匹配和重用。在軟件系統開發過程中,模式匹配和重用也是面向對象軟件開發的重要技術之一,它避免了每做一個項目都必須重新開始的麻煩。如果能夠充分地利用抽象的過程,在項目實施中將獲得極大的生產力。良好的抽象無論什么時候都不會過時。
抽象忽略了事物中與當前目標無關的非本質特性,強調與當前事物相關的特性,并將事物正確地歸類,得出事物的抽象模型,并且為對象的重用提供了保障。可以通過類來實現對象狀態和行為的抽象。
- Facebook Application Development with Graph API Cookbook
- Drupal 8 Blueprints
- JavaScript+jQuery網頁特效設計任務驅動教程(第2版)
- PowerCLI Cookbook
- Python計算機視覺編程
- Java深入解析:透析Java本質的36個話題
- 云計算通俗講義(第3版)
- Python應用輕松入門
- iOS應用逆向工程(第2版)
- Java Fundamentals
- 移動增值應用開發技術導論
- Web Developer's Reference Guide
- ASP.NET求職寶典
- 深度學習程序設計實戰
- Ext JS 4 Plugin and Extension Development