python物件導向:什麼是物件導向程式設計

來源:互聯網
上載者:User

標籤:演算法   col   流程化   print   郵箱驗證   png   http   寫代碼   info   

編程範式

   編程即寫程式or代碼,具體是指程式猿用特定的文法+資料結構+演算法編寫代碼,目的是用來告訴電腦如何執行任務。

  如果把編程的過程比喻為練習武功,那麼編程範式指的就是武林中的各種流派,而在編程的世界裡最常見的兩大流派就是:面向過程和物件導向

  面向過程和物件導向在不同的情境下都各有優劣,誰好誰壞不能一概而論,下面就讓我們來詳細瞭解它們。

 

面向過程的程式設計

概念:

核心是“過程”二字,“過程”指的是解決問題的步驟,即先幹什麼再幹什麼。。。。,基於面向過程設計程式就好比設計一條流水線,是一種機械式的思維方式。若程式一開始是要著手解決一個大的問題,面向過程的基本設計思路就是把這個大的問題分解成很多個小問題或子過程,這些子過程在執行的過程中繼續分解,直到小問題足夠簡單到可以在一個小步驟範圍內解決。

優點是:

複雜的問題流程化,進而簡單化(一個複雜的問題,分成一個個小的步驟去實現,實現小的步驟將會非常簡單)

舉個典型的面向過程的例子,寫一個註冊程式,分三步,輸入使用者名稱,密碼,驗證,寫入資料庫。

import jsonimport redef interactive():    name=input(‘>>: ‘).strip()    pwd=input(‘>>: ‘).strip()        return {        ‘name‘:name,        ‘pwd‘:pwd,           }def check(user_info):    is_valid=True    if len(user_info[‘name‘]) == 0:        print(‘使用者名稱不可為空‘)        is_valid=False    if len(user_info[‘pwd‘]) < 6:        print(‘密碼不能少於6位‘)        is_valid=False        return {        ‘is_valid‘:is_valid,        ‘user_info‘:user_info    }def register(check_info):    if check_info[‘is_valid‘]:        with open(‘db.json‘,‘w‘,encoding=‘utf-8‘) as f:            json.dump(check_info[‘user_info‘],f)def main():    user_info=interactive()    check_info=check(user_info)    register(check_info)if __name__ == ‘__main__‘:    main()

  

缺點是:

   一套流水線或者流程就是用來解決一個問題,比如生產汽水的流水線無法生產汽車,即便是能,也得是大改,改一個組件,與其相關的組件都需要修改,牽一髮而動全身,擴充性極差。

比如我們要加一個郵箱驗證功能,那麼和郵箱相關的代碼都要改,代碼如下:

import jsonimport redef interactive():    name=input(‘>>: ‘).strip()    pwd=input(‘>>: ‘).strip()    email=input(‘>> ‘).strip()    return {        ‘name‘:name,        ‘pwd‘:pwd,        ‘email‘:email    }def check(user_info):    is_valid=True    if len(user_info[‘name‘]) == 0:        print(‘使用者名稱不可為空‘)        is_valid=False    if len(user_info[‘pwd‘]) < 6:        print(‘密碼不能少於6位‘)        is_valid=False    if not re.search(r‘@.*?\.com$‘,user_info[‘email‘]):        print(‘郵箱格式不合法‘)        is_valid=False    return {        ‘is_valid‘:is_valid,        ‘user_info‘:user_info    }def register(check_info):    if check_info[‘is_valid‘]:        with open(‘db.json‘,‘w‘,encoding=‘utf-8‘) as f:            json.dump(check_info[‘user_info‘],f)def main():    user_info=interactive()    check_info=check(user_info)    register(check_info)if __name__ == ‘__main__‘:    main()

  

應用情境:

  面向過程的程式設計思想一般用於那些功能一旦實現之後就很少需要改變的情境, 如果你只是寫一些簡單的指令碼,去做一些一次性任務,用面向過程的方式是極好的,著名的例子有Linux內核,git,以及Apache HTTP Server等。但如果你要處理的任務是複雜的,且需要不斷迭代和維護 的, 那還是用物件導向最方便了。

 

物件導向的程式設計

概念:

 核心是“對象”二字,對象是特徵與技能的結合體。

優點是:

可擴充性強

 

 缺點是:

編程複雜度高

 

應用情境:
使用者需求經常變化,互連網應用,遊戲,企業內部應用

 

python物件導向:什麼是物件導向程式設計

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.