一.物件導向程式設計
1.面向過程程式設計:
側重過程二字,即解決問題的步驟,先幹什麼,後幹什麼,應用場景比較固定
2.物件導向程式設計:
側重物件二字,解決了程式的擴充套件性問題,對某乙個物件的修改,會反應到整個體系中,比如在遊戲中對乙個人物特徵和技能的修改,應用於需求經常變化的場景。
3.類與物件的概念
類:即類別種類,是一系列物件相似特徵與技能的結合體
物件:特徵與技能的結合體
現實中先有物件,然後才有類,在程式中需先定義類,然後才產生物件。
4.類的屬性
兩種屬性:資料屬性、函式屬性
類的資料屬性是所有物件共享的,類的函式屬性是繫結給物件用的
類中定義的函式(沒有被任何裝飾器裝飾的)是類的函式屬性,類可以使用,但必須遵循函式的引數規則,有幾個引數需要傳幾個引數。
類中定義的函式(沒有被任何裝飾器裝飾的),其實主要是給物件使用的,而且是繫結到物件的,雖然所有物件指向的都是相同的功能,但是繫結到不同的物件就是不同的繫結方法
強調:繫結到物件的方法的特殊之處在於,繫結給誰就由誰來呼叫,誰來呼叫,就會將『誰』本身當做第乙個引數傳給方法,即自動傳值(方法__init__也是一樣的道理)
注意:python中一切皆為物件,且python3中類與型別是乙個概念,型別就是類
二.物件導向的組合用法
1.組合:在乙個類中以另外乙個類的物件作為資料屬性,稱為類的組合、
classweapon:
#def prick(self, obj): # 這是該裝備的主動技能,扎死對方
#obj.life_value -= 500 # 假設攻擊力是500
#class person: # 定義乙個人類
#role = 'person' # 人的角色屬性都是人
#def __init__(self, name,life_value):
#self.name = name # 每乙個角色都有自己的暱稱;
#self.life_value = life_value #生命值
#self.weapon = weapon() # 給角色繫結乙個**;
#alex = person('alex',10000)
#egon = person('egon',5000)
#egon.weapon.prick(alex)
#print(alex.life_value)
#egon.weapon.prick(alex)
#print(alex.life_value)
組合例子:(圓環的面積和周長)
from math importpiclass
circle:
'''定義了乙個圓形類;
提供計算面積(area)和周長(perimeter)的方法
'''def
__init__
(self,radius):
self.radius =radius
defarea(self):
return pi * self.radius *self.radius
defperimeter(self):
return 2 * pi *self.radius
circle = circle(10) #
例項化乙個圓
area1 = circle.area() #
計算圓面積
per1 = circle.perimeter() #
計算圓周長
print(area1,per1) #
列印圓面積和周長
class
ring:
'''定義了乙個圓環類
提供圓環的面積和周長的方法
'''def
__init__
(self,radius_outside,radius_inside):
self.outsid_circle =circle(radius_outside)
self.inside_circle =circle(radius_inside)
defarea(self):
return self.outsid_circle.area() -self.inside_circle.area()
defperimeter(self):
return self.outsid_circle.perimeter() +self.inside_circle.perimeter()
ring = ring(10,5) #
例項化乙個環形
print(ring.perimeter()) #
計算環形的周長
print(ring.area()) #
計算環形的面積
類的組合本質:在乙個類中使用另乙個類的屬性和方法,當類之間有顯著不同,並且較小的類是較大的類所需要的元件時,用組合比較好
物件導向基礎
什麼是物件導向程式設計?就是把萬事萬物都抽象成為物件,一切都是物件!什麼是抽象?抽象是從眾多的事物中抽取出共同的 本質性的特徵,而捨棄其非本質的特徵。例如蘋果 香蕉 生梨 桃子等,它們共同的特性就是水果。得出水果概念的過程,就是乙個抽象的過程。要抽象,就必須進行比較,沒有比較就無法找到在本質上共同的...
物件導向基礎
我想在這個園子裡面的新人,還是 掌門人 都對 物件導向 這幾字非常的耳熟了或者有一定的了解。但當乙個初學都在學習物件導向的時候,會遇到一些瓶頸和麻煩,認為物件導向非常的難以理解。那麼本章節主要是讓大家了解物件導向,並系統地掌握物件導向程式設計的技能點,消除初學者的疑惑.1 如何去學習物件導向的程式設...
物件導向基礎
uml是一種標準的圖形化建模語言,是物件導向分析與設計的一種標準表示 類圖是用來描述類以及類與類之間關係的一種uml圖 類圖描述的關係包括關聯,範化,依賴,實現等 只要類與類之間存在關聯關係就可以用普通關聯來表示 比如 描述人和計算之間的關係 帶 的一端表示關聯的發起方,箭頭表示關聯的方向 0.1 ...