王志花
石家莊計算機職業學院,河北石家莊 050061
面向過程是一種以過程為中心的編程思想。面向過程也可稱之為“面向記錄”的編程思想,他們不支持豐富的“面向對象”特性(比如繼承、多態等等),并且它們不允許混合持久化狀態和域邏輯。面向過程的思想,我們一般歸納為結構化分析方法。根據軟件生命周期的不同階段,結構化分析方法分為結構化分析(SA)、結構化設計(SD)、結構化程序設計(SP)等,主要的工具有DFD圖、E-R圖、結構化語言等,其精髓是自頂向下、逐步求精和模塊化設計。比如:某個單位的商品訂單處理軟件。我們在運用結構化分析方法分析時,會根據數據是怎樣一步步在各個處理序列中流動的,歸結出所需要的處理模塊,通常這些處理模塊會用一個函數或一個過程來描述,然后再按從上到下的順序把這些處理模塊組織起來,形成完整的過程執行序列。通常數據流圖在結構化分析中可以很直觀地幫我們表達出這種形態。
結構化分析方法是從功能角度來看待系統的,它展示了系統中端到端的處理過程,所以它在需求分析中顯得尤為重要。但從上例中我們也發現,這種自上而下的功能分解,意味著整體的采購過程將首先被分析,分解出各子過程的依賴關系,然后才是對訂購子過程的分析。實際上,分析過程往往不是這樣,通常同時需要各個不同層次上的系統信息,較低層的模型可能先被描述,然后經過抽象最后產生一個總模型。特別對一些大型的項目,需求不明確,結構復雜,因果關系無法分辨清楚,再把這種清晰的過程模擬出來實在是太困難了,在這種情況下面向過程就不再適用。
在實際應用中,以上的矛盾目前已經被解決,同時也產生了很多新的方法論,面向對象就是現在比較常用的方法論之一。
面向對象(Object Oriented,簡稱OO)方法認為,世界是由一個個獨立的“對象”組成的,一切皆對象,每個對象都有自己的狀態和動作。具有相似狀態和動作的對象抽象出“類”,而這些“對象”就是這個“類”的一個實例。繁雜的對象可以由簡單的對象以某種方式組合而成,不同的對象相互作用就形成了系統。
面向對象的四大特性就是抽象、繼承、封裝、多態。這也是區別于面向過程的主要方面。
1)抽象:是指將具有一致的狀態和行為的對象抽象成類。所以類就是一組具有相同屬性和方法的對象的集合,比如:小明這個人-對象,人類-類。其中特殊的是抽象類,它不能被實例化,抽象方法只需聲明,而不需實現;
2)繼承:是子類自動共享父類屬性和方法的一種機制,是面向對象方法區別于其他方法的一個核心思想。繼承性規范了類的等級結構,實現了公共特性的共享,提高了軟件的重用性;
3)封裝:封裝的目的是使對象的定義和實現分離,減少耦合。對象之間只能通過接口進行信息交流,對象外部不能對對象中的數據隨意進行訪問和修改;
4)多態:指同一操作作用于不同對象時可以有不同的執行結果。
與結構化方法類似,面向對象方法也包括面向對象分析(OOA)、面向對象設計(OOD)、面向對象的程序設計(OOP)三個階段,常用的輔助工具有UML、CASE工具等。
我們同樣以一個例子來運用一下面向對象方法。例:對于一個圖書管理系統來說,它具有兩類用戶,一類具有借閱權限,而另一類只能在館內閱讀。
面向對象的一個任務就是找出其中的對象,然后根據這些對象抽象出所具有的類和類與類之間的關系。對象分類就是描述對象類與對象類之間是如何通過共有屬性和服務相互關聯。在本例中,只有閱讀權限的用戶是一類用戶,具有借閱權限的用戶是另一類用戶,他們具有不同的權限,但也可以抽象出他們都是用戶,他們都有用戶名、地址、電話等共有屬性,具有注冊和取銷注冊的動作,所以在這兩個類之上,又可以抽象出一個用戶類,它是這兩個類的父類,具有這兩個類的共有屬性。這兩個類繼承用戶類,便具有了這些共有屬性,同時,這兩個類又可以增加自己各自的屬性和方法。在某些需要下,還可以對這兩個分類再進行細分,加入更多的不同的屬性和方法形成下一級的子類,這些子類同樣繼承于這兩個類之一,并間接繼承于用戶類,具有其相應父類及父類的父類的屬性和方法。
面向對象的思想更符合人類認識世界的過程,人類認識世界是以客體為視角的,客體的屬性反應客體在某一時刻的狀態,客體的行為反映客體所能從事的活動。客體和客體之間沒有直接的關系,它們是通過某種刺激才發生連接。就像人類的個體,人與人無直接的關系,當一個人需要另一個人幫助時,兩個個體才發生關系。面向過程更加注重功能,分化了個體,背離了人們認識世界的方式。面向對象將屬性和方法綁定在一起形成了相對穩定的個體,如果需要改變也只是這個類對象個體的變化,不會像面向過程一樣,牽一發而動全身,一個變化就引起很多部分跟著變化,這使得安全性及擴展性都得到了提高。再有就是重用性,它是衡量一個軟件產品成功與否的重要標志。面向過程的設計,每個過程都是針對某個項目某個處理的特定過程,它無法實現大力度的復用,而面向對象的設計有高度的抽象,它把功能的實現封裝在組件的內部,對外提供統一的接口,只要調用這個組件時,符合這些接口的要求,就可以把該組件放在相似的項目中使用。基于以上的優勢,面向對象的分析方法越來越多的被人們使用,成為現在分析和設計方法中的主流。
[1]圣安德魯斯大學著.軟件工程[M].8版.程成,陳霞,譯.機械工業出版社.
[2]張友生著.系統分析師教程[M].清華大學出版社.
[3]面向對象.百度百科.http://baike.baidu.com/view/125370.htm.
[4]面向過程&面向對象.Jerrytian.http://www.cnblogs.com/JerryTian/archive/2011/04/07/2007385.html.