物件導向程式設計(英語:object-oriented programming,縮寫:oop)是一種程式設計理念,這種程式設計理念更符合我們人的邏輯思維。使用物件導向程式設計可以提高我們的開發速度和**的重用率。物件導向的開發非常適合大型程式開發,開發速度和後期維護都比過程化開發要好很多。
面向過程和物件導向都是用來解決問題的,只是解決問題的思路不同。
面向過程可以理解親力親為,物件導向可以理解為坐享其成。
例如炒菜
面向過程:
1)菜市場買菜,2)討價還價,3)洗菜,4)切菜,5)炒菜,6)吃
物件導向:
面向過程:
在生活中就是親力親為,在程式中面向過程程式設計就是函式之間的乙個相互呼叫。以函式為基本結構使用。
物件導向:
在生活中是坐享其成,別人做好的東西為我所用。在程式中物件導向程式設計是以物件為基本結構使用
1.類
生活中的類和物件概念
類:是對一群具有相同特徵或者行為的事物的統稱,是抽象的,不能直接使用。
例如人類狗類貓類...
描述乙個類通過行為和特徵
行為:會跑,會叫
特徵:黃毛,大眼睛
類可以理解為一種事物的模板
2.物件
物件:是由類創造出來的具體實體,可以直接使用的。例如 大黃,小白。
3.類與物件的關係
先有類後有物件
類只有乙個物件可以有多個
4.類的設計
在程式中設計乙個類,通常需要滿足一下3個要素:
類名:大駝峰命名法。
屬性:描述這類事物的特徵。
方法:描述這類事物的具體行為。
類和物件如何在記憶體中儲存
類以及類中的方法在記憶體中只有乙份,而根據類建立的每乙個物件都在記憶體中需要存乙份
class是關鍵字,表示類
建立物件,類名稱後加括號即可
self : 哪個物件呼叫方法或者屬性,self就是那個變數。
練習檢視 self和 物件的記憶體id值是否相同。
構造方法,通過類建立物件時,自動觸發執行。
class foo:
def __init__(self, name):
self.name = name
self.age = 18
print(self.name, self.age) # 趙赫 18
person = foo('趙赫')
練習:建立個dog類,建立物件的時候傳遞引數
class dog:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print('{},今年{}歲'.format(self.name, self.age))
dog1 = dog('大黃', 5) # 傳遞引數
dog1.introduce() # 大黃,今年5歲
列印物件的名稱時預設呼叫的是__str__()方法,此方法預設返回的是物件的記憶體位址。
我們可以重寫 __str__() 方法列印物件儲存的資訊。
class dog:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
msg = '{},今年{}歲'.format(self.name, self.age)
return msg
dog1 = dog('大黃', 5) # 傳遞引數
print(dog1) # 大黃,今年5歲
綜合練習:計算圓的面積和周長:
from math import pi # 呼叫 pi
class circle():
def __init__(self, radius):
self.radius = radius # 定義半徑
def zhouchang(self):
return 2 * pi * self.radius
def area(self):
return pi * self.radius * self.radius
circle = circle(3) # 傳遞半徑r=3
ret = circle.zhouchang() # 呼叫周長
print(ret) # 18.84955592153876
ret1 = circle.area() # 呼叫面積
print(ret1) # 28.274333882308138
C 物件導向程式設計的重要概念
1.1 類與物件 物件 object 是類 class 的乙個例項 instance 如果將物件比作房子,那麼類就是房子的設計圖紙。所以物件導向程式設計的重點是類的設計,而不是物件的設計。類可以將資料和函式封裝在一起,其中函式表示了類的行為 或稱服務 類提供關鍵字public protected 和...
物件導向設計的重要原則 SOLID
solid是物件導向設計5大重要原則的首字母縮寫 1 單一職責原則 srp 2 開放封閉原則 ocp 3 黎克特制替換原則 lsp 4 介面隔離原則 isp 5 依賴倒置原則 dip 下面具體解釋一下每個原則 1 單一職責原則 srp 表明乙個類只有乙個職責,乙個類就像容器一樣。它能新增任意數量的屬...
用物件導向的觀點來分析「技術重要還是業務重要」
最近發生了很多事情,從朋友的推薦到自己的猶豫不定。從此過程中表現了對於自己人生理想的衝動和一些現實考慮之間的矛盾,我不得不再次面對到底是理想重要還是現實生活重要這樣的艱難選擇。哎這事就別說了!但是網路著名部落格 水木周平 最近的一篇文章給了我作出選擇的勇氣和力量。他說 我相信 有了微笑,痛苦就不存在...