面向过程、面向函数、面向对象的区别浅谈
Python的面向過程、面向函數(shù)、面向?qū)ο蟮膮^(qū)別淺談
轉(zhuǎn)自--獵奇古今,加上其他
有人之前私信問我,python編程有面向過程、面向函數(shù)、面向?qū)ο笕N,那么他們區(qū)別在哪呢?
面向過程就是將編程當(dāng)成是做一件事,要按步驟完成!
比如煮咖啡這件事,先拿一定量的咖啡豆,然后磨成粉末,再倒入咖啡機(jī),等待幾分鐘,就煮好了咖啡。大概過程是這樣的
整個(gè)過程是按步驟一步一步執(zhí)行,最終達(dá)到目標(biāo)!
面向函數(shù)呢,就是將編程分成N件事情,分配每件事情為一個(gè)函數(shù),然后要按步驟執(zhí)行函數(shù)完成!
同樣是上面的例子,我們可以這樣實(shí)現(xiàn)
分解整個(gè)任務(wù),執(zhí)行每個(gè)單獨(dú)小任務(wù),該哪個(gè)任務(wù)執(zhí)行,就通知對(duì)方即可,執(zhí)行的過程呢,已經(jīng)提前封裝在函數(shù)內(nèi)了!
面向?qū)ο缶筒灰粯恿?#xff0c;將整個(gè)任務(wù)封裝成一個(gè)大的類,在這個(gè)類里面詳細(xì)分解執(zhí)行每個(gè)步驟,只需要執(zhí)行類就可以完成任務(wù)
還以上面例子來說,面向?qū)ο缶褪俏也辉僮约褐罂Х攘?#xff0c;而且先設(shè)計(jì)一個(gè)機(jī)器人,告訴它煮咖啡的每個(gè)步驟(這里注意,你可以使用別人機(jī)器人提前設(shè)定好的程序哦),然后放在一邊,當(dāng)我想煮咖啡的時(shí)候,只需要給機(jī)器人一個(gè)指令,就自動(dòng)煮好一杯咖啡了!在代碼中是這樣的
只需要告訴機(jī)器人,去煮咖啡,一會(huì)機(jī)器人會(huì)自動(dòng)將咖啡煮好并報(bào)告結(jié)果!
總結(jié)
面向過程:需要你自己去一步一步的執(zhí)行
面向函數(shù):也是需要自己去一步一步執(zhí)行,只是執(zhí)行的過程已經(jīng)提前設(shè)定好了
面向?qū)ο?#xff1a;讓機(jī)器人去執(zhí)行 ,因?yàn)橐呀?jīng)設(shè)定好執(zhí)行步驟,你只需等待結(jié)果就好了
因此,在我看來,面向過程和對(duì)象,是自己在干活,面向?qū)ο?#xff0c;是先創(chuàng)造機(jī)器人,然后讓機(jī)器人去干活。
站在計(jì)算機(jī)程序角度來講,面向過程(函數(shù))和面向?qū)ο蟮谋举|(zhì)理解為:
面向過程(函數(shù))的程序設(shè)計(jì)把計(jì)算機(jī)程序視為一系列的命令集合,即一組函數(shù)的順序執(zhí)行。為了簡化程序設(shè)計(jì),面向過程把函數(shù)繼續(xù)切分為子函數(shù),即把大塊函數(shù)通過切割成小塊函數(shù)來降低系統(tǒng)的復(fù)雜度。
而面向?qū)ο蟮某绦蛟O(shè)計(jì)把計(jì)算機(jī)程序視為一組對(duì)象的集合,而每個(gè)對(duì)象都可以接收其他對(duì)象發(fā)過來的消息,并處理這些消息,計(jì)算機(jī)程序的執(zhí)行就是一系列消息在各個(gè)對(duì)象之間傳遞。
總的來說:面向?qū)ο笫菍⑹挛锔叨瘸橄蠡?#xff0c;面向?qū)ο蟊仨毾冉⒊橄竽P?#xff0c;之后直接使用模型就行了;面向過程是一種自頂向下的編程!
本人認(rèn)識(shí):
第一,研究考察的基本單元(粒度)及其特性,命令,函數(shù),還是對(duì)象?第二,如何使用這些粒度單元,讓他們相互作用,誰先誰后的調(diào)度;第三,要看實(shí)際業(yè)務(wù)與哪個(gè)粒度比較接近,不要硬套,否則就如拿著java搞匯編一樣,誰蛋疼誰知道。還有其他范式,如聲明式,響應(yīng)式。
進(jìn)一步:
命令范式(腳本過程),就是將各種單詞組成一段話。
函數(shù)式,你拿了一個(gè)插排,開啟開關(guān)(輸入?yún)?shù):電壓220伏特),打開電飯鍋(輸入?yún)?shù):15min等),盛入飯碗;每個(gè)步驟都用函數(shù)傳入?yún)?shù)完成,這個(gè)結(jié)構(gòu)較松散,插排不一定要跟電飯鍋有個(gè)特別的關(guān)系。你說要搞個(gè)什么專門做飯系統(tǒng)之類,就像oop了,插排就專有了,它與電飯鍋關(guān)系就緊密了,都屬于做飯系統(tǒng)內(nèi)部成員。
面向?qū)ο?#xff08;合適的對(duì)象具有較好內(nèi)聚性),給你一臺(tái)機(jī)器(對(duì)象)讓它干活,你需要打開電源,按下制作命名,然后按下結(jié)束。
聲明式,如sql, 把要干的活用個(gè)句子描述好了就行了。
響應(yīng)式比oop更隨性了,直接發(fā)一個(gè)短信(如幫我把這事弄一下。。)過去對(duì)方就幫你干活了,其他的你根本不用管。
這些基本研究考察單元的特性決定了: 當(dāng)基本單元構(gòu)建完成之后如何重用(所謂重用就是在不同地方多次使用)這些代碼,如果你有對(duì)象你就直接使用對(duì)象類;如果你的基本單元是函數(shù),那么你重用的只是函數(shù),否則不能重用就要在不同地方重寫了!若,你的基本單元是命令,那么別處的你似乎只能復(fù)制代碼了,納尼?若你需要的是各種服務(wù)類似的,比如點(diǎn)外賣,你只要,再點(diǎn)擊一下,我要了。。。
正是這些狀況,各種編程方式就有不同的性質(zhì)表現(xiàn)和結(jié)構(gòu)組成,正所謂動(dòng)機(jī)決定表現(xiàn),總體運(yùn)行機(jī)理決定樣本一樣。各自范式酌情恰當(dāng)使用才是最牛,硬拗勉強(qiáng)未必好過。。
也有更多的空間劃分隔離和狀態(tài)保持
轉(zhuǎn)載于:https://www.cnblogs.com/wdmx/p/9999420.html
總結(jié)
以上是生活随笔為你收集整理的面向过程、面向函数、面向对象的区别浅谈的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么花呗不能用了?原因有哪些?
- 下一篇: 支付宝信用卡导入账单支持哪些邮箱?可以导