面向過(guò)程程序設(shè)計(jì)&面向?qū)ο蟪绦蛟O(shè)計(jì)

概念

面向過(guò)程編程:把計(jì)算機(jī)程序視為一系列的命令集合,即一組函數(shù)的順序執(zhí)行,簡(jiǎn)化程序設(shè)計(jì)。面向過(guò)程把函數(shù)繼續(xù)切分為子函數(shù),即把大塊函數(shù)切割成小塊函數(shù),降低系統(tǒng)的復(fù)雜度。


面向?qū)ο缶幊蹋喊延?jì)算機(jī)程序視為一組對(duì)象集合,每個(gè)對(duì)象都可以接收其它對(duì)象發(fā)來(lái)的消息,并處理這些消息。計(jì)算機(jī)程序的執(zhí)行就是一系列消息在各個(gè)對(duì)象之間的傳遞。

Point:面向?qū)ο缶幊?/h1>
- class Student(object):
// object 是所有類(lèi)最終都會(huì)繼承的類(lèi)
// class Student(object):
- __init__方法
// 通過(guò)該特殊的方法在創(chuàng)建實(shí)例的時(shí)候吧屬性綁定上去
// def __init__(self,name,score):
- 參數(shù)self
// __init__方法的第一個(gè)參數(shù),在__init__方法內(nèi)部將各種屬性綁定到self,self指向創(chuàng)建的實(shí)例本身。
#Summary:
-類(lèi)是創(chuàng)建實(shí)例的模板,而實(shí)例是一個(gè)個(gè)個(gè)具體的對(duì)象,各實(shí)例擁有的數(shù)據(jù)都相互獨(dú)立,互不影響。
-方法是實(shí)例綁定的函數(shù),和普通函數(shù)不同,方法可以直接訪問(wèn)實(shí)例的數(shù)據(jù)。
-在 Python中,實(shí)例的變量名如果以 __ 開(kāi)頭,就變成了一個(gè)私有變量(private),只有內(nèi)部可以訪問(wèn),外部不能訪問(wèn)。

封裝

  • 在類(lèi)的內(nèi)部定義訪問(wèn)數(shù)據(jù)的函數(shù),這樣就將“數(shù)據(jù)”封裝起來(lái)了。
def print_score(self):
    print("%s %s"%(self.name,self.score))

封裝的另一個(gè)好處是可以為類(lèi)增添新的方法。

訪問(wèn)控制

- 實(shí)例的變量名如果以 __ 開(kāi)頭,就變成了一個(gè)私有變量(private),只有內(nèi)部可以訪問(wèn),外部不能訪問(wèn)
- 確保外部代碼不能隨意修改對(duì)象內(nèi)部的狀態(tài),通過(guò)訪問(wèn)限制的保護(hù),使代碼更加健壯。
- 但還是可以通過(guò)在類(lèi)中添加方法來(lái)訪問(wèn)

繼承

??繼承最大的好處是子類(lèi)獲得了父類(lèi)的全部功能。但也可以給子類(lèi)添加方法,當(dāng)子類(lèi)和父類(lèi)存在相同的方法時(shí),子類(lèi)的方法會(huì)覆蓋父類(lèi)的方法。

多態(tài)

  • 在繼承關(guān)系中,如果一個(gè)實(shí)例的數(shù)據(jù)類(lèi)型是某個(gè)子類(lèi),那它的數(shù)據(jù)類(lèi)型也可以被看做是父類(lèi)。但是,反過(guò)來(lái)就不行。
  • 調(diào)用方只管調(diào)用,不管細(xì)節(jié)

Summary

  • 有了繼承,才能有多態(tài)。在調(diào)用類(lèi)實(shí)例方法的時(shí)候,盡量把變量視作父類(lèi)類(lèi)型
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容