導航:首頁 > 編程語言 > 程序功能模塊設計

程序功能模塊設計

發布時間:2025-06-21 00:26:53

程序設計主要有哪些方法

程序設計主要方法有面向結構的方法和面向對象的方法。
結構化程序設計

隨著計算機的價格不斷下降,硬體環境不斷改善,運行速度不斷提升。程序越寫越大,功能越來越強,講究技巧的程序設計方法已經不能適應需求了。記得是哪本書上講過,一個軟體的開發成本是由:程序設計 30% 和程序維護 70% 構成。這是書上給出的一個理論值,但實際上,從我十幾年的工作經驗中,我得到的體會是:程序設計占 10%,而維護要佔 90%。也許我說的還是太保守了,維護的成本還應該再提高。下面這個程序,提供了兩種設計方案,大家看看哪個更好一些那?

題目:對一個數組中的100個元素,從小到大排序並顯示輸出。(BASIC)

方法1:冒泡法排序,同時輸出。

FOR I=1 TO 100
FOR J=I+1 TO 100
IF A[I] > A[J] THEN T=A[J]: A[J]=A[I]: A[I]=T
NEXT J
? A[I]
NEXT I

方法2:冒泡法排序,然後再輸出。

FOR I=1 TO 100
FOR J=I+1 TO 100
IF A[I] > A[J] THEN T=A[J]: A[J]=A[I]: A[I]=T
NEXT
NEXT

FOR I=1 TO 100
? A[I]
NEXT

顯然,「方法1」比「方法2」的效率要高,運行的更快。但是,從現在的程序設計角度來看,「方法2」更高級。原因很簡單:(1)功能模塊分割清晰——易讀;(2)也是最重要的——易維護。程序在設計階段的時候,就要考慮以後的維護問題。比如現在是實現了在屏幕上的輸出,也許將來某一天,你要修改程序,輸出到列印機上、輸出到繪圖儀上;也許將來某一天,你學習了一個新的高級的排序方法,由「冒泡法」改進為「快速排序」、「堆排序」。那麼在「方法2」的基礎上進行修改,是不是就更簡單了,更容易了?!這種把功能模塊分離的程序設計方法,就叫「結構化程序設計」。

面向對象的程序設計

隨著程序的設計的復雜性增加,結構化程序設計方法又不夠用了。不夠用的根本原因是「代碼重用」的時候不方便。面向對象的方法誕生了,它通過繼承來實現比較完善的代碼重用功能。很多學生在應聘工作,面試的時候,常被問及一個問題「你來談談什麼是面向對象的程序設計」,學生無言,回來問我,這個問題應該怎麼回答。我告訴他,你只要說一句話就夠了「面向對象程序設計是對數據的封裝;範式(模板)的程序設計是對演算法的封裝。」後來再有學生遇到了這個問題,只簡單的一句對答,對方就對這個學生就刮目相看了(學生後來自豪地告訴我的)。為什麼那?因為只有經過徹底的體會和實踐才能提煉出這個精華。

面向對象的設計方法和思想,其實早在70年代初就已經被提出來了。其目的就是:強製程序必須通過函數的方式來操縱數據。這樣實現了數據的封裝,就避免了以前設計方法中的,任何代碼都可以隨便操作數據而因起的BUG,而查找修改這個BUG是非常困難的。那麼你可以說,即使我不使用面向對象,當我想訪問某個數據的時候,我就通過調用函數訪問不就可以了嗎?是的,的確可以,但並不是強制的。人都有惰性,當我想對 i 加1的時候,干嗎非要調用函數呀?算了,直接i++多省事呀。呵呵,正式由於這個懶惰,當程序出BUG的時候,可就不好捉啦。而面向對象是強制性的,從編譯階段就解決了你懶惰的問題。

