面向?qū)ο笥?大特性:封裝纳本、繼承扮惦、多態(tài)
1遣耍、介紹面向?qū)ο缶幊?面向?qū)ο缶幊蹋∣bject Oriented Programming刊殉,OOP殉摔,面向?qū)ο蟪绦蛟O(shè)計)
所謂面向?qū)ο缶褪腔趯ο蟾拍睿詫ο鬄橹行娜叱海灶惡屠^承為構(gòu)造機制钦勘,來認識、理解亚亲、刻畫客觀世界和設(shè)計彻采、構(gòu)建相應(yīng)的軟件系統(tǒng)。
?世界萬物,皆可分類
?一切皆為對象
?對象 –—-類的實體\一個叫李文浩的好色的男人
?類——人\動物\機器
?方法—–人會走,會思考\狗會叫,會咬人\定義一個類的各個功能
?消息傳遞—–狗叫了,人聽見了,就叫通信
?繼承——狗都四條腿走路
?封裝——人不能引用狗的特性,比如四條腿走路
?多態(tài)性—–一個叫的功能,可能是低吼,也可是大聲叫
?抽象性——簡化復(fù)雜的現(xiàn)實問題的途徑捌归,它可以為具體問題找到最恰當(dāng)?shù)念?br>
面向過程:根據(jù)業(yè)務(wù)邏輯從上到下寫代碼
面向?qū)ο髢蓚€最重要的概念
類:具有相同屬性和行為事物的統(tǒng)稱肛响。
對象:對象是類的具體實例
下面就是創(chuàng)建一個人類,來做自我介紹惜索,這就是一個簡單的面向?qū)ο?br> class Person():
def __init__(self,name,age):
self.name = name
self.age = age
def introduce(self):
print("我叫%s 我的年齡是%d"%(self.name,self.age))
name = input("請輸入名字")
age = int(input("請輸入年齡"))
laowang = Person(name,age)
laowang.introduce()
魔法方法 __ init __() 初始化實例對象
class Car():
def __init__(self,color,size):#系統(tǒng)方法---初始化方法
self.color = color
self.name = "寶馬"
self.size = size
def introduce(self):#自己定義的方法
print("我的顏色是%s 我的大小是%d"%(self.color,self.size))
bmw = Car("綠色",12)#創(chuàng)建一個實例對象 初始化一個實例對象
bmw.introduce()
bmx7 = Car("藍色",13)
bmx7.introduce()
魔法方法 __ str __() 打印實例對象
class Cat():
def __init__(self,name,age):
self.name = name
self.age = age
def introduce(self):
# print("我的名字是%s 年齡是%d"%(self.name,self.age))
def __str__(self):#一定要返回值
return "我的名字是%s 年齡%d"%(self.name,self.age)
tom = Cat("tom",12)#創(chuàng)建實例對象
tom.introduce()
print(id(tom))
print(tom)
老王開槍程序:
class Person():#人類
def init(self,name):
self.name = name
self.hp = 100
def naqiang(self,gun):#持槍
self.gun = gun
def zhuangzidan(self,danjia,zidan):
danjia.list.append(zidan)#裝子彈
def zhuangdanjia(self,gun,danjia):#裝彈夾
gun.danjia = danjia
def openGun(self,diren):#開槍
zidan = self.gun.danjia.tanzidan()
zidan.kill(diren)
#count--傷害量
def diaoxue(self,count):
self.hp -= count
print("還剩多少%d"%self.hp)
if self.hp <= 0:
print("掛了")
class Gun():#槍類
def init(self,name):
self.name = name
self.danjia = None#假設(shè)沒有彈夾
class DanJia():#彈夾類
def init(self,name,count):
self.name = name
self.count = count
self.list = []#裝子彈
def tanzidan(self):#彈子彈
zidan = self.list.pop()
return zidan
class ZiDan():#子彈
def init(self,name,kill_count):
self.name = name
self.kill_count = kill_count#子彈傷害
def kill(self,diren):#子彈殺人
diren.diaoxue(self.kill_count)
laowang = Person("老王")#創(chuàng)建老王
ak47 = Gun("ak47")#創(chuàng)建槍
danjia = DanJia("快速擴容",40)#創(chuàng)建彈夾
laowang.naqiang(ak47)#讓老王持槍
for i in range(40):#創(chuàng)建一些子彈
zidan = ZiDan("5.56",20)
laowang.zhuangzidan(danjia,zidan)
laowang.zhuangdanjia(ak47,danjia)#裝彈夾
laosong = Person("老宋")
laowang.openGun(laosong)
laowang.openGun(laosong)
laowang.openGun(laosong)
laowang.openGun(laosong)