




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
結構化程序設計與面向對象程序設計的比較研究【摘要】本文通過淺析面向對象方法與結構化方法的比較,分析探討了結構化方法和面向對象方法存在的問題,在比較兩者內在一致性和主要區別基礎上,提出在軟件開發過程中應結合面向對象方法與結構化方法?!娟P鍵詞】結構化方法;面向對象方法;軟件開發;區別引言隨著計算機軟硬件各方面的飛速發展,計算機領域的觀念和方法日新月異。面向對象方法始于20世紀60年代挪威奧斯陸大學和挪威計算機中心共同研究的SMULA語言。70年代,人們都認為結構化方法是最好的系統開發方法,然而,隨著計算機應用技術的不斷發展,結構化方法越來越不能適應日益復雜龐大且高速發展的信息系統的建設。80年代以來,面向對象方法(ObjecOrientedMethodology)正引起越來越強烈的關注和重視,并在業內掀起一股新的面向對象編程浪潮。由于面向對象方法克服了傳統的結構化方法在建立問題系統模型和求解時存在的缺陷,提供了更合理、更有效、更自然的方法。1.結構化程序設計與面向對象程序設計的現況結構化方法軟件危機與向對象方法的提出60年代末開始,國際上出現了“軟件危機”,主要表現是:軟件質量差、成本及開發進度難以控制,維護工作麻煩,產生這一危機的根本原因在于結構化方法強烈依賴系統邏輯模型的完整性描述,難以做到系統的動態變化與擴展,系統開發速度慢、周期長、費用高;結構化設計方法講究的是自頂而下的“瀑布式”設計,使數據結構的設計僅服從于當前功能實現的要求,為以后的擴充和重用設置了巨大的障礙。結構化方法中提高軟件的結構化、模塊化及可讀性等基本思想是完全正確的,但問題空間和解空間在結構上存在著不一致性,使大型信息系統的開發和設計面臨許多困難。解決這一難題的關鍵在于分析、設計、實現一個系統的方法和過程應盡可能接近我們認識系統的方法和過程,即問題空間與解空間在結構上盡可能一致。面向對象方法解決了傳統結構化方法中問題空間和解空間在結構上不一致的問題,避免了從分析和設計到軟件模塊結構間的多次轉換過程,使開發軟件變得簡捷、高效、合理。面向對象方法首先強調來自域的對象,然后圍繞對象設置屬性和操作。它盡可能模擬人類習慣的思維方式。把問題域的概念直接映射到對象和對象之間的接口,符合人們的常用的思維方式,減少結構化方法的從問題域到分析階段的映射誤差。面向對象方法鼓勵開發者使用“對象”的觀念去看待問題。2.面向對象方法與結構化方法的比較2.1面向對象方法與結構化方法的比較如表類目面向對象程序設計結構化程序設計基本思想自下向上設計類自上而下,逐步細化基本概念類、對象、繼承過程、函數、數據語言基于對象、面向對象語言面向過程語言解決問題的出發點面向對象面向過程操作單位對象數據程序控制方式“事件”激活和控制調用控制和返回拓展性拓展性好拓展性差重用行可以不可以層次結構類的層次結構模塊的層次結構轉碼方式平滑過程,無縫連接按規則轉換,有縫連接運行效率運行效率相對低運行效率相對高2.2面向對象方法與結構化方法的比較用實例說明例:用程序來描述瀕危哺乳動物數量情況(用偽代碼完成)。(1)面向過程的程序示例“長吻針鼴”數目=100“俾格米人三趾樹懶”數目=120“亞洲獨角獸”數目=141“黑白領狐猴”數目=122……//生養程序段“長吻針鼴”數目=“長吻針鼴”數目+2//出生了一只長吻針鼴“俾格米人三趾樹懶”數目=“俾格米人三趾樹懶”數目+2//出生了兩只俾格米人三趾樹懶“亞洲獨角獸”數目=“亞洲獨角獸”數目+3//出生了3只亞洲獨角獸“黑白領狐猴”數目=“黑白領狐猴”數目+1//出生了一只黑白領狐猴……//死亡程序段“長吻針鼴”數目=“長吻針鼴”數目-2//死亡了一只長吻針鼴“俾格米人三趾樹懶”數目=“俾格米人三趾樹懶”數目-2//死亡了兩只俾格米人三趾樹懶“亞洲獨角獸”數目=“亞洲獨角獸”數目-3//死亡了3只亞洲獨角獸“黑白領狐猴”數目=“黑白領狐猴”數目-1//死亡了一只黑白領狐猴……正如上面的程序段所示,結構化的程序方法通常是:①定義變量及其初始值;②根據事件發展順序,進行對應的處理。在上面的程序中,我們先定義了各種瀕危哺乳動物的初始總數,然后這些數量會在出生、死亡時改變。這種程序的編寫思路是隨著事件,按照一定的過程來進行的。這種方法是一種“解題”的思維方式,把所有的需求,當作一個“應用題”一樣來“解答”。(2)面向對象的程序示例哺乳動物{“長吻針鼴”數目;“俾格米人三趾樹懶”數目;“亞洲獨角獸”數目;“黑白領狐猴”數目;出生(動物名,數量){動物名名+數量;}死亡(動物名,數量){動物名=動物名-數量;}}可以看出,面向對象的方法基本思想是:對問題空間進行自然分割,以更接近人類思維的方式建立問題域模型,以便對客觀實體進行結構模擬和行為模擬,從而使設計出的軟件盡可能直接地描述現實世界,構造出模塊化的,可重用的,維護性好的軟件,同時限定軟件的復雜性和降低開發維護費用。3.結構化方法與面向對象方法的內在聯系3.1二者在分解和抽象原則上一致分解和抽象是軟件開發中控制問題復雜性的重要原則。分解即化整分零,將問題剝繭抽絲,層層消化;抽象則是通過分解體現,在逐層分解時,上層是下層的抽象,下層是上層的具體解釋和體現,運用抽象可以不用一次考慮太多細節,而逐漸的有計劃有層次的了解更多細節。面向對象方法與結構化方法在運用分解和抽象原則上的要求是完全一致的。3.2局部化和重用性設計上的一致局部化是軟件開發中的一個重要原則,即不希望軟件一部分過多地涉及或影響軟件的其它部分。在結構化方法中,局部化主要體現在代碼與數據的分隔化,即程序各部分除必要的信息交流外,彼此相互隔離而互不影響,而面向對象方法則采用數據、代碼的封裝,即將數據、代碼和操作方法封裝成一個類似“黑箱”的整體對象,提高了程序的可靠性和安全性,同時增強了系統的可維護性。也就是說面向對象方法比結構化方法的運用更加深入更徹底。4.結構化方法與面向對象方法的區別4.1處理問題時的出發點不同結構化方法是強調過程抽象化和模塊化,以過程為中心構造或處理客觀世界問題的,它是一種面向過程的開發方法;面向對象方法強調把問題域的要領直接影射到對象及對象之間的接口上,是用符合人們通常的思維方式來處理客觀世界的問題。4.2處理問題的基本單位和層次邏輯關系不同結構化方法把客觀世界的問題抽象成計算機可以處理的過程,處理問題的基本單位是能清晰表達過程的模塊,用模塊的層次結構概括模塊或模塊間的關系和功能;面向對象方法是用計算機邏輯來模擬客觀世界中的物理存在,以對象的集合類作為處理問題的基本單位,盡可能使計算機世界向客觀世界靠攏,以使問題的處理更直截了當,面向對象方法是用類的層次結構來體現類之間的繼承和發展。4.3數據處理方式與控制程序方式不同結構化方法是直接通過程序來處理數據,處理完畢后即可顯示處理結果,在控制程序方式上是按照設計調用或返回程序不能自由導航,各模塊程序之間存在著控制與被控制的關系;面向對象方法將數據與對應的代碼封裝成一個整體,原則上其它對象不能直接修改其數據,即對象的修改只能由自身的成員函數完成,控制程序方式上是通過“事件驅動”來激活和運行程序。4.4分析設計與編碼轉換方式不同結構化方法強調分析、設計及編碼之間按規則進行轉換,貫穿軟件生命周期的分析、設計及編碼之間實現的是一種有縫的連接;面向對象方法從分析到設計再到編碼則采用一致性的模型表示,貫穿軟件生命周期的分析設計及編碼之間是一種平滑過程,即實現的是一種無縫連接。5.結構化方法和面向對象方法各有優缺點主要表現在如下幾個方面:5.1從執行效率來說。結構化方法比面向對象方法產生的可執行代碼更直接,更高。所以對于一些嵌入式的系統,結構化方法產生的系統更小,運行效率更高;5.2從重用性方面來說。采用結構化方法的系統難以修改和擴充。結構化分析與設計清楚定義了系統的接口,當系統對外界接口發生變動時,往往造成系統結構較大變動,難以擴充新的功能接口。采用結構化方法的系統可復用性較差。結構化方法將數據和操作分離,導致一些可重用的軟件構件在特定具體應用環境才能應用,降低了軟件的可重用性。面向對象方法具有很好的重用性。在遇到類似的問題,通過應用了抽象繼承等技術,來重用代碼;5.3從程序語言編譯器來說。面向對象方法,通過編譯器實現代碼的面向對象性。也就是說經過編譯器后,代碼會被翻譯為相對應的結構化代碼。所以要熟練開發,還要懂一定的結構化方法做為基礎;5.4從掌握難度來說,面向對象方法比結構化對象方法復雜,難于理解。面象對象方法的內容廣,概念多,而且很多都是難于理解,做到精通更加不易。應用面向對象方法,常常需要一種支持的分析,設計方法,如RUP方法,敏捷方法等。這些知識抽象枯燥,難于掌握。面象對象方法要經過長期的開發實踐才能很好的理解,掌握。相比之下,結構化方法知識內容少,容易上手;(五)從應用的范圍看,結構化方法適用于數據少而操作多的問題。實踐證明對于像操作系統這樣的以功能為主的系統,結構化方法比較適應它。面向對象方法正好相反,對于數據庫,信息管理等以數據為主的而操作較少的系統,用面向對象方法描述要好于結構化方法。6.結束語結語綜上所述,軟件開發的目標是以最小的代價開發出滿足用戶需求的軟件。為此,根據系統的實際需求,分別針對具體情況選擇采用不同的設計方法,可以充分發揮面向對象與結構化方法各自的優勢。目前在大多數軟件系統的分析設計過程中,這兩種方法都兼而有之。筆者以為,開發者在開發實踐中,從實際出發,考慮執行效率、開發者的技術水平、系統規模、是否為易需求變化的系統等因素,盡量利用它們各自的優點,避免他們的缺點。如對于開發一些小型嵌入式實時監控系統或同等穩定小系統,可用結構化方法;對于開發入門者,使用結構化方法和面向對象方法相結合;對于大型系統或者需求易變系統,使用面向對象方法??傊?根據實際出發,選取合適的軟件開發
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Brand KPIs for hotels:Travelodge in the United Kingdom-英文培訓課件2025.5
- 智慧社區公共空間建設與優化研究-以長春市西昌社區為例
- 《廣州市裝配式裝修認定指引(試行)》2025
- 倉儲會員開業活動方案
- 倉庫好物分享活動方案
- 仙居公司拓展活動方案
- 代辦公司年會策劃方案
- 代言評選活動方案
- 以純促銷活動方案
- 任務式體能活動方案
- 全國防災減災日培訓課件
- 學校德育工作手冊(組織機構 工作職責 流程 制度 要求)
- 醫藥健康安全
- 【MOOC】電子技術實習-北京科技大學 中國大學慕課MOOC答案
- 中學生守則40條
- 常用EXCEL函數使用詳解課件
- 中醫師承跟師月記1000字
- 國家開放大學Python程序設計形考任務實驗一-Python基礎基礎環境熟悉
- 2024年大學生求職面試技巧培訓課件
- 4.1被動運輸課件高一上學期生物人教版必修1
- 《基于PLC智能照明控制系統設計》開題報告2000字
評論
0/150
提交評論