1. 程式人生 > >python0.14-----面向對象思想/類/對象

python0.14-----面向對象思想/類/對象

房子 方法的參數 使用 打開 不同的 bject PE 區域 mil

面向對象思想:
1.把數據及對數據的操作的方法放在一起,作為一個相互依賴的整體--對象。
2.把同類對象抽象出其共性,形成類。例如:老板和員工有很多共性,可以形成一個Person類。
3.類中的大多數數據,只能用本類的方法進行處理。例如:我有100塊,不可能讓你來花。
4.類通過一個簡單的外部接口與外界進行聯系。對象之間通過消息進行通信。
5.程序流程有用戶在使用中決定。

面向過程:
強調的是功能行為,解決問題需要哪些步驟。
例如:蓋房子先活水泥,再砌磚.....
面向對象:
關註的是解決問題需要哪些對象。
例如:要蓋房子的話,只需要找到能蓋房子的人。

把大象關進冰箱的不同思路:

面向過程思想:
1打開冰箱門。


2.將大象關進冰箱。
3.關閉冰箱門。

面向對象思想:
1.找到一個能夠打開冰箱的人。
2.找到能夠將大象關進冰箱的人。
3.找到一個能夠關閉冰箱的人。

因為生活中,很多事情我們不想幹。所以想找一能夠幹這些事情的對象。若不存在這個對象,就創建這個對象。讓它把這些事情幹了,然後我們就完成了這個任務。

例如:

技術分享圖片

圖紙相當於類,車相當於對象
可以對照圖紙造很多顏色不一樣的車。
同樣,可以通過類造出不同的對象。

類的設計:
只關心3樣東西:
類名:見名知意,首字母大寫,其它遵循駝峰原則。
屬性:見名只意,其它遵循駝峰原則。
行為(方法或功能):見名知意,其它遵循駝峰原則。
例如:老婆的類名為wife,wife的屬性有:名字,年齡等等,其方法有:吃,喝等等。

創建類:

類:一種數據類型,本身並不占內存空間,跟所學過的number,string,booleann等相似。用類創建的實例化對象(變量),對象占內存空間。

格式:

class 類型(父類列表):
  屬性
  行為

例子:
class Person(object): #object: #object為所有類的父類,一般沒有合適的父類就寫父類。
  #定義屬性:
  name=""
  age=0
  height=0
  weight=0
  #定義方法(定義函數):
  #註意:方法的參數必須以self當第一個參數,self代表類的實例(某個對象)。
  def run(self):
    print(‘run‘)


  def eat(self,food)
    print(‘eat‘+food)

實例化對象:
格式: 對象名=類名(參數列表)   #若沒有參數列表,也不能省略括號
例如:pr1=person()  

   pr2=person()

註意:對象在堆區,變量在棧區。pr1,pr2在棧區,它們存的是堆區的對象地址。不同的對象在堆區域的地址不同。

訪問對象的屬性和方法:
per=person() #實例化對象per
訪問屬性:
格式:對象名.屬性名
賦值:對象名.屬性名=新值。
per.name=‘bob‘
per.age=18
per.height=160

訪問方法:
格式:對象名.方法名(參數列表)
per.run()
per.eat(‘apple‘)

#題目:設計類實現人開槍射子彈

class Person:
  def __init__(self,gun):
    self.gun=gun
  def fire(self):
    self.gun.shoot()
  def fillBullet(self):
    self.gun.bullet.BulletCount+=1
    print(‘填裝了一發‘)


class Gun:
  def __init__(self,bullet):
    self.bullet=bullet
  def shoot(self):
    self.bullet.BulletCount-=1
    if self.bullet.BulletCount<=0:
      print(‘沒有子彈了‘)
    else :
      print(‘還有%d發‘ %self.bullet.BulletCount)


class Bullet:
  def __init__(self,BulletCount):
    self.BulletCount=BulletCount

調用:

bullet=Bullet(5)

gun=Gun(bullet)

per=Person(gun)    

per.fire()

python0.14-----面向對象思想/類/對象