001 面向過程 vs 面向?qū)ο?/h2>

定義

  • 面向過程:一種以事件為中心的編程思想
  • 面向?qū)ο螅阂环N以“對(duì)象”為中心的編程思想

面向過程

??編程的時(shí)候把解決問題的步驟分析出來,然后用函數(shù)把這些步驟實(shí)現(xiàn),在一步一步的具體步驟中再按順序調(diào)用函數(shù)。

    • 舉例:下五子棋
      面向過程的解法:
      第一步:開始游戲 第二步:黑子先走
      第三步:繪制畫面 第四步:判斷輸贏
      第五步:輪到白子 第六步:繪制畫面
      第七步:判斷輸贏 第八步:返回步驟(2) 第九步:輸出最后結(jié)果
下五子棋{
  開始游戲();
  黑子先走();
  繪制畫面();
  判斷輸贏();
  輪到白子();
  繪制畫面();
  判斷輸贏();
  返回到 黑子先走();
  輸出最后結(jié)果;
}

核心點(diǎn):分而治之、關(guān)注過程

面向?qū)ο?/h1>

??把要解決的問題分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)對(duì)象在整個(gè)解決問題的步驟中的屬性和行為

    • 舉例:下五子棋
      面向?qū)ο蟮慕夥ǎ?/strong>
      第一步:
      將整個(gè)五子棋游戲分為三個(gè)對(duì)象:
      (1)黑白雙方,這兩方的行為是一樣的
      (2)棋盤系統(tǒng),負(fù)責(zé)繪制畫面
      (3)規(guī)則系統(tǒng),負(fù)責(zé)判定犯規(guī)、輸贏等
      第二步:
      賦予每個(gè)對(duì)象一些屬性和行為:
      ??第一類對(duì)象(黑白雙方)負(fù)責(zé)接受用戶輸入,并告知第二類對(duì)象(棋盤系統(tǒng))棋子布局的變化,棋盤系統(tǒng)接收到了棋子的變化,并負(fù)責(zé)在屏幕上面顯示出這種變化,同時(shí)利用第三類對(duì)象(規(guī)則系統(tǒng))來對(duì)棋局進(jìn)行判定
      核心點(diǎn):建模對(duì)象、行為通訊

優(yōu)缺點(diǎn)比較

面向過程【面向簡單問題】

優(yōu)點(diǎn):

    • 流程化使得編程任務(wù)明確,在開發(fā)之前基本考慮了實(shí)現(xiàn)方式和最終結(jié)果,具體步驟清楚,便于節(jié)點(diǎn)分析
    • 效率高,面向過程強(qiáng)調(diào)代碼的短小精悍,善于結(jié)合數(shù)據(jù)結(jié)構(gòu)來開發(fā)高效率的程序

缺點(diǎn):

    • 需要深入的思考,耗費(fèi)精力,代碼重用性低,擴(kuò)展能力差,后期維護(hù)難度比較大

面向?qū)ο蟆久嫦驈?fù)雜問題】

優(yōu)點(diǎn):

    • 結(jié)構(gòu)清晰,程序是模塊化和結(jié)構(gòu)化,更加符合人類的思維方式
    • 易擴(kuò)展,代碼重用率高,可繼承,可覆蓋,可以設(shè)計(jì)出低耦合的系統(tǒng)
    • 易維護(hù),系統(tǒng)低耦合的特點(diǎn)有利于減少程序的后期維護(hù)工作量

缺點(diǎn):

    • 開銷大,當(dāng)要修改對(duì)象內(nèi)部時(shí),對(duì)象的屬性不允許外部直接存取,所以要增加許多沒有其他意義、只負(fù)責(zé)讀或?qū)懙男袨?。這會(huì)為編程工作增加負(fù)擔(dān),增加運(yùn)行開銷,并且使程序顯得臃腫
    • 性能低,由于面向更高的邏輯抽象層,使得面向?qū)ο笤趯?shí)現(xiàn)的時(shí)候,不得不做出性能上面的犧牲,計(jì)算時(shí)間和空間存儲(chǔ)大小都開銷很大

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容