1. 程式人生 > >Python基礎【面向對象】

Python基礎【面向對象】

基本 不同的 類屬性 方法名 導致 在外 無需 直接 抽象

面向對象

從面向過程到面向對象

  • 面向過程
    在計算機編程發展之初,解決一個客觀問題的思路往往是通過設計算法去對數據進行分析處理最終給出結果。
    例如:完成一組數據的排序,生成特定的數列,從一組數據中篩選出符合條件的數據等等。
    在面向過程的編程中,解決問題是以功能為起點,分析問題主要從 依附在事物上的行為 出發,面向過程的編程重在 如何一步步完成這一行為
    例如:顧客購物可以簡要描述為:顧客進入商店,選擇商品,付錢,離開商店
  • 為什麽需要面向對象?
    但隨著需要解決的問題的規模和復雜度逐漸增加,面向過程的思想在進行程序設計時需要分析和處理的數據就變得非常龐大,不利於設計者對問題的分析和處理,並且在一定程度上限制了程序的運行效率。

面向對象的思維

  • 客觀事物描述的時候往往圍繞著 從中抽象出的主要個體
    例如:購物這一事件圍繞 顧客、店主 和 商品 發生。
  • 在對 個體 進行數據分析時,往往可以通過一些 特性(具有的屬性)和行為(進行的動作) 進行描述
    例如:顧客擁有 現金余額 等屬性,可以實施 購買商品 等行為。
  • 這些獨立的個體都可以進行相應的數據處理,相互之間可以進行信息的傳遞,作為獨立的通信單元
  • 事實上,客觀事物描述時大多都可以抽象成 多個獨立對象之間進行信息傳遞和處理 的類似模型來進行分析。
  • 換句話說,相比面向過程代碼復雜度隨著行為的多變性增加,面向對象的思維在編程時更為通用,獨立對象的行為/屬性變化不會影響其他部分,更不會導致整體需要調整。
  • 在具體問題中,抽象出的有用的對象屬性和行為越具體,描述越精確,抽象出的模型越接近現實情況,具體需要抽象到什麽程度,需要根據需求進行分析。
    例如:
    如果只需要知道顧客購買了什麽商品,方便統計數量,可以通過添加商品對象,對其數量進行統計分析即可
    但如果還需要進行財務管理,就需要給商品增加價格這一屬性,進一步進行數據處理

面向對象和面向過程的關系

盡管面向對象在面對復雜問題時具有較大優勢,面向過程仍為面向對象的基礎,對象的行為如何實施,對象之間的數據傳遞和處理等仍需要面向過程的思想為基礎進行編寫。


面向對象編程中的基本概念(個人理解)

  • 類:具有同一類屬性和方法的對象的集合(模板)
  • 方法:定義在類中的函數
  • 對象:具有類中屬性和方法的具體的獨立個體,即類的實例化個體
  • 類變量(類屬性):定義在類中(方法外)的變量,可以在外部直接通過類名.屬性名的形式進行訪問
  • 類方法:利用@classmothod裝飾的方法,可以直接通過類名.方法名的形式進行調用,無需實例化再調用
  • 類對象:類本身也是一個特殊對象,在創建類時,會在內存中存放(類也可看作是一種數據結構)
  • 實例化:創建一個具體的對象即為類的實例化

面向對象的三大特性(相比面向過程)

封裝

面向對象的語言將某個個體的屬性和行為進行封裝(類),作為一個獨立的邏輯單元進行分析處理

繼承

子類從父類中繼承其屬性及方法,也可在子類中加入新的屬性及方法

多態

相同的 函數或數據 作用或傳遞 到不同的對象中,執行或處理 的結果也不同

Python基礎【面向對象】