Python程序設計項目化教程 課件 項目9-面向對象編程_第1頁
Python程序設計項目化教程 課件 項目9-面向對象編程_第2頁
Python程序設計項目化教程 課件 項目9-面向對象編程_第3頁
Python程序設計項目化教程 課件 項目9-面向對象編程_第4頁
Python程序設計項目化教程 課件 項目9-面向對象編程_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

——模塊化編程e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC《項目九》知識技能樹2341Contents目錄面向對象的基本概念實例的創(chuàng)建和調(diào)用添加屬性和方法類成員的封裝e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC5類的繼承和多態(tài)e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC1面向對象基本概念1.1什么是面向對象編程e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC所謂的面向對象,就是根據(jù)業(yè)務需求,將編程中涉及到被操作的對象抽象為類,然后在根據(jù)編程語言語法定義出類,并為類添加方法和屬性,通過調(diào)用方法實現(xiàn)功能,訪問屬性實現(xiàn)數(shù)據(jù)讀寫。面向對象編程是一種思想,是一種更接近現(xiàn)實世界的編程思想。在現(xiàn)代編程中得到廣泛的應用。目前全球的高級編程語言,除了C語言等極少數(shù),絕大部分都支持面向對象編程思想。1.2什么是類e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC在編程中把具有相同特性和行為的對象抽象為類(class),并賦予相應的屬性(property)和行為(method),再通過創(chuàng)建類的具體對象,并操作對象實現(xiàn)編程目標。總之,類(class)是具有相同特性(屬性)對象的抽象(總稱)。1.3什么是對象(實例)e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC對象(object)是類的具體化。比如,如果認為動物是一個類,那么貓、狗、獅子就是動物的具體化,就是對象(面向對象編程中往往叫實體,即instance,也叫實例)。所以,類是具有相同特性(屬性)和行為(功能)的一類對象的總稱(抽象),而對象(實例)則是類的具體化。1.4什么是屬性e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC屬性(property)是對象所擁有的特征(或屬性)。比如,花的屬性包括顏色、名稱、開花時長、開花時間等。不同的花雖然具有這些共同的特性,但特性的值是不一樣的,這就需要在創(chuàng)建具體對象的時候賦予不同對象不同的屬性值,這樣每個對象就具有各自的特征。屬性是對象的特征,屬性值是對象特征的具體數(shù)據(jù)表現(xiàn)。1.4什么是方法e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC方法(method)是對象具備的功能(或行為)。所謂的功能就是指對象能具體做什么。如人的行為包括,吃、喝、說、走、勞動等,鴿子的行為包括:飛、抓蟲子、呼叫等等。需要注意的是,方法是一個過程(函數(shù)),屬性是對象的某個特征。在面向對象編程中屬性是用于保存對象的特性數(shù)據(jù),而方法則是一段完成特定功能的代碼集合。e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC2對應和創(chuàng)建類的(對象)實例2.1定義類e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFACPython中使用面向對象編程和其它語言類似。首先,需要定義被抽象編程對象為類,然后再創(chuàng)建類的對象實體,再操作對象實體,完成業(yè)務需求。所以,要使用面向對象編程思想,首先要定義類。Python中定義類的語法如下:

