丁 嵐,范開勇,馮振穎
(深圳市賽為智能股份有限公司,深圳 518000)
在早期的程序設計時,幾乎全部采用面向過程的結構化程序設計模式,由于該模式是以函數為主導,所以在實現時需要將目標需求分解為多個不同的函數,并以函數為單位完成預定任務。由于在這種模式下,公共資源定義,需要通過全局變量才能夠實現數據在多個函數之間傳遞,然而在函數內部卻能夠實現對全局變量的變更,所以很容易導致全局變量發生潛在錯誤,進而影響系統的使用。為了解決面向過程程序設計的不足,隨著信息技術的發展,出現了更為先進的程序設計模式,即面向對象程序設計,其是將目標需求抽象、封裝為一個獨立的對象,并為對象賦予與外界隔離的屬性、動作等,由于在這種模式下,數據交互只有通過對象公開方法進行,不允許直接修改對象的屬性及動作,所以就避免了不同對象之間數據的互相干擾,進而提高程序設計的安全性、可靠性,所以越來越受到重視及關注。
面向對象(Object Oriented,OO)作為一種新型的程序設計方法,其是以對象模型為基礎進行的抽象過程,并在應用過程中形成了描述自己的抽象概念定義,包括對象、類、封裝、繼承以及多態等,其中部分核心抽象定義分析如下:
(1)對象(Object)。在面向對象設計時,所有的目標需求均根據需求內容的不同抽象為可獨立完成某項功能的對象,并通過標識、行為和狀態對對其進行詳細描述。
(2)類(Class)。為了實現對具備相同結構、屬性及行為目標對象的高效管理,將這些對象匯總統一管理,并以類的方式進行。
(3)封裝(encapsulation)。為了防止目標對象之間結構、行為等的互相影響,同時也為了提高對象設計的靈活性,將目標對象封裝起來提供統一服務,保障了數據的安全。
(4)繼承(extends)。通過繼承,能夠實現子類對父類中所有結構、行為的傳承,并且能夠對父類進行擴展、覆蓋及重定義,不但降低了代碼實現的重復工作,而且提高了程序設計的靈活性。
(5)多態(implements)。多態在應用時,各個子類可以對父類進行分別實現,進而充當父類表達自己獨特的需求,實現同一目標對象的不同表現。
在面向對象程序設計時,常用的設計語言包括Smalltalk、Eiffel、C++以及Java等,并且這些語言在設計時,將面向對象的概念充分植入到程序語言的骨髓中,能夠實現與面向對象概念一一對應的程序設計對象,進而完成面向對象程序設計的功能,最終為面向對象程序系統編碼實現提供了支持。
面向對象設計(Object Oriented Design,OOD)在應用時,其目的不是對目標功能、數據進行分解,而是希望通過對目標對象進行符合現實客觀世界的抽象描述,完成目標對象的定義,并通過程序設計中的軟件對象模型仿真現實世界的對象和行為。
由于針對現實世界的各種問題解決,人們通過長期的實踐總結形成了一定的處理經驗,并形成了獨具特色的人工仿真系統,然而傳統的面向過程設計方法卻忽略了這種仿真,并由系統分析人員完成需求定義、設計人員完成軟件實現,由于缺少了自然的仿真交互,所以很難適應不斷增長的需求變更。面向對象程序在設計時,其原理恰恰利用了現實世界的仿真系統原型,并提供了與仿真系統相似的一一對應關系建模原型,所以也克服了現實世界抽象模型與軟件結構之間的差異,最終為系統程序設計提供了更準確、更可靠的方式。
根據面向對象程序設計原理分析可知,其主要是通過建模的方式完成對目標系統全生命周期的交互設計,而在建模時,其建模方法也包括OMT、OOSE、Booch、OOA/OOD以及UML等,由于UML統一建模語言集成了眾多建模方法的優勢,并規避了不足,所以UML建模已經成為當前面向對象程序設計過程中最重要手段。
在基于UML的面向對象建模設計時,其主要是通過各種圖形進行表達設計,包括用例圖、類圖、對象圖、序列圖、協作圖、狀態圖、活動圖、部署圖,具體分析如下:
(1)用例圖。通過用例圖設計,能夠以第三者的角度完成系統交互描述,包括系統的參與者、可參與用例以及他們之間的通信,進而為與客戶需求溝通,執行需求定義提供支持;
(2)類圖。類圖在設計時,主要完成目標系統的抽象定義,包括類名、屬性及操作三部分。另外,為了描述各個類之間的關系,其通過關聯、聚合以及泛化等關系完成目標系統可交互對象的描述;
(3)對象圖。對象圖在設計,主要用于定義顯示具備類似遞歸關系的目標實例,進而完成部分復雜對象的解釋;
(4)序列圖。序列圖在設計時,主要以時間順序定義目標功能的執行過程,包括執行時間點、執行順序以及數據傳遞等;
(5)協作圖。協作圖在設計時,作用是以對象角色為基準,完成目標功能執行過程的描述;
(6)狀態圖。通過狀態圖的設計,能夠完成目標對象所處狀態以及潛在影響狀態變更的因素進行展示;
(7)活動圖?;顒訄D在設計時,其作用是展示一個進程中各個活動對象之間的彼此依賴關系;
(8)部署圖。部署圖在設計時,主要描述展示了目標系統建設時需要的軟硬件資源。
綜上可知,在基于UML的面向對象程序設計最佳實踐時,其原理是根據軟件系統各個生命周期的建設需求,設計出不同的可交互圖模型,進而通過模型設計完成目標需求的可視化轉化,最終為設計實現質量可靠、運行高效、服務穩定的軟件系統提供了保障。
為了能夠給程序設計提供更高效、更便捷、更可靠以及更先進的支持,本文對面向對象程序方法進行了深入研究,包括面向對象設計核心對象、設計原理以及設計原型圖等,并通過面向對象設計與傳統面向過程設計之間的差異分析,提出了面向對象程序設計的優勢,最后對基于UML建模為基礎的面向對象設計模型進行了深入研究,并為基于面向對象的程序模型設計提供了藍圖。