代碼能借用就借用榜旦。
—— Tom Duff
目錄
編程可分為面向過程編程
和面向?qū)ο缶幊?/code>,它們是兩種不同的編程方式景殷,當(dāng)然背后的思維方式也是不同的溅呢。面向過程編程是一種傳統(tǒng)的編程方式,面向?qū)ο缶幊淌且粋€(gè)更高級的編程方式猿挚。
1咐旧,面向過程編程
面向過程編程(POP
)的重點(diǎn)在于過程
二字。
面向過程比較好理解绩蜻,就是按照人們通常的思維方式铣墨,在做一件事情的時(shí)候,將這件事情劃分為多個(gè)步驟办绝,一步一步來做伊约。
面向過程編程,就是在進(jìn)行一個(gè)項(xiàng)目時(shí)孕蝉,將這個(gè)項(xiàng)目分為多個(gè)小的步驟屡律,一個(gè)步驟就是一個(gè)過程,將這些過程全部組織起來降淮,就形成了完整的項(xiàng)目疹尾。
C 語言是典型的面向過程編程語言
比如,我們可以將我要去北京
這件事情分為以下四個(gè)步驟:
- 去高鐵站
- 購買高鐵票
- 持票上高鐵
- 坐高鐵到北京
這里的每個(gè)步驟相當(dāng)于一個(gè)過程,我們將這些過程
封裝成函數(shù)
,然后,從前到后將這些函數(shù)
組織起來溢十,就完成了我要去北京
這件事情尺锚。
我們將這個(gè)過程用簡單的代碼實(shí)現(xiàn)如下,將該代碼保存在to_beijing.py
文件中:
#! /usr/bin/env python3
def to_high_station():
print('我到了高鐵站')
def buy_rail_tickets():
print('我買了高鐵票')
def geton_high_rail():
print('我坐上了高鐵')
def to_beijing():
print('我到了北京')
if __name__ == '__main__':
to_high_station()
buy_rail_tickets()
geton_high_rail()
to_beijing()
在控制臺執(zhí)行命令舵变,如下:
$ python3 to_beijing.py
我到了高鐵站
我買了高鐵票
我坐上了高鐵
我到了北京
2,面向?qū)ο缶幊?/h3>
面向?qū)ο笏枷?/strong>
面向?qū)ο缶幊蹋?code>OOP)的重點(diǎn)在與對象
二字,主要的編程思想是圍繞對象
展開面睛。
在思考一個(gè)項(xiàng)目的時(shí)候,將項(xiàng)目中的重要點(diǎn)/關(guān)鍵點(diǎn)
都設(shè)計(jì)成一個(gè)個(gè)的類
尊搬,每個(gè)類承擔(dān)著不同的工作叁鉴,不同的功能被歸納到不同的類中。然后佛寿,由類產(chǎn)生出對象幌墓,這些對象之間的相互作用,最終組成了一個(gè)完整的項(xiàng)目冀泻。
類與對象
面向?qū)ο缶幊讨械膬蓚€(gè)非常重要概念是類
與對象
常侣,類
也是代碼復(fù)用的一種機(jī)制。
前面我們講到過弹渔,
函數(shù)
和模塊
都是代碼復(fù)用的機(jī)制胳施。
類
代表一類有著相同特征
事物,是一個(gè)抽象的概念肢专。由同一個(gè)類產(chǎn)生的對象舞肆,有著相同的特性。比如人類
都會行走博杖,會使用工具胆绊,需要呼吸和喝水,這都是人類的共性欧募。
對象
由類
產(chǎn)生压状,是一個(gè)類的實(shí)例
,創(chuàng)建對象的過程跟继,叫做類的實(shí)例化
种冬。對象是具體的,而不是抽象的舔糖。同一類的不同對象娱两,也有不同的屬性。比如人類
金吗,有不同的性別十兢,姓名和年齡等趣竣,這都是人類的不同屬性。
設(shè)計(jì)模式
是對面向?qū)ο缶幊?/code>的寶貴經(jīng)驗(yàn)的歸納總結(jié)旱物,讓我們可以更方便的運(yùn)用
面向?qū)ο?/code>的思想來進(jìn)行編程工作遥缕。
面向?qū)ο笳Z言
Java 語言是完全的面向?qū)ο?/code>編程語言,因?yàn)樗械牟襟E都在
類
中進(jìn)行宵呛。
C++ 語言是 Python 語言是一門 面向?qū)ο笕筇卣?/strong> 面向?qū)ο缶幊?/strong> 我們?nèi)匀灰?code>我要去北京半面向?qū)ο?/code>編程語言单匣,它被稱為
這件事來說明红碑,用帶類的 C
,即支持面向過程編程宝穗,又支持面向?qū)ο缶幊獭?/p>
腳本語言
户秤,以簡單優(yōu)雅
為設(shè)計(jì)理念,即可以面向過程編程逮矛,也可以面向?qū)ο缶幊碳牛幌馛++ 語言那樣有太多的復(fù)雜枯燥的概念,Python 語言更注重實(shí)用性须鼎。封裝
鲸伴,繼承
和多態(tài)
是面向?qū)ο蟮娜筇卣鳎@三種特征都是面向?qū)ο?/code>編程語言自身提供的機(jī)制莉兰,可以讓我們更方便的進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì):
繼承
也是多態(tài)
的必要條件狂男。形態(tài)
综看,多態(tài)是面向?qū)ο缶幊讨校粋€(gè)非常強(qiáng)大的特性岖食。面向?qū)ο缶幊?/code>是如何實(shí)現(xiàn)的。
面向?qū)ο缶幊痰闹攸c(diǎn)在于類的設(shè)計(jì)
泡垃,如何將一個(gè)大的項(xiàng)目析珊,拆分為不同的,必要的類蔑穴。類的功能是單一的忠寻,而不是將不同的功能糅雜到一個(gè)類中。
首先存和,我們需要設(shè)計(jì)出一個(gè)類
奕剃,比如類名
叫作SomeOne
衷旅,這個(gè)類
至少需要有四項(xiàng)功能:
- 去高鐵站
- 購買高鐵票
- 持票上高鐵
- 坐高鐵到北京
我們需要將這四項(xiàng)功能,寫成四個(gè)方法
纵朋,放在類SomeOne
中柿顶,代碼如下:
#! /usr/bin/env python3
# 定義一個(gè)類
class SomeOne:
# 構(gòu)造函數(shù)
def __init__(self, name):
self.name = name
def to_high_station(self):
print('%s 到了高鐵站' % self.name)
def buy_rail_tickets(self):
print('%s 買了高鐵票' % self.name)
def geton_high_rail(self):
print('%s 坐上了高鐵' % self.name)
def to_beijing(self):
print('%s 到了北京' % self.name)
if __name__ == '__main__':
# 創(chuàng)建一個(gè)類的對象
i = SomeOne('小明')
i.to_high_station()
i.buy_rail_tickets()
i.geton_high_rail()
i.to_beijing()
將該代碼寫在文件SomeOne.py
中,在控制臺執(zhí)行命令倡蝙,如下:
$ python3 SomeOne.py
小明 到了高鐵站
小明 買了高鐵票
小明 坐上了高鐵
小明 到了北京
在上面的代碼中九串,我們定義了一個(gè)名叫SomeOne
的類,其中包含了我們需要的四個(gè)方法寺鸥,另外還有一個(gè)__init__
的方法猪钮,這是類的構(gòu)造函數(shù)(后續(xù)我們會詳細(xì)講解)。
在__main__
代碼塊中胆建,我們創(chuàng)建了SomeOne
類的對象i
烤低,并調(diào)用了該對象的四個(gè)方法。
下一節(jié)笆载,我們來詳細(xì)介紹類與對象
扑馁。
(完。)
推薦閱讀:
Python 簡明教程 ---13凉驻,Python 集合
Python 簡明教程 ---14腻要,Python 數(shù)據(jù)結(jié)構(gòu)進(jìn)階
Python 簡明教程 ---15,Python 函數(shù)
Python 簡明教程 ---16涝登,Python 高階函數(shù)
Python 簡明教程 ---17雄家,Python 模塊與包