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