一、面向?qū)ο蟮母拍?/h2>
面向?qū)ο髈op(onject oriented programming),與之對應(yīng)的還有面向過程,向C語言就是面向過程的
理解過程和函數(shù)?
過程:是早期的一個(gè)編程概念,過程類似于函數(shù),只能執(zhí)行,但是沒有返回值
函數(shù):不僅能執(zhí)行,還可以返回結(jié)果(return)
二、深刻理解什么時(shí)面向?qū)ο蠛兔嫦蜻^程
面向過程:—-側(cè)重于怎么做?
把完成某個(gè)需求的所有步驟從頭到尾逐步實(shí)現(xiàn) 根據(jù)開發(fā)要求,將某些功能獨(dú)立的代碼封裝成一個(gè)又一個(gè)函數(shù) 最后完成的代碼,就會死順序的調(diào)用不同的函數(shù)
特點(diǎn):
注重步驟與過程,不注重職責(zé)分工 如果需求復(fù)雜,代碼會變得很復(fù)雜 開發(fā)復(fù)雜項(xiàng)目,沒有固定的套路,開發(fā)難度很大
面向?qū)ο螅?#8212;側(cè)重于誰來做?
相比較函數(shù),面向?qū)ο笫歉蟮姆庋b,根據(jù)職責(zé)在一個(gè)對象中封裝多個(gè)方法
在完成某個(gè)需求之前,首先確定職責(zé)—要做的事情(方法) 根據(jù)職責(zé)確定不同的對象,在對象內(nèi)部封裝不同的方法(或是多個(gè)方法) 最后完成代碼,就是順序的讓不同對象調(diào)用不同的方法
特點(diǎn):
注重對象和職責(zé),不同的對象承擔(dān)不同的職責(zé) 更加適合復(fù)雜的需求變化,是專門應(yīng)對復(fù)雜項(xiàng)目的開發(fā)提供的固定套路 需要在面向過程的基礎(chǔ)上,再學(xué)習(xí)一些面向?qū)ο蟮恼Z法
面向?qū)ο缶幊逃蠵ython 、JAVA 、C++
三、類與對象
在程序開發(fā)中,先有類,再有對象
類:是對一群具有相同特征或行為的事物的一個(gè)統(tǒng)稱,不能直接使用(比如:在飛機(jī)制造前先設(shè)計(jì)的哪個(gè)圖紙,圖紙就是一個(gè)類,可以用著一個(gè)圖紙制作出好多飛機(jī),但是,圖紙是不能飛上天的)特征被稱為屬性,行為被稱為方法
對象:有類創(chuàng)建出來的一個(gè)具體存在的,可以直接使用的(飛機(jī)可以飛上天)
類的設(shè)計(jì):
在使用面相對象開發(fā)前,應(yīng)該首先分析需求,確定一下,程序中需要包含哪些類!
六、用相同的類可以創(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