巧合的是,面向對象的思想,其實和我們的日常生活中處理問題是吻合的。舉例來說,我打算丟掉一個茶杯,怎麼扔那?太簡單了,拿起茶杯,走到垃圾桶,扔!注意分析這個過程,我們是先選一個「對象」------茶杯,然後向這個對象施加一個動作——扔。每個對象所能施加在它上面的動作是有一定限制的:茶杯,可以被扔,可以被砸,可以用來喝水,可以敲它發出聲音......;一張紙,可以被寫字,可以撕,可以燒......。也就是說,一旦確定了一個對象,則方法也就跟著確定了。我們的日常生活就是如此。但是,大家回想一下我們程序設計和對計算機的操作,卻不是這樣的。拿DOS的操作來說,我要刪除一個文件,方法是在DOS提示符下:c:> del 文件名<回車>。注意看這個過程,動作在前(del),對象在後(文件名),和面向對象的方法正好順序相反。那麼只是一個順序的問題,會帶來什麼影響那?呵呵,大家一定看到過這個現象:File not found. 「啊~~~,我錯了,我錯了,文件名敲錯了一個字母」,於是重新輸入:c:> del 文件名2<回車>。不幸又發生了,計算機報告:File read only. 哈哈,痛苦吧:)。所以DOS的操作其實是違反我們日常生活中的習慣的(當然,以前誰也沒有提出過異議),而現在由於使用了面向對象的設計,那麼這些問題,就在編譯的時候解決了,而不是在運行的時候。obj.fun(),對於這條語句,無論是對象,還是函數,如果你輸入有問題,那麼都會在編譯的時候報告出來,方便你修改,而不是在執行的時候出錯,害的你到處去捉蟲子。

同時,面向對象又能解決代碼重用的問題——繼承。我以前寫了一個「狗」的類,屬性有(變數):有毛、4條腿、有翹著的尾巴(耷拉著尾巴的那是狼)、鼻子很靈敏、喜歡吃肉骨頭......方法有(函數):能跑、能聞、汪汪叫......如果它去抓耗子,人家叫它「多管閑事」。好了,狗這個類寫好了。但在我實際的生活中,我家養的這條狗和我以前寫的這個「狗類」非常相似,只有一點點的不同,就是我的這條狗,它是:捲毛而且長長的,鼻子小,嘴小......。於是,我派生一個新的類型,叫「哈巴狗類」在「狗類」的基礎上,加上新的特性。好了,程序寫完了,並且是重用了以前的正確的代碼——這就是面向對象程序設計的好處。我的成功只是站在了巨人的肩膀上。當然,如果你使用VC的話,重用最多的代碼就是MFC的類庫。

㈡ c語言模塊化程序設計

1.模塊化編程是指將一個龐大的程序劃分為若干個功能獨立的模塊,對各個模塊進行獨立開發,然後再將這些模塊統一合並為一個完整的程序。這是C語言面向過程的編程方法,可以縮短開發周期,提高程序的可讀性和可維護性。

2.在單片機程序里,程序比較小或者功能比較簡單的時候,我們不需要採用模塊化編程,但是,當程序功能復雜、涉及的資源較多的時候,模塊化編程就能體現它的優越性了。如前面我們寫過的HT1380驅動程序、獨立按鍵掃描程序和12864程序,每一個程序都是只用一個源文件編寫就能完成,但是,當您製作一個12864液晶日歷的時候,需要用到HT1380驅動程序、獨立按鍵掃描程序和12864顯示程序,如果把這三個程序全部集中在一個源文件里,將導致主體程序臃腫且雜亂,這樣做並非不可取,只是降低了程序可讀性、可維護性和代碼的重用率。如果把這三個程序當做三個獨立的模塊放到你的主體工程進行模塊化編程,效果就不一樣了。實際上,模塊化編程就是模塊合並的過程,就是建立每個模塊的頭文件和源文件並將其加入到主體程序的過程。主體程序調用模塊的函數是通過包含模塊的頭文件來實現,模塊的頭文件和源文件是模塊密不可分的兩個部分,缺一不可。所以,模塊化編程必須提供每個模塊的頭文件和源文件。

㈢ 什麼是模塊化設計和結構化程序設計

模塊化設計,簡單地說就是程序的編寫不是開始就逐條錄入計算機語句和指令,而是首先用主程序、子程序、子過程等框架把軟體的主要結構和流程描述出來,並定義和調試好各個框架之間的輸入、輸出鏈接關系。逐步求精的結果是得到一系列以功能塊為單位的演算法描述。以功能塊為單位進行程序設計,實現其求解演算法的方法稱為模塊化。模塊化的目的是為了降低程序復雜度,使程序設計、調試和維護等操作簡單化。