2.2創(chuàng)建對象和調(diào)用對象的方法和屬性e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC(1)創(chuàng)建類的對象(實例)非常簡單,基本語法如下:對象名稱=類名(初始化參數(shù))(2)調(diào)用對象的方法屬性非常簡單,如下:e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC3給類添加屬性和方法3.1兩種屬性e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC面向對象編程中的屬性有兩種:對象屬性:對象屬性(也叫實例屬性)是每個類對象單獨擁有且其值可能不同的屬性,如前面的_name屬性,每個對象名字就不同;類屬性:類屬性是類的所有對象共享的屬性且其值是相同的,如學生總數(shù)(count),平均年齡(avgAge)等屬于所有學生共享的屬性。3.2給類添加類屬性e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC為類添加類屬性有兩種方式:(1)一種方式,就是在類定義中添加類屬性并設置其初始值(2)另外一種方式,就是通過類名添加類屬性和賦初值類屬性可以通過“類名.類屬性”方式訪問,也可以通過“對象名.類屬性名”方式訪問。注意:Python中兩種添加類屬性的方式容易“混亂”,建議類屬性均在類定義代碼中添加。3.3給類添加對象屬性e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC對象屬性(也叫成員屬性)是不同對象可以擁有不同屬性值的屬性。Python中添加對象屬性也有兩種方法:(1)一種是在類定義時添加屬性并初始化,(2)另一種是在類的定義外部通過對象名添加屬性并初始化。注意:(1)為類添加對象屬性往往是在__init__方法中,該方法叫初始化方法(或構造方法),在創(chuàng)建類的對象實例時會自動被調(diào)用;(2)通過對象名添加屬性只被該對象擁有,類的其它對象是“看不到的”;(3)推薦使用第一種方式為類添加對象屬性;(3)而對象屬性只能只能通過“對象名.屬性名”方式訪問;(4)每個類都包含一個內(nèi)置的屬性self,它代表當前對象本身。(5)在類的定義中,要訪問當前對象的方法,必須通過self.方法名()形式訪問,要訪問當前對象的屬性,必須通過“self.屬性名”方式進行。3.3給類添加對象屬性e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC給類添加對象屬性實例:3.4給類添加類方法e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC方法是類對象實體的具體功能,在類定義中表現(xiàn)為函數(shù)的定義。在Python中的方法有三種:即對象方法(也叫實例方法)、類方法(也叫類方法)和靜態(tài)方法。 對象方法:和對象屬性類似,屬于每個具體對象,只能通過“對象名.對象方法名()”方式調(diào)用,對象方法中,要操作當前對象的屬性方法,需要用到內(nèi)置的self屬性; 類方法:類方法是所有對象共享的方法,可以通過“類名.類方法名()”方式或者“對象名.類方法名()”方式調(diào)用,類方法中調(diào)用當前類的類方法和類屬性,類方法中不允許調(diào)用對象方法和對象屬性; 靜態(tài)方法:靜態(tài)方法就是普通的函數(shù),不屬于某個對象,靜態(tài)方法中不允許調(diào)用類方法、類屬性和對象方法及對象屬性。3.4給類添加類方法e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC給類添加方法的實例:e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC4封裝類的成員4.1面向對象的三大特征e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC面向對象編程有三大特征:即封裝、繼承和多態(tài)。學習面向對象程序設計思想,必須掌握這幾個概念。(1)封裝(Encapsulation),限制類成員的可見范圍,從而隱藏類內(nèi)部結構的復雜性,確保編程的高內(nèi)聚性。(2)繼承(Inherit),就是通過現(xiàn)有的類派生出新的類,派生出的類包含原有類的部分或全部成員,這樣做可以非常方便的擴展類的功能。(3)多態(tài)(polymorphism),多態(tài)性體現(xiàn)在類的繼承中。一個類繼承自某個類,則這個類即包含了父類的功能,又包含了自己的功能,在實際運行中,有它時候體現(xiàn)的是父類的功能或特性,有時候又體現(xiàn)的是自己的功能或特性。4.2封裝類的屬性e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC屬性的封裝主要包括public(公共屬性)、protected(保護屬性)、private(私有屬性)三種。具體如下:(1)private封裝:屬性名前加雙下劃線(__),該屬性只能在類的定義代碼中訪問,類外部的代碼不能直接訪問。(2)protected封裝:屬性名前加單下劃線(_),該屬性只能被當前類和它的子類訪問。也不能通過import的方式在其它模塊中訪問。(3)public封裝:屬性名前無下劃線,表示該屬性可以被類內(nèi)部、外部的代碼直接訪問。4.3封裝類的方法e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFACPython中封裝類的方法和封裝類的屬性方式一樣。封裝為private類型的方法只需要在方法前面加上雙下劃線(__)封裝為protected類型的方法需要在方法名稱前面加單下劃線(_)封裝為public類型的方法不能在方法名前加下劃線。e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC5類的繼承和多態(tài)5.1繼承類e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC繼承就擴展現(xiàn)有類的功能,即從現(xiàn)有類派生出新類的過程。5.2繼承類的可見性e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC可見性,就是類中的成員,在哪些可以訪問,哪些不能訪問。類成員的訪問規(guī)則有如下一些:(1)父類中定義為public類型的成員,直接被繼承到子類中,并且依然是public類型的;(2)父類中定義為private類型的成員,不會被繼承到子類中,即被隱藏在父類中,子類中看不到;(3)父類中定義為protected類型的成員,被繼承到子類中,變?yōu)閜rivate類型;(4)子類中同名成員會覆蓋父類的同名成員;(5)子類中訪問父類中被子類覆蓋的成員需要特殊的語法格式,請見下面的內(nèi)容。5.3重寫父類的方法e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC很多時候,在子類中需要對來自父類的方法進行重寫(也叫覆蓋)。重寫很容易,在子類中重新編寫和父類中同名的方法即可。5.4子類調(diào)用父類的同名方法e7d195523061f1c0d3ba7f298e59d031c9c3f97027ed136f882110EF8F17BAD1F2C348D17C7856EF46CB4678CC9E44EE1ABA681E3133328A7B4D22AAF822B2429426B2355AA8CC4431B8568D2CF3B73AE9F4AE98D5A0D6A5566EF967553E96D781C502472DAB692B5E92B1CB5B32F40BF8CF6181A24AB2F2CD3A9A53F0FE7F0D4E247476572CCFAC在類繼承中,子類會繼承父類的非私有方法。(1)在子

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論