科技信息
高校理科研究
結構化程序設計方法與面向對象程序設計方法之比較
樂山職業(yè)技術學院
喻梅
[摘要]本文通過淺析面向對象方法與結構化方法的比較,分析探討了結構化方法和面向對象方法存在的問題,在比較兩者內在一致性和主要區(qū)別基礎上,提出在軟件開發(fā)過程中應結合面向對象方法與結構化方法。[關鍵詞]面向對象方法結構化方法軟件開發(fā)
一、引言
隨著計算機軟硬件各方面的飛速發(fā)展,計算機領域的觀念和方法日新月異。面向對象方法始于20世紀60年代挪威奧斯陸大學和挪威
人們都認為結構化方法計算機中心共同研究的SMULA語言。70年代,
是最好的系統(tǒng)開發(fā)方法,然而,隨著計算機應用技術的不斷發(fā)展,結構化方法越來越不能適應日益復雜龐大且高速發(fā)展的信息系統(tǒng)的建設。80年代以來,面向對象方法(ObjecOrientedMethodology)正引起越來越強烈的關注和重視,并在業(yè)內掀起一股新的面向對象編程浪潮。由于面向對象方法克服了傳統(tǒng)的結構化方法在建立問題系統(tǒng)模型和求解時存在的缺陷,提供了更合理、更有效、更自然的方法。
二、結構化方法軟件危機與面向對象方法的提出60年代末開始,國際上出現(xiàn)了“軟件危機”,主要表現(xiàn)是:軟件質量成本及開發(fā)進度難以控制,維護工作麻煩,產生這一危機的根本原差、
因在于結構化方法強烈依賴系統(tǒng)邏輯模型的完整性描述,難以做到系統(tǒng)的動態(tài)變化與擴展,系統(tǒng)開發(fā)速度慢、周期長、費用高;結構化設計方
“瀑布式”設計,使數(shù)據(jù)結構的設計僅服從于當法講究的是自頂而下的
表1
項目基本思想概念或術語名詞編程的語言邏輯工具
處理問題的出發(fā)點控制程序方式可擴展性重用性
層次結構的邏輯關系設計、編碼的轉換方式分析、運行效率
面向對象
自底向上設計庫類對象、類、消息、繼承等C++、VB、JAVA等
數(shù)據(jù)字典動態(tài)模型圖、功能模型圖對象模型圖、面向問題
通過“事件驅動”來激活和運行程序
只需修改或增加操作,而基本對象結構不變,擴展性好好
用類的層次結構來體現(xiàn)類之間的繼承和發(fā)展平滑過程,無縫連接相對低
結構化設計
自頂向下設計過程庫,逐步求精,分而治之過程、函數(shù)、數(shù)據(jù)等C、BASIC、FORTRAN等
數(shù)據(jù)流圖、系統(tǒng)結構圖、數(shù)據(jù)字典狀態(tài)轉移圖、實體關系圖
前功能實現(xiàn)的要求,為以后的擴充和重用設置了巨大的障礙。
結構化方法中提高軟件的結構化、模塊化及可讀性等基本思想是完全正確的,但問題空間和解空間在結構上存在著不一致性,使大型信
解決這一難題的關鍵在于分析、設息系統(tǒng)的開發(fā)和設計面臨許多困難。
計、實現(xiàn)一個系統(tǒng)的方法和過程應盡可能接近我們認識系統(tǒng)的方法和過程,即問題空間與解空間在結構上盡可能一致。
面向對象方法解決了傳統(tǒng)結構化方法中問題空間和解空間在結構上不一致的問題,避免了從分析和設計到軟件模塊結構間的多次轉換過程,使開發(fā)軟件變得簡捷、高效、合理。
面向對象方法首先強調來自域的對象,然后圍繞對象設置屬性和操作。它盡可能模擬人類習慣的思維方式。把問題域的概念直接映射到對象和對象之間的接口,符合人們的常用的思維方式,減少結構化方法
面向對象方法鼓勵開發(fā)者使用“對的從問題域到分析階段的映射誤差。
象”的觀念去看待問題。
三、面向對象方法與結構化方法的比較(一)面向對象方法與結構化方法的比較如表1
面向過程
通過設計調用或返回程序
功能變化會危及整個系統(tǒng),擴展性差不好
用模塊的層次結構概括模塊和模塊之間的關系和功能按規(guī)則轉換,有縫連接相對高
①定義變量及其初始值;
②根據(jù)事件發(fā)展順序,進行對應的處理。
在上面的程序中,我們先定義了各種書的初始總數(shù),然后這些數(shù)量
采購時改變。這種程序的編寫思路是隨著事件,按照一定的會在銷售、
過程來進行的。這種方法是一種“解題”的思維方式,把所有的需求,當作一個“應用題”一樣來“解答”。
(2)面向對象的程序示例書店{
《C++程序設計》;《軟件工程》;《java編程思想》;《SQLServer2000》本數(shù);賣出(書名,數(shù)量){書名-數(shù)量;}
進貨(書名,數(shù)量){書名=書名+數(shù)量;}}
可以看出,面向對象的方法基本思想是:對問題空間進行自然分割,
(二)面向對象方法與結構化方法的比較用實例說明
例:用程序來描述一個電腦書店的銷售情況(用偽代碼完成)。(1)面向過程的程序示例《C++程序設計》本數(shù)=5《軟件工程》本數(shù)=6《java編程思想》本數(shù)=4《SQLServer2000》本數(shù)=7……
//銷售程序段《C++程序設計》本數(shù)=《C++程序設計》本數(shù)-1//賣出了1本《C++程序設計》
本數(shù)=《SQLServer2000》本數(shù)-2//賣出了2本《SQLServer2000》
《SQLServer2000》
……
//采購程序段《軟件工程》本數(shù)=《軟件工程》本數(shù)+5//新進了5本《軟件工程》《C++程序設計》本數(shù)=《C++程序設計》本數(shù)+3//新進了3本《C++程序設計》
……
正如上面的程序段所示,結構化的程序方法通常是:
—453—
科技信息
高校理科研究
主要表現(xiàn)在如下幾個方面:(一)從執(zhí)行效率來說。結構化方法比面向對象方法產生的可執(zhí)行代碼更直接,更高。所以對于一些嵌入式的系統(tǒng),結構化方法產生的系統(tǒng)更小,運行效率更高;
(二)從重用性方面來說。采用結構化方法的系統(tǒng)難以修改和擴充。結構化分析與設計清楚定義了系統(tǒng)的接口,當系統(tǒng)對外界接口發(fā)生變動時,往往造成系統(tǒng)結構較大變動,難以擴充新的功能接口。采用結構化方法的系統(tǒng)可復用性較差。結構化方法將數(shù)據(jù)和操作分離,導致一些可重用的軟件構件在特定具體應用環(huán)境才能應用,降低了軟件的可重用性。面向對象方法具有很好的重用性。在遇到類似的問題,通過應用了抽象繼承等技術,來重用代碼;
(三)從程序語言編譯器來說。面向對象方法,通過編譯器實現(xiàn)代碼的面向對象性。也就是說經(jīng)過編譯器后,代碼會被翻譯為相對應的結構化代碼。所以要熟練開發(fā),還要懂一定的結構化方法做為基礎;
(四)從掌握難度來說,面向對象方法比結構化對象方法復雜,難于理解。面象對象方法的內容廣,概念多,而且很多都是難于理解,做到精通更加不易。應用面向對象方法,常常需要一種支持的分析,設計方法,如RUP方法,敏捷方法等。這些知識抽象枯燥,難于掌握。面象對象方法要經(jīng)過長期的開發(fā)實踐才能很好的理解,掌握。相比之下,結構化方法知識內容少,容易上手;
(五)從應用的范圍看,結構化方法適用于數(shù)據(jù)少而操作多的問題。實踐證明對于像操作系統(tǒng)這樣的以功能為主的系統(tǒng),結構化方法比較適應它。面向對象方法正好相反,對于數(shù)據(jù)庫,信息管理等以數(shù)據(jù)為主的而操作較少的系統(tǒng),用面向對象方法描述要好于結構化方法。
七、結語
綜上所述,軟件開發(fā)的目標是以最小的代價開發(fā)出滿足用戶需求的軟件。為此,根據(jù)系統(tǒng)的實際需求,分別針對具體情況選擇采用不同的設計方法,可以充分發(fā)揮面向對象與結構化方法各自的優(yōu)勢。目前在大多數(shù)軟件系統(tǒng)的分析設計過程中,這兩種方法都兼而有之。
筆者以為,開發(fā)者在開發(fā)實踐中,從實際出發(fā),考慮執(zhí)行效率、開發(fā)
系統(tǒng)規(guī)模、是否為易需求變化的系統(tǒng)等因素,盡量利用者的技術水平、
如對于開發(fā)一些小型嵌入式實時監(jiān)它們各自的優(yōu)點,避免他們的缺點。
控系統(tǒng)或同等穩(wěn)定小系統(tǒng),可用結構化方法;對于開發(fā)入門者,使用結構化方法和面向對象方法相結合;對于大型系統(tǒng)或者需求易變系統(tǒng),使
總之,根據(jù)實際出發(fā),選取合適的軟件開發(fā)方法,達到用面向對象方法。
最佳的開發(fā)效益。
參考文獻
趙池龍.實用軟件工程[M].北京:電子工業(yè)出版社,2003[1][2]周之英.現(xiàn)代軟件工程.北京:科學出版社,2001[3][4]邵維忠,楊芙清.面向對象的系統(tǒng)設計[M].北京:清華大學出版社,2003
[5]ScottWAmbler.車皓陽,劉悅譯面向對象軟件開發(fā)教程[M].北京:機械工業(yè)出版社,2003
[6]胡慶彬,黃石生.結構化和面向對象程序設計方法的探討.計算
(1)機應用研究,1998
以更接近人類思維的方式建立問題域模型,以便對客觀實體進行結構
模擬和行為模擬,從而使設計出的軟件盡可能直接地描述現(xiàn)實世界,構造出模塊化的,可重用的,維護性好的軟件,同時限定軟件的復雜性和降低開發(fā)維護費用。
四、結構化方法與面向對象方法的內在聯(lián)系(一)二者在分解和抽象原則上一致
分解和抽象是軟件開發(fā)中控制問題復雜性的重要原則。分解即化整分零,將問題剝繭抽絲,層層消化;抽象則是通過分解體現(xiàn),在逐層分解時,上層是下層的抽象,下層是上層的具體解釋和體現(xiàn),運用抽象可以不用一次考慮太多細節(jié),而逐漸的有計劃有層次的了解更多細節(jié)。面向對象方法與結構化方法在運用分解和抽象原則上的要求是完全一致的。
(二)局部化和重用性設計上的一致
局部化是軟件開發(fā)中的一個重要原則,即不希望軟件一部分過多
在結構化方法中,局部化主要體現(xiàn)在代地涉及或影響軟件的其它部分。
碼與數(shù)據(jù)的分隔化,即程序各部分除必要的信息交流外,彼此相互隔離而互不影響,而面向對象方法則采用數(shù)據(jù)、代碼的封裝,即將數(shù)據(jù)、代碼
“黑箱”的整體對象,提高了程序的可靠性和操作方法封裝成一個類似
和安全性,同時增強了系統(tǒng)的可維護性。也就是說面向對象方法比結構化方法的運用更加深入更徹底。
五、結構化方法與面向對象方法的區(qū)別(一)處理問題時的出發(fā)點不同
結構化方法是強調過程抽象化和模塊化,以過程為中心構造或處理客觀世界問題的,它是一種面向過程的開發(fā)方法;面向對象方法強調把問題域的要領直接影射到對象及對象之間的接口上,是用符合人們通常的思維方式來處理客觀世界的問題。
(二)處理問題的基本單位和層次邏輯關系不同
結構化方法把客觀世界的問題抽象成計算機可以處理的過程,處理問題的基本單位是能清晰表達過程的模塊,用模塊的層次結構概括模塊或模塊間的關系和功能;面向對象方法是用計算機邏輯來模擬客觀世界中的物理存在,以對象的集合類作為處理問題的基本單位,盡可能使計算機世界向客觀世界靠攏,以使問題的處理更直截了當,面向對象方法是用類的層次結構來體現(xiàn)類之間的繼承和發(fā)展。
(三)數(shù)據(jù)處理方式與控制程序方式不同
結構化方法是直接通過程序來處理數(shù)據(jù),處理完畢后即可顯示處理結果,在控制程序方式上是按照設計調用或返回程序不能自由導航,各模塊程序之間存在著控制與被控制的關系;面向對象方法將數(shù)據(jù)與對應的代碼封裝成一個整體,原則上其它對象不能直接修改其數(shù)據(jù),即
“事件對象的修改只能由自身的成員函數(shù)完成,控制程序方式上是通過
驅動”來激活和運行程序。
(四)分析設計與編碼轉換方式不同結構化方法強調分析、設計及編碼之間按規(guī)則進行轉換,貫穿軟件生命周期的分析、設計及編碼之間實現(xiàn)的是一種有縫的連接;面向對象方法從分析到設計再到編碼則采用一致性的模型表示,貫穿軟件生命周期的分析、設計及編碼之間是一種平滑過程,即實現(xiàn)的是一種無縫連接。
六、結構化方法和面向對象方法各有優(yōu)缺點將電力設備分布參(上接第452頁)慮到應盡量降低數(shù)據(jù)處理難度,數(shù)等值電路徑向結構劃分為3層;同時,為使屏蔽極位置變化的影響規(guī)
由律具有一定的連續(xù)性,將其分布參數(shù)等值電路軸向結構劃分為8段。
于絕緣電阻試驗時所施加的電壓為直流,故忽略電容元件的影響,而用電阻元件進行等值。最終確定的分布參數(shù)等值電路如圖4所示。
種類的選擇,主要考慮其電導率特性參數(shù),而絕緣材料規(guī)格的選擇主要考慮模型結構總體框架尺寸和加工工藝的要求。本文開發(fā)的絕緣電阻試驗模型裝置如圖5所示。
5.結束語
本文通過理論分析計算,并利用電力設備實測數(shù)據(jù),驗證了兆歐表屏蔽極位置對絕緣電阻測試結果具有顯著影響,分析了測試數(shù)據(jù)實際存在的較大誤差。本文研究開發(fā)的絕緣電阻試驗模型,可實現(xiàn)對多種典型電氣設備不同內部絕緣狀況及復雜變化表面泄漏影響的物理模擬,可方便地實施各種測試接線方案并進行測試誤差分析,為課題進一步深化研究提供了條件。
參考文獻
陳化鋼.電力設備預防性試驗方法和診斷技術.北京:中國科學技[1]
術出版社,2001.
[2]石惟和.兆歐表的使用和維護.北京:人民郵電出版社,1985.[3]黃兆龍.使用屏蔽電極搖測絕緣電阻的正誤差分析.華東電力,
1998(3).
圖5絕緣電阻試驗模型實物照片
模型結構總體布局和最小尺寸的確定,主要應滿足試驗研究時接線操作的方便性,以及金屬元件加工工藝的要求。模型所采用絕緣材料
轉載請保留出處,http://www.doczj.com/doc/2e109c6e58fafab069dc020b.html