理解面向过程和面向对象的程序设计方法
一、結(jié)構(gòu)化程序設(shè)計
1,概念:
傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計思想的核心是功能的分解。將問題分解為多個功能模塊,根據(jù)模塊功能來設(shè)計用于存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),最后編寫了過程(函數(shù))對數(shù)據(jù)進(jìn)行操作實現(xiàn)模塊的功能。程序由一系列處理數(shù)據(jù)的過程(函數(shù))組成。這種設(shè)計方法的重點是面向過程的,也稱為面向過程的程序設(shè)計方法。
2,特點:
傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計思想可歸結(jié)為:
“程序=數(shù)據(jù)結(jié)構(gòu)+算法”
數(shù)據(jù)結(jié)構(gòu)用于量化描述要解決的問題。
算法研究如何以更快、更有效的方式來組織求解問題的具體過程,將程序定義為處理數(shù)據(jù)的一系列過程。面向過程的程序設(shè)計把數(shù)據(jù)結(jié)構(gòu)和過程看作兩個實體,以過程為中心,特點是數(shù)據(jù)和程序分離,即數(shù)據(jù)和數(shù)據(jù)處理分離。
結(jié)構(gòu)化程序設(shè)計的基本思想是采用自頂向下,并逐步細(xì)化的設(shè)計方法。算法實現(xiàn)采用順序、選擇、循環(huán)三種控制結(jié)構(gòu)。
3,實例:
4,優(yōu)缺點:
優(yōu)點:
通過自頂向下,并逐步細(xì)化的設(shè)計方法,為處理復(fù)雜問題提供有力手段。性能比面向?qū)ο蟾?#xff0c;因為類調(diào)用時需要實例化,開銷比較大,比較消耗資源,比如單片機、嵌入式開發(fā)、Linux/Unix等一般采用面向過程開發(fā),性能是最重要的因素
缺點:
(1)模塊間調(diào)用關(guān)系復(fù)雜,增加了模塊間的依賴性和修改調(diào)試程序的難度,難以適應(yīng)大型軟件設(shè)計
(2)數(shù)據(jù)結(jié)構(gòu)和過程分離,一旦數(shù)據(jù)結(jié)構(gòu)發(fā)生改變,必須修改與之相關(guān)的所有模塊對應(yīng)的過程或函數(shù)
二、面向?qū)ο蟮某绦蛟O(shè)計
1,概念
在面向?qū)ο蟪绦蛟O(shè)計中,重點是將要被操作的數(shù)據(jù),而不是實現(xiàn)操作的過程。數(shù)據(jù)是軟件分解的基礎(chǔ),而不是功能。重要的是不把數(shù)據(jù)和對數(shù)據(jù)將要執(zhí)行的操作視為兩個單獨的實體。而是把它們當(dāng)作一個完整的實體(對象)。外部程序和過程程無法直接訪問數(shù)據(jù)本身,從而使數(shù)據(jù)更安全。同類對象還可抽象出共性,形成類。程序有類的定義和類的使用構(gòu)成,主程序中定義各個對象并規(guī)定他們之間傳遞消息的先后順序;程序中的操作都是通過向?qū)ο蟀l(fā)送消息來實現(xiàn)。對象接受消息后,啟動此類對象有關(guān)的函數(shù)(方法)來完成相應(yīng)的操作。
比如:每個銀行賬戶是一個對象,包括賬戶數(shù)據(jù)(賬戶號、名稱、余額等)和對數(shù)據(jù)的操作:存款、取款、轉(zhuǎn)賬(通過函數(shù)實現(xiàn)),所有的銀行賬戶具有相同的數(shù)據(jù)屬性和操作,可抽象出共性,形成銀行賬戶類。每個銀行帳戶都是銀行帳戶類的一個實例。在面向?qū)ο笾?#xff0c;每個銀行帳戶都被稱為銀行帳戶類的對象。
對象與類的概念及關(guān)系:
對象間的交互:
2,特點
(1)封裝性
對象是一個封裝體,在其中封裝了該對象的屬性和操作。通過限制對屬性和操作的訪問權(quán)限,可以將屬性“隱藏”在對象內(nèi)部,對外部提供某些接口(公有),在對象之外只能通過接口對對象進(jìn)行操作。
(2)繼承與派生性
(3)多態(tài)性
多態(tài)性是指同一個消息被不同對象接收時,產(chǎn)生不同的結(jié)果,即同一接口,不同方法。分為編譯時多態(tài)(函數(shù)、運算符重載實現(xiàn))和運行時多態(tài)(繼承和虛函數(shù)實現(xiàn))
3,面向?qū)ο蟮能浖_發(fā)方法:
4,優(yōu)缺點:
優(yōu)點:
(1)易維護(hù)、易復(fù)用、易擴展,由于面向?qū)ο笥蟹庋b、繼承、多態(tài)性的特性,可以設(shè)計出低耦合的系統(tǒng),使系統(tǒng)更加靈活、更加易于維護(hù)。
(2)可直接模擬現(xiàn)實世界。
缺點:
性能比面向過程低
總結(jié)
以上是生活随笔為你收集整理的理解面向过程和面向对象的程序设计方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 釜山行有的2部吗?讲的是啥?
- 下一篇: win7查看电脑上openCV的版本