教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Python的面向?qū)ο笈c面向編程有什么區(qū)別?

更新時間:2021年01月28日16時57分 來源:傳智教育 瀏覽次數(shù):

面向?qū)ο螅∣bject Oriented)是程序開發(fā)領(lǐng)域中的重要思想,這種思想模擬了人類認識客觀世界的邏輯,是當前計算機軟件工程學的主流方法;類是面向?qū)ο蟮膶崿F(xiàn)手段。Python在設(shè)計之初就已經(jīng)是一門面向?qū)ο笳Z言,了解面向?qū)ο缶幊趟枷雽τ趯W習Python開發(fā)至關(guān)重要。

提到面向?qū)ο?,自然會想到面向過程。面向過程編程的基本思想是:分析解決問題的步驟,使用函數(shù)實現(xiàn)步驟相應的功能,按照步驟的先后順序依次調(diào)用函數(shù)。前面章節(jié)中所展示的程序都以面向過程的方式實現(xiàn),面向過程只考慮如何解決當前問題,它著眼于問題本身。

面向?qū)ο缶幊痰闹壑幵谟诮巧约敖巧g的聯(lián)系。使用面向?qū)ο缶幊趟枷虢鉀Q問題時,開發(fā)人員首先會從問題之中提煉出問題涉及的角色,將不同角色各自的特征和關(guān)系進行封裝,以角色為主體,通過描述角色的行為去描述解決問題的過程。

下面以五子棋游戲為例說明面向過程和面向?qū)ο缶幊痰膮^(qū)別。

1.基于面向過程編程的問題分析

基于面向過程思想分析五子棋游戲,游戲開始后黑子一方先落棋,棋子落在棋盤后棋盤產(chǎn)生變化,棋盤更新并判斷輸贏:若本輪落棋的一方勝利則輸出結(jié)果并結(jié)束游戲,否則白子一方落棋、棋盤更新、判斷輸贏,如此往復,直至分出勝負。結(jié)合以上分析,五子棋游戲的流程如圖1所示。

面向?qū)ο? src=

圖1 五子棋游戲流程

2.基于面向?qū)ο缶幊痰膯栴}模擬

基于面向?qū)ο缶幊趟枷肟紤]問題時需首先分析問題中存在的角色。五子棋游戲中的角色分為兩個:玩家和棋盤。不同的角色負責不同的功能,例如:

(1) 玩家角色負責控制棋子落下的位置;

(2) 棋盤角色負責保存棋盤狀況、繪制畫面、判斷輸贏。

角色之間互相獨立,但相互協(xié)作,游戲的流程不再由單一的功能函數(shù)實現(xiàn),而是通過調(diào)用與角色相關(guān)的方法來完成。

面向?qū)ο蟊WC了功能的統(tǒng)一性,基于面向?qū)ο髮崿F(xiàn)的代碼更容易維護,比如,現(xiàn)在要加入悔棋的功能,如果使用面向過程開發(fā),改動會涉及到游戲的整個流程,輸入、判斷、顯示這一系列步驟都需要修改,這顯然非常麻煩;但若使用面向?qū)ο箝_發(fā),由于棋盤狀況由棋盤角色保存,只需要為棋盤角色添加回溯功能即可。相較而言,在面向?qū)ο蟪绦蛑泄δ軘U充時改動波及的范圍更小。




猜你喜歡:

python中的面向?qū)ο笈c面向過程怎么理解?

如何理解面向?qū)ο缶幊讨械念惡蛯ο螅?/a>

JavaScript高級面向?qū)ο笠曨l教程下載

傳智教育Python數(shù)據(jù)分析課程

0 分享到:
和我們在線交談!