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