一、面向對象的概念
面向對象oop(onject oriented programming),與之對應的還有面向過程,向C語言就是面向過程的
理解過程和函數?
過程:是早期的一個編程概念,過程類似于函數,只能執(zhí)行,但是沒有返回值
函數:不僅能執(zhí)行,還可以返回結果(return)
二、深刻理解什么時面向對象和面向過程
面向過程:—-側重于怎么做?
把完成某個需求的所有步驟從頭到尾逐步實現 根據開發(fā)要求,將某些功能獨立的代碼封裝成一個又一個函數 最后完成的代碼,就會死順序的調用不同的函數
特點:
注重步驟與過程,不注重職責分工 如果需求復雜,代碼會變得很復雜 開發(fā)復雜項目,沒有固定的套路,開發(fā)難度很大
面向對象:—側重于誰來做?
相比較函數,面向對象是更大的封裝,根據職責在一個對象中封裝多個方法
在完成某個需求之前,首先確定職責—要做的事情(方法) 根據職責確定不同的對象,在對象內部封裝不同的方法(或是多個方法) 最后完成代碼,就是順序的讓不同對象調用不同的方法
特點:
注重對象和職責,不同的對象承擔不同的職責 更加適合復雜的需求變化,是專門應對復雜項目的開發(fā)提供的固定套路 需要在面向過程的基礎上,再學習一些面向對象的語法
面向對象編程有Python 、JAVA 、C++
三、類與對象
在程序開發(fā)中,先有類,再有對象
類:是對一群具有相同特征或行為的事物的一個統(tǒng)稱,不能直接使用(比如:在飛機制造前先設計的哪個圖紙,圖紙就是一個類,可以用著一個圖紙制作出好多飛機,但是,圖紙是不能飛上天的)特征被稱為屬性,行為被稱為方法
對象:有類創(chuàng)建出來的一個具體存在的,可以直接使用的(飛機可以飛上天)
類的設計:
在使用面相對象開發(fā)前,應該首先分析需求,確定一下,程序中需要包含哪些類!
1.類名:這類事物的名字i,滿足大駝峰命名法
大駝峰命名法:每個單詞的首字母大寫,單詞與單詞之間沒有下劃線
2.屬性:這個類創(chuàng)建出來的對象有什么樣的特征
2方法:這個類創(chuàng)建出來的對象有什么樣的行為
四、實例
案例【1】:
小明今年18歲,身高1.75,每天早上要跑步,會去吃東西 小美今年17歲,身高1.65 小美不跑步,小美喜歡吃東西
Person() #類名 name #屬性 age height run() #方法 eat()
案例【2】:
一只黃顏色的狗狗叫大黃 看見生人旺旺叫 看見家人搖尾巴
Dog() #類名 name #屬性 color shout() #方法 shark()
五、定義之包含方法的類
class 類名: def 方法1(self): pass def 方法2(self): pass
創(chuàng)建對象:對象變量=類名
%x:打印格式為十六進制數
%d:打印格式為十進制數
實例:需求:小豬愛吃飯,小豬愛睡覺
class pig: def eat(self): print '小豬愛吃飯' def sleep(self): print '小豬愛睡覺' Pig = pig() Pig.eat() Pig.sleep() addr= id(Pig) print addr print '%x' %addr print '%d'%addr
六、用相同的類可以創(chuàng)建不同的對象
案例【1】
class pig: def eat(self): print '小豬愛吃飯' def sleep(self): print '小豬愛睡覺' Pig = pig() Pig.eat() Pig.sleep() addr= id(Pig) print addr print '%x' %addr print '%d'%addr #用相同的類可以創(chuàng)建不同的對象 lazy_pig=Pig lazy_pig.eat() lazy_pig.sleep() print lazy_pig lazy_pig2=lazy_pig print lazy_pig2