面向過程與物件導向
面向過程的程式設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條流水線,考慮周全什麼時候處理什麼東西。
優點是:極大的降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊**即可。
缺點是:一套流水線或者流程就是用來解決乙個問題,**牽一髮而動全身。
物件導向的程式設計的核心是物件(上帝式思維),要理解物件為何物,必須把自己當成上帝,上帝眼裡世間存在的萬物皆為物件,不存在的也可以創造出來。物件導向的程式設計好比如來設計西遊記,如來要解決的問題是把經書傳給東土大唐,如來想了想解決這個問題需要四個人:唐僧,沙和尚,豬八戒,孫悟空,每個人都有各自的特徵和技能(這就是物件的概念,特徵和技能分別對應物件的屬性和方法),然而這並不好玩,於是如來又安排了一群妖魔鬼怪,為了防止師徒四人在取經路上被搞死,又安排了一群神仙保駕護航,這些都是物件。然後取經開始,師徒四人與妖魔鬼怪神仙互相纏鬥著直到最後取得真經。如來根本不會管師徒四人按照什麼流程去取。
物件導向的程式設計的
優點是:解決了程式的擴充套件性。對某乙個物件單獨修改,會立刻反映到整個體系中,如對遊戲中乙個人物引數的特徵和技能修改都很容易。
缺點:可控性差,無法向面向過程的程式設計流水線式的可以很精準的**問題的處理流程與結果,物件導向的程式一旦開始就由物件之間的互動解決問題,即便是上帝也無法**最終結果。於是我們經常看到乙個遊戲人某一引數的修改極有可能導致陰霸的技能出現,一刀砍死3個人,這個遊戲就失去平衡。
名詞:類、物件、例項、例項化
類:具有相同特徵的一類事物(人、狗、老虎)
物件/例項:具體的某乙個事物(隔壁阿花、樓下旺財)
例項化:類——>物件的過程
python中一切皆為物件,型別的本質就是類
在python中,用變數表示特徵,用函式表示技能,因而具有相同特徵和技能的一類事物就是『類』,物件是則是這一類事物中具體的乙個。
物件導向
人狗大戰
def person(name,blood,agger,***):
person =
return person
alex = person('狗剩兒',100,1,'不詳')
nezha = person('哪吒』,200,2,'不詳')
def dog(name,blood,egger,***):
dog =
return dog
def attack(person,dog):
dog['blood'] -= person['agger']
print('%s被打了,掉了%s的血'%(dog['name'],person['agger']))
def bits(person):
person['blood'] -= person['agger']
print('%s被咬了,掉了%s的血'(person['name'],dog['aggr']))
dog['bite'] = bite
return
jin = dog('金老闆』,1000,100,』teddy')
物件導向程式設計
所謂模子 就是 類 抽象的 我能知道什麼屬性 有什麼技能 但不能知道屬性具體位址
jin alex nezha 就是物件 有具體的值 屬性和技能都是根據類規範的
面向過程 vs 物件導向
定義 類
class 類名:
pass
定義了最簡單的類
class 類名:
屬性 = 'a'
print(類名.屬性)
操作屬性通過點.操作
類名的作用 就是操作屬性 檢視屬性
傳遞引數
'''class person:
def __init__(self,*args):
print(args)
alex = person('狗剩兒',100,1,'不詳')
'''class person:
def __init__(self,*args):
self.name = args[0]
self.hp = args[1]
self.aggr = args[2]
self.*** = args[3]
def walk(self):
print('%s走走走'%self.name
alex = person('狗剩兒',100,1,'不詳')
print(alex.name)
person.walk(alex) #呼叫方法 類名.方法名(物件名) = alex.walk()
self本質就是物件
物件 = 類名()
過程:類名() 首先 會創造出乙個物件,創造了乙個self變數
呼叫init方法,類名括號裡的引數會被這裡接收
執行init方法
返回self
self就是乙個可以儲存很多屬性的大字典
往字典裡新增屬性的方式發生了一些變化
呼叫方法 類名.方法名(物件名)
物件能做的事
檢視屬性
呼叫方法
__dict__ 對於物件的增刪改查操作都可以通過字典語法進行
類名能做的事
例項化呼叫方法:只不過要自己傳遞self方法
呼叫類中的屬性:也就是呼叫靜態屬性
創造了乙個只要是這個類就一定有的的屬性
類屬性:靜態屬性
__innit__ 初始化方法,self、是物件,是乙個必須穿的引數
方法,一般情況下必須傳self引數,且必須寫在第乙個
後面還可以傳其他引數,是自由的
print(person.__dict__) 存的是這個類的方法
print(alex.__dict__) 就是alex這個字典
print(alex.__dict__('name'))
類的字典只能看,不能改
非常明顯的處理一類事物,這些事物都具有相識的屬性和功能person
當有幾個引數 需要反反覆覆傳入相同的引數的時候,就可以考慮物件導向
這些引數都是物件的屬性
物件導向過程與物件導向
物件導向過程與物件導向 1 程式的發展經歷了兩個階段 面向過程 物件導向。2 對於物件導向與面向過程可以用乙個例子解釋,如乙個木匠要做乙個盒子,那麼這個盒子的出發點會有兩種方式 物件導向 先想好要做的盒子,之後在去找相應的工具去做。面向過程 不去想要做什麼樣的盒子,隨需取工具。物件導向三大特徵 封裝...
物件導向與面向過程
分析出解決問題所需要的步驟,然後用函式把步驟分解開,使用時再呼叫這些函式。面向過程強調流程化 線性化 步驟化的思考方式 把構成問題事務分解成各個物件,描述各個事務在問題中的行為。強調整體性和差異性。具有抽象 封裝,繼承,多型 面向過程效率高 流程明確,具體步驟清楚 但耗費精力,重用率低 擴充套件能力...
物件導向與面向過程
一 面向過程程式設計 面向過程程式設計是一種以過程為中心的程式設計思想,分析出解決問題的步驟,然後用函式把這些步驟一步一步實現。面向過程程式設計,資料和對資料的操作是分離的。二 物件導向程式設計 物件導向程式設計是將事物物件化,通過物件通訊來解決問題。物件導向程式設計,資料和對資料的操作是繫結在一起...