結構化程序設計(structured programming)是進行以模塊功能和處理過程設計為主的詳細設計的基本原則。

㈣ 什麼是功能模塊

  功能模塊是指數據說明、可執行語句等程序元素的集合,它是指單獨命名的可通過名字來訪問的過程、函數、子程序或宏調用。功能模塊化是將程序劃分成若干個功能模塊,每個功能模塊完成了一個子功能,再把這些功能模塊總起來組成一個整體。以滿足所要求的整個系統的功能。
  功能模塊模塊化依據軟體結構圖示功能模塊化的根據是,如果一個問題有多個問題組合而成,那麼這個組合問題的復雜程度將大於分別考慮這個問題時的復雜程度之和。這個結論使得人們樂於利用功能模塊化方法將復雜的問題分解成許多容易解決的局部問題。功能模塊化方法並不等於無限制地分割軟體,因為隨著功能模塊的增多,雖然開發單個功能模塊的工作量減少了,但是設計功能模塊間介面所需的工作量也將增加,而且會出現意想不到的軟體缺陷。
  因此,只有選擇合適的功能模塊數目才會使整個系統的開發成本最小。功能模塊模塊獨立性功能模塊獨立的概念是功能模塊化、抽象、信息隱蔽和局部化概念的直接結果。抽象是指對事物、狀態或過程之間所存在的某些相似的方面集中和概括起來,而暫時忽略他們之間的差異,即考慮抽象事物的本質特徵而暫時不考慮他們的細節。
  信息隱蔽是指再設計功能模塊時使得一個功能模塊內所包含的信息(過程或數據),對於不需要這些信息的功能模塊來說是不能訪問的。信息隱蔽原則對於以後在軟體維護期間修改軟體時會帶來極大的好處,因為大量數據和過程是軟體的其他部分所不能覺察的,因而再對某個功能模塊修改時就不大會影響到軟體的其他部分,所謂局部化是指把一些關系密切的軟體元素在物理位置上彼此靠近。
  功能模塊獨立性是通過制定具有單一功能並且和其他功能模塊沒有過多聯系的功能模塊來實現的。每個功能模塊只涉及該軟體要求的一個具體子功能,而且與軟體結構的其他部分的介面是簡單的。功能模塊獨立性好的軟體介面簡單,易於編制,獨立的功能模塊也比較容易測試和維護,限制了功能模塊之間由於聯系緊密而引起的修改副作用。
  獨立性是保證軟體質量的重要因素。功能模塊獨立性度量功能模塊獨立性是由內聚性和耦合性兩個定性指標來度量的。內聚性是度量一個功能模塊內功能強度的一個相對指標。耦合性則用來度量功能模塊之間的相互聯系的程度。功能模塊耦合耦合是軟體結構中各功能模塊之間相互連接的一種度量,耦合強弱取決於功能模塊間介面的復雜程度、進入或訪問一個功能模塊的點以及通過介面的數據。
  耦合有以下幾種,他們之間的耦合度由高到低排列:☆內容耦合。如一個功能模塊直接訪問另一個功能模塊的內容,則這兩個功能模塊稱為內容耦合。☆公共耦合。如一組功能模塊都訪問統一全局數據結構,則稱之為公共耦合。☆外部耦合。如一組功能模塊都訪問統一全局數據項,則稱之為外部耦合。
  ☆控制耦合。如一功能模塊明顯地把開關量、名字等信息送入另一功能模塊,控制另一功能模塊的功能,則為控制耦合。☆標記耦合。如一組功能模塊共享了某個記錄,而不是簡單變數,即這些功能模塊都需某一數據的子結構時,就需要按該記錄的結構進行操作,並通過參數表來傳遞記錄信息,這樣的耦合稱之為標記耦合。
  ☆數據耦合。如一個功能模塊訪問另一個功能模塊,被訪問的功能模塊的輸入和輸出都是數據項參數,則這兩個功能模塊為數據耦合。☆非直接耦合。若兩個功能模塊沒有直接關系,他們之間的聯系完全是通過主程序的控制和調用來實現的,便稱這兩個功能模塊為非直接耦合,獨立性最強。
  上面只是對耦合機制進行了一個分類。原則上講,功能模塊化設計總是希望功能模塊之間的耦合表現為非直接耦合方式。但是,由於問題所固有的復雜性和空間方面的考慮,有時則要根據實際情況,全面權衡,選用其它類型的耦合。功能模塊內聚內聚是從功能角度來度量功能模塊內的聯系,一個好的內聚功能模塊應當恰好做一件事。
  它描述的是功能模塊內的功能聯系。內聚有如下的種類,其內聚度由弱到強排列:☆偶然內聚。一功能模塊中的代碼無法定義其不同功能的調用。但它使該功能模塊能執行不同的功能,這種功能模塊稱為巧合強度功能模塊。☆邏輯內聚。這種功能模塊把幾種相關的功能組合在一起,每次被調用時,有傳送給功能模塊參數來確定該功能模塊應完成那一種功能。
  ☆時間內聚。這種功能模塊順序完成一類相關功能,比如初始化功能模塊,它順序為變數置初值。☆過程內聚。如果一個功能模塊內的處理元素是相關的,而且必須以特定次序執行則稱為過程內聚。☆通信內聚。這種功能模塊除了具有過程內聚的特點外,還有另外一種關系,則它的所有功能都通過使用公共數據而發生關系。
  ☆順序內聚。如果一個功能模塊內的處理元素和同一個功能密切相關,而且這些處理必須順序執行,通常一個處理元素的輸出數據作為下一個處理元素的輸入數據,則稱為順序內聚。☆功能內聚。如果一個功能模塊包括並僅包括未完成某一具體任務所必需的所有成分,或者說功能模塊中所有成分結合起來是為了完成一個具體的任務,此功能模塊稱為功能強度模塊。
  功能模塊軟體功能模塊指標系統中的各功能模塊在納入時間、激活機制和控制方式等方面可以不相同。1)納入時間納入時間是指一個功能模塊被歸並到軟體的源語言描述之中的時間。比如宏功能模塊是由編譯器把它作為程序的一部分直接插入到引用位置上去的。而普通的子程序則是通過產生目標代碼與連接代碼而納入到軟體中的。
  2)激活機制功能模塊的激活機制通常有兩種:一個是通過引用來調用功能模塊,另一個是通過中斷來調用一個功能模塊。在實時系統中,通常使用後者。比如,使用一個外部時間來引起處理過程的中斷,然後使控制轉到另一個功能模塊。3)控制方式一般功能模塊具有單一入口和單一出口,並作為程序的一部分順序地執行,有時,也需要更為復雜的控制方式,如可重入功能模塊。
  這種功能模塊不以任何方式修改它自己或它所訪問的局部地址,從而這樣的功能模塊就可以同時被幾個任務使用。4)結構分類在軟體結構中,功能模塊可以分為以下幾類:順序功能模塊:它在沒有明顯中斷情況下被應用軟體調用和執行。增量功能模塊:它在調用結束之前可以被應用程序中斷,然後在中斷點重新啟動。
  並行功能模塊:它在並行多處理機環境中與別的功能模塊同時執行。

閱讀全文

與程序功能模塊設計相關的資料

熱點內容
什麼app可以看視頻瀏覽歷史 瀏覽:530
兒子要學編程怎麼勸說 瀏覽:548
apples錢包官網 瀏覽:505
怎麼更改配置文件編碼 瀏覽:619
蘋果appstore怎麼改成中國大陸 瀏覽:735
票據模板另存word文件 瀏覽:900
java生成ppt文件 瀏覽:861
ubuntu怎麼修改裡面的配置文件 瀏覽:616
萬年歷keil程序 瀏覽:133
前端h5後端java 瀏覽:453
eclipse代碼提示快捷鍵 瀏覽:473
銑床銑外圓怎麼編程 瀏覽:751
uniapp寫配置文件到本地 瀏覽:715
擦除屏幕密碼 瀏覽:341
微信讀書app如何下載書籍 瀏覽:243
西部數碼助手網站後台管理 瀏覽:486
關於旅遊的網站有哪些 瀏覽:86
數據表中關聯欄位是什麼 瀏覽:976
ae編程在哪裡 瀏覽:801
如何形成pdf文件 瀏覽:985

友情鏈接