日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

结构化方法和面向对象方法的比较

發(fā)布時間:2024/3/24 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 结构化方法和面向对象方法的比较 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

結(jié)構(gòu)化方法和面向?qū)ο蠓椒ǖ谋容^

翁松秀

北京航空航天大學(xué)

????摘要:編程之精髓在于編程思想,而不同的編程方法有不同的編程思想。結(jié)構(gòu)化程序設(shè)計方法一直以來都是編程人員基本的編程方法,而近年來流行的面向?qū)ο蠓椒ㄒ矀涫苋藗兦嗖A。文章通過介紹編程世界的這兩種主要編程方法,結(jié)構(gòu)化方法和面向?qū)ο蠓椒ǖ姆治觥⒃O(shè)計和應(yīng)用。并在最后對兩種方法進行比較分析,比較結(jié)構(gòu)化方法和面向?qū)ο蠓椒ň幊趟枷氲漠愅蛢煞N方法的應(yīng)用。

關(guān)鍵詞:結(jié)構(gòu)化方法;面向?qū)ο蠓椒?#xff1b;編程思想;再抽象;再模塊化;

?  0?前言

  結(jié)構(gòu)化方法和面向?qū)ο蠓椒ㄊ钱斍败浖_發(fā)最常用的方法。基于“瀑布模型”的軟件開發(fā)方法中,以軟件架構(gòu)為核心,采用結(jié)構(gòu)化設(shè)計和分析方法將軟件開發(fā)的生命周期劃分為制定計劃、需求分析、軟件設(shè)計、程序編寫、軟件測試和運行維護六個基本階段。而在通過迭代式和增量式進行開發(fā)的敏捷軟件開發(fā)方法中,主要采用面向?qū)ο蟮脑O(shè)計和分析方法。結(jié)構(gòu)化方法與面向?qū)ο蠓椒ǖ氖褂?#xff0c;與具體的開發(fā)環(huán)境和開發(fā)方法有關(guān),如傳統(tǒng)軟件工程中更適合用結(jié)構(gòu)化方法,而敏捷軟件開發(fā)方法中面向?qū)ο箝_發(fā)方法更受青睞。

  1???結(jié)構(gòu)化方法

  結(jié)構(gòu)化編程思想由艾慈格·迪杰斯特拉在1976年在《GOTO陳述有害論》中提出,1975年賴瑞·康斯坦丁和愛德華·尤登提出結(jié)構(gòu)化設(shè)計,1978年湯姆·迪馬克和愛德華·尤登等在1975年提出結(jié)構(gòu)化分析,后來逐漸被完善,形成現(xiàn)在軟件開發(fā)方法中主要采用的結(jié)構(gòu)化方法。結(jié)構(gòu)化方法從功能上對系統(tǒng)進行劃分,將系統(tǒng)按功能劃分成各個模塊,將子模塊編寫成子程序,通過子程序之間的結(jié)構(gòu)和層次之間的耦合來解決復(fù)雜的問題。結(jié)構(gòu)化方法按軟件周期可劃分為結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化實現(xiàn),這里主要討論SA和SD。

  1.1?結(jié)構(gòu)化分析(Structured Analysis)

  結(jié)構(gòu)化分析是通過數(shù)據(jù)來對需求進行分析,功能模塊之間通過數(shù)據(jù)進行聯(lián)系,采用的建模技術(shù)有:數(shù)據(jù)流圖DFD(Data Flow Diagram)、ERD(Entity Relation Diagram)和數(shù)據(jù)字典DD(Data Dictionary)等。數(shù)據(jù)在結(jié)構(gòu)化分析方法中舉足輕重,就相當于血管之于人體,系統(tǒng)的各個模塊通過數(shù)據(jù)的傳遞進行溝通和聯(lián)系,導(dǎo)致了功能模塊的強耦合性,模塊之間的耦合性降低了結(jié)構(gòu)化程序的可重用性和可維護性。主要分析步驟如下:

  ①? 分析當前的情況,做出反映當前物理模型的DFD;

  ②? 推導(dǎo)出等價的邏輯模型的DFD;

  ③? 設(shè)計新的邏輯系統(tǒng),生成數(shù)據(jù)字典和基元描述;

  ④? 建立人機接口,提出可供選擇的目標系統(tǒng)物理模型的DFD;

  1.2?結(jié)構(gòu)化設(shè)計(Structured Design)

  結(jié)構(gòu)化設(shè)計階段將分析階段得到的目標系統(tǒng)物理模型的DFD表示的具體信息轉(zhuǎn)化成程序結(jié)構(gòu)的設(shè)計描述,過渡成軟件結(jié)構(gòu)。在這個過程中采用的建模技術(shù)有:系統(tǒng)結(jié)構(gòu)圖SSD(System Struct Diagram)。這個過程分兩步完成,第一步是從分析得到的結(jié)果出發(fā),構(gòu)造一個設(shè)計方案,決定系統(tǒng)功能模塊的結(jié)構(gòu)。第二步進行詳細設(shè)計,確定每個功能模塊的內(nèi)部控制結(jié)構(gòu)和算法,最終產(chǎn)生每個功能模塊的程序流程圖。具體步驟如下:

  ①?? 評審和細化數(shù)據(jù)流圖;

  ②?? 確定數(shù)據(jù)流圖的類型;

  ③?? 把數(shù)據(jù)流圖映射到軟件模塊結(jié)構(gòu);

  ④?? 基于數(shù)據(jù)流圖逐層分解高層模塊,設(shè)計中下層模塊;

  ⑤?? 對模塊的控制結(jié)構(gòu)和算法進行優(yōu)化;

  ⑥?? 描述模塊接口;

  1.3?結(jié)構(gòu)化方法的應(yīng)用

  結(jié)構(gòu)化方法對需求變化的適應(yīng)能力比較弱,功能的改變甚至會牽一發(fā)而動全身,但由于結(jié)構(gòu)化分析和設(shè)計對系統(tǒng)進行完整的架構(gòu)和具體功能的分析以及實現(xiàn)的各個階段嚴謹?shù)臏y試,所以結(jié)構(gòu)化程序可靠性高。基于結(jié)構(gòu)化分析、設(shè)計和實現(xiàn)中的這些主要優(yōu)點和缺點,結(jié)構(gòu)化比較適合于像操作系統(tǒng)、實時處理系統(tǒng)等這樣以功能為主的系統(tǒng)。比如絕大多數(shù)操作系統(tǒng)都是以結(jié)構(gòu)化語言C語言寫的。

  2???面向?qū)ο蠓椒?/strong>

  面向?qū)ο驩O(Object Oriented)方法把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā),將系統(tǒng)中的數(shù)據(jù)和相關(guān)操作進行分類和封裝,抽象成一種新的數(shù)據(jù)結(jié)構(gòu)——類,并在系統(tǒng)的實現(xiàn)過程中實例化,實例化的對象與客觀實體有直接對應(yīng)關(guān)系,通過對象的屬性和行為,以及對象之間的關(guān)系來解決實際問題。面向?qū)ο蠓椒ㄎ樟私Y(jié)構(gòu)化的基本思想和優(yōu)點,在數(shù)據(jù)抽象的基礎(chǔ)上添加對操作的抽象,使面向?qū)ο蟪绦蚓哂懈咧赜眯浴C嫦驅(qū)ο蠓椒ㄆ鋵嵕褪墙Y(jié)構(gòu)化的再抽象和再模塊化。

  2.1?面向?qū)ο蠓治?Object Oriented Analysis)

  面向?qū)ο蠓治鲭A段通過分析,確定問題空間和解空間中所有對象及其屬性,進而確定每個對象的操作,即對事務(wù)的處理能力,然后通過對象之間的行為來確定對象之間的關(guān)系。具體步驟如下:

  ①?? 確定問題域和解空間;

  ②?? 區(qū)分類和對象;

  ③?? 區(qū)分整體對象以及組成部分,確定類的關(guān)系以及內(nèi)部結(jié)構(gòu);

  ④?? 定義類的數(shù)據(jù)(屬性)和操作(處理事務(wù)的行為);

  ⑤?? 確定附加的系統(tǒng)約束

  2.2?面向?qū)ο笤O(shè)計(Object Oriented Design)

  面向?qū)ο笤O(shè)計階段主要對分析階段的結(jié)果進行進一步的規(guī)范化整理,以便后面的具體實現(xiàn)。OOA階段和OOD階段沒有明顯的劃分界限,兩者相互銜接,最能體現(xiàn)出這種關(guān)系的是近年來出現(xiàn)的新的軟件生命周期模型——噴泉模型。如圖(1)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖(1)

  面向?qū)ο笤O(shè)計階段的主要步驟如下:

  ①?? 改進和完善分析階段對系統(tǒng)的分析結(jié)果;

  ② ? 設(shè)計交互過程和用戶接口;

  ③?? 設(shè)計任務(wù)管理、子系統(tǒng)以及任務(wù)之間的協(xié)調(diào)方式;

  ④?? 設(shè)計全局資源,確定任務(wù)或者子系統(tǒng)的資源分配;

  ⑤?? 設(shè)計對象;

  2.3?面向?qū)ο蠓椒ǖ膽?yīng)用

  面向?qū)ο蠓椒◤膯栴}的模型開始,模擬人對事物的認識對事物進行分類,進而識別對象,通過整理對象的內(nèi)部結(jié)構(gòu)和對象之間的關(guān)系不斷細化問題,它的本質(zhì)就是敏捷開發(fā)方法中的迭代和遞增。開發(fā)過程通過不斷地對功能進行反復(fù)的迭代,使系統(tǒng)的功能不斷完善。所以面向?qū)ο蠓椒ㄟm用于SCRUM、XP(極限編程)、CRYSTAL(水晶編程)、PDD(特性驅(qū)動開發(fā))等敏捷軟件開發(fā)。

  3???結(jié)構(gòu)化方法和面向?qū)ο蠓椒ǖ谋容^

  3.1?編程思想的比較

  軟件開發(fā)的過程就是人們使用各種計算機語言將現(xiàn)實世界的問題翻譯到計算機世界,可描述為圖(2):

圖(2)

  結(jié)構(gòu)化方法的編程思想是自上而下,逐步求精,按系統(tǒng)的功能進行模塊化設(shè)計,將一個復(fù)雜和完整的系統(tǒng)按功能分解成小的模塊,模塊內(nèi)由順序、分支和循環(huán)等基本控制結(jié)構(gòu)組成,各模塊的功能由子程序進行實現(xiàn)。如圖(3)

圖(3)

  而面向?qū)ο蠓椒ㄍㄟ^模擬人類日常的邏輯思維中經(jīng)常采用的思想方法和原則,將系統(tǒng)中的事物進行抽象、分類、繼承和封裝。通過抽象出來的類之間的行為關(guān)系來確定整個系統(tǒng)的聯(lián)系,并在系統(tǒng)中實例化需要的對象,在系統(tǒng)的設(shè)計中盡可能地運用人類的思維方式。與結(jié)構(gòu)化相比面向?qū)ο蟾先藗儗κ挛锖徒鉀Q問題的過程和思維方法。如圖(4)

圖(4)

  3.2?應(yīng)用的比較分析

  結(jié)構(gòu)化開發(fā)方法開發(fā)前期對系統(tǒng)的功能需求和非功能需求進行完整的架構(gòu),使軟件具有高可靠性。開發(fā)過程自上而下,按照嚴謹?shù)能浖_發(fā)生命周期:計劃、分析、設(shè)計、編碼、測試和維護逐個階段進行開發(fā),各個階段相互銜接,每一個階段都要通過嚴格的審查,測試通過才能進入下一個階段,保證了軟件的高質(zhì)量。所以比較適合于像操作系統(tǒng)、實時處理系統(tǒng)等這樣以功能為主的系統(tǒng)。而由于面向?qū)ο蠓椒ǖ瓦f增的本質(zhì),所以面向?qū)ο蠓椒ǜm合于在敏捷軟件開發(fā)中使用。如SCRUM、XP(極限編程)、CRYSTAL(水晶編程)、PDD(特性驅(qū)動開發(fā))等。

參考文獻:

[1]雷西玲,謝天保,何文娟. 面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較. 2001

[2]邵維忠,楊芙清. 面向?qū)ο蟮南到y(tǒng)分析. 1998

[3]蔡希堯. 面向?qū)ο蠹夹g(shù). 2001

[4]翁松秀. 敏捷軟件開發(fā)與傳統(tǒng)軟件工程概述比較. 2016

[5]張莉,裘國永. 結(jié)構(gòu)化方法與面向?qū)ο蠓椒ǖ谋容^分析. 陜西師范大學(xué)學(xué)報. 2001

?

https://www.cnblogs.com/maya389069192/p/6166238.html

總結(jié)

以上是生活随笔為你收集整理的结构化方法和面向对象方法的比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。