![數(shù)據(jù)分析基礎(chǔ)與實(shí)踐課件:Python面向?qū)ο蟪绦蛟O(shè)計(jì)_第1頁(yè)](http://file4.renrendoc.com/view11/M01/3A/19/wKhkGWXDhGCAMfYtAAHhlOhSQKg073.jpg)
![數(shù)據(jù)分析基礎(chǔ)與實(shí)踐課件:Python面向?qū)ο蟪绦蛟O(shè)計(jì)_第2頁(yè)](http://file4.renrendoc.com/view11/M01/3A/19/wKhkGWXDhGCAMfYtAAHhlOhSQKg0732.jpg)
![數(shù)據(jù)分析基礎(chǔ)與實(shí)踐課件:Python面向?qū)ο蟪绦蛟O(shè)計(jì)_第3頁(yè)](http://file4.renrendoc.com/view11/M01/3A/19/wKhkGWXDhGCAMfYtAAHhlOhSQKg0733.jpg)
![數(shù)據(jù)分析基礎(chǔ)與實(shí)踐課件:Python面向?qū)ο蟪绦蛟O(shè)計(jì)_第4頁(yè)](http://file4.renrendoc.com/view11/M01/3A/19/wKhkGWXDhGCAMfYtAAHhlOhSQKg0734.jpg)
![數(shù)據(jù)分析基礎(chǔ)與實(shí)踐課件:Python面向?qū)ο蟪绦蛟O(shè)計(jì)_第5頁(yè)](http://file4.renrendoc.com/view11/M01/3A/19/wKhkGWXDhGCAMfYtAAHhlOhSQKg0735.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章概論西華大學(xué)數(shù)據(jù)分析基礎(chǔ)與實(shí)踐
Python面向?qū)ο蟪绦蛟O(shè)計(jì)
目錄Contents面向?qū)ο蟮幕靖拍铑惡蛯?duì)象屬性和方法類的繼承應(yīng)用舉例面向?qū)ο蟮幕靖拍钜?.1面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想41.1面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想5活字印刷便是典型的面向?qū)ο蟮乃枷耄诨钭钟∷⑿g(shù)之前,要修改文章,必須重刻,要加字,必須重刻,要重新排列,必須重刻,印完這本書(shū)后,此版已無(wú)任何可再利用的價(jià)值,十分浪費(fèi)。有了活字印刷之后:要對(duì)樣章做出修改,只需要更改需要更換的字就可以了,這個(gè)特性叫做可維護(hù)。這些字并不是用完這次就再也沒(méi)有別的地方可以用了,完全可以在后來(lái)的印刷中重復(fù)使用,這個(gè)特性叫做可復(fù)用。這首詩(shī)如果需要增加字,只需要另外刻字加入就可以了,不需要推翻重來(lái),這個(gè)特性是可擴(kuò)展。字的排列其實(shí)有可能是豎排,也有可能是橫排,這個(gè)時(shí)候只需要將活字移動(dòng)就可做到滿足排列需求,這個(gè)特性叫做靈活性好。在面向?qū)ο蟮木幊趟枷胫?,需要考慮如何通過(guò)封裝、繼承和多態(tài),把程序的耦合度降低(傳統(tǒng)印刷術(shù)的問(wèn)題就在于所有的字都刻在同一版面上,使其耦合度太高所制),需要利用恰當(dāng)?shù)脑O(shè)計(jì)模式使得程序更加的靈活,容易修改,并且易于復(fù)用,上述的所有問(wèn)題都將變得輕松容易許多。1.2面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特性面向?qū)ο蟪绦蛟O(shè)計(jì)是一種程序設(shè)計(jì)范型,同時(shí)也是一種程序開(kāi)發(fā)的方法。它將對(duì)象(對(duì)象指的是類的實(shí)例)作為程序的基本單元,將程序和數(shù)據(jù)封裝其中,以提高軟件的重用性、靈活性和擴(kuò)展性。面向?qū)ο蟮幕舅枷胧鞘褂脤?duì)象、類、繼承、封裝和消息等基本概念來(lái)進(jìn)行程序設(shè)計(jì)。從現(xiàn)實(shí)世界中客觀存在的事物出發(fā)來(lái)構(gòu)造軟件系統(tǒng),并且在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式。從理論上來(lái)講,面向?qū)ο蟪绦虬ㄋ膫€(gè)基本特征:抽象、封裝、繼承與派生、多態(tài)性。有時(shí)候也會(huì)把面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特征描述為封裝、繼承和多態(tài)三個(gè),因?yàn)槌橄蠛头庋b可以理解為相似的概念,而繼承和派生也是相對(duì)而言的。61.2面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特性抽象為了更好的說(shuō)明抽象的概念,先來(lái)討論一個(gè)現(xiàn)實(shí)當(dāng)中總是無(wú)法避免的東西——數(shù)學(xué)。數(shù)學(xué)是一門(mén)抽象的學(xué)科,而抽象則正是數(shù)學(xué)的本質(zhì)。在使用面向?qū)ο蟮姆椒ㄔO(shè)計(jì)一個(gè)軟件系統(tǒng)時(shí),首先就要區(qū)分出現(xiàn)實(shí)世界中的事物所屬的類型,分析它們擁有哪些性質(zhì)與功能,再將它們抽象為在計(jì)算機(jī)虛擬世界中才有意義的實(shí)體——類,在程序運(yùn)行時(shí),由類創(chuàng)建出對(duì)象,用對(duì)象之間的相互合作關(guān)系來(lái)模擬真實(shí)世界中事物的相互關(guān)聯(lián)。比如,對(duì)圓這一類對(duì)象的抽象:
數(shù)據(jù)抽象——半徑radius,方法抽象——求面積GetArea()。對(duì)一個(gè)問(wèn)題可能有不同的抽象結(jié)果,這取決于程序員看問(wèn)題的角度和解決問(wèn)題的需求??梢哉f(shuō),在從真實(shí)世界到計(jì)算機(jī)虛擬世界的轉(zhuǎn)換過(guò)程中,抽象起了關(guān)鍵的作用。71.2面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特性封裝封裝就是把對(duì)象的數(shù)據(jù)和方法結(jié)合成一個(gè)獨(dú)立的單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。封裝這一特性不僅大大提高了代碼的易用性,而且還使得類的開(kāi)發(fā)者可以方便地更換新的算法,這種變化不會(huì)影響使用類的外部代碼。封裝的作用包括:徹底消除了對(duì)傳統(tǒng)結(jié)構(gòu)方法中數(shù)據(jù)與操作分離所帶來(lái)的種種問(wèn)題,提高了程序的復(fù)用性和可維護(hù)性。把對(duì)象的私有數(shù)據(jù)和公共數(shù)據(jù)分離開(kāi)來(lái),保護(hù)了私有數(shù)據(jù),減少了可能的模塊間的干擾,達(dá)到了降低程序復(fù)雜性、提高可控性的目的。增強(qiáng)使用的安全性,使用者不必了解很多實(shí)現(xiàn)細(xì)節(jié),只需要通過(guò)設(shè)計(jì)者提供的外部接口來(lái)操作它。容易實(shí)現(xiàn)高度模塊化,從而產(chǎn)生軟件構(gòu)件,利用構(gòu)件快速地組裝程序。具備這種“封裝”的意識(shí),是掌握面向?qū)ο蠓治雠c設(shè)計(jì)技巧的關(guān)鍵。81.2面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特性繼承和派生一個(gè)新類從已存在的類那里獲得該類已有的特性叫作類的繼承,已存在的類叫作父類,也叫作基類,產(chǎn)生的新類叫作子類或派生類。從一個(gè)已有的類那里產(chǎn)生一個(gè)新類的過(guò)程叫類的派生。已存在的類叫作父類,也叫作基類,產(chǎn)生的新類叫作派生類或子類。類的繼承和派生是同一概念,前者是從子類的角度來(lái)說(shuō),后者是從父類的角度來(lái)說(shuō)的。通常說(shuō)子類繼承了父類,父類派生了子類。91.2面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特性派生類是基類的具體化,基類是派生類的抽象。一個(gè)派生類的對(duì)象也是一個(gè)基類的對(duì)象,具有基類的一切屬性和方法。派生類除了具有基類的一切屬性和方法外,還可以有自己所特有的屬性和方法。101.2面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特性多態(tài)簡(jiǎn)單來(lái)說(shuō),多態(tài)是具有表現(xiàn)多種形態(tài)的能力的特征,在OO中是指,語(yǔ)言具有根據(jù)對(duì)象的類型以不同方式處理,特別是重載方法和繼承類這種形式的能力。多態(tài)被認(rèn)為是面向?qū)ο笳Z(yǔ)言的必備特性。用一個(gè)比較抽象的事物來(lái)取代具體的事物的表達(dá)方法,在面向?qū)ο筌浖杏谩岸鄳B(tài)”這一特性來(lái)模擬。在編程中使用多態(tài)的方法,可以在代碼中本應(yīng)使用某一具體子類的地方使用較為抽象的基類對(duì)象,這種方法所帶來(lái)的好處是多態(tài)的代碼具有“變色龍”的特性,即在不同的條件下,同樣代碼可以完成不同的功能。111.2面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特性總體而言,面向?qū)ο蟪绦蛟O(shè)計(jì)思想和面向過(guò)程的程序設(shè)計(jì)思想可以簡(jiǎn)單做如下比較:面向過(guò)程的程序設(shè)計(jì):優(yōu)點(diǎn):性能比面向?qū)ο蟾?,因?yàn)轭愓{(diào)用時(shí)需要實(shí)例化,開(kāi)銷比較大,比較消耗資源;比如單片機(jī)、嵌入式開(kāi)發(fā)、Linux/Unix等一般采用面向過(guò)程開(kāi)發(fā),性能是最重要的因素。缺點(diǎn):沒(méi)有面向?qū)ο笠拙S護(hù)、易復(fù)用、易擴(kuò)展。面向?qū)ο蟮某绦蛟O(shè)計(jì):優(yōu)點(diǎn):易維護(hù)、易復(fù)用、易擴(kuò)展,由于面向?qū)ο笥蟹庋b、繼承、多態(tài)性的特性,可以設(shè)計(jì)出低耦合的系統(tǒng),使系統(tǒng)更加靈活、更加易于維護(hù)。缺點(diǎn):性能比面向過(guò)程低。12類和對(duì)象二2類和對(duì)象142.1類的定義14在Python中提供了很多標(biāo)準(zhǔn)的類,用戶可以在開(kāi)發(fā)程序的過(guò)程中直接使用。另外,用戶也可以在Python中自己定義類。類使用class關(guān)鍵字來(lái)定義,可以包含數(shù)據(jù)成員、方法成員以及嵌套的類型成員。定義的方法為:classClassName '''類的幫助信息''' statement其中ClassName用于指定類名,一般使用大寫(xiě)字母開(kāi)頭;statement表示類體,主要是由類變量(或類成員)、方法和屬性等語(yǔ)句組成,如果在定義類時(shí),沒(méi)想好類的具體功能,也可以在類體中直接使用pass語(yǔ)句代替。2.2對(duì)象的創(chuàng)建和使用16Class語(yǔ)句本身并不創(chuàng)建該類的任何實(shí)例,所以在類定義完成后,可以創(chuàng)建類的實(shí)例,然后通過(guò)實(shí)例化的類的對(duì)象來(lái)訪問(wèn)類的成員,即實(shí)例化該類的對(duì)象。溫馨提示:Python對(duì)于變量類型的管理非常智能,上面代碼中最后一行打印輸出語(yǔ)句中,前半部分是字符串,而后半部分Getarea方法返回的是double類型,這種輸出方式在其他語(yǔ)言中通常會(huì)報(bào)錯(cuò),但是在Python中可以正常運(yùn)行,這也為程序員帶來(lái)了很多方便。Python類也是對(duì)象,它們是type類的實(shí)例,即type(Rectangle)的執(zhí)行結(jié)果為type。2.2對(duì)象的創(chuàng)建和使用17classRectangle:'''這是一個(gè)矩形類'''longside=0.0#這是矩形的長(zhǎng)
wideside=0.0#這是矩形的寬
#求矩形的面積
defGetarea(self):returnself.longside*self.widesider=Rectangle()r.longside=2r.wideside=3
print("該矩形的面積為:",r.Getarea())屬性和方法三3.1訪問(wèn)機(jī)制19通過(guò)封裝,可以將類中的屬性和方法等資源,分為不同的訪問(wèn)級(jí)別,對(duì)應(yīng)了不同的外部訪問(wèn)權(quán)限。最基本的可以分為公有成員和私有成員,公有成員可以被外界訪問(wèn),私有成員不能被外界訪問(wèn),這就是封裝中最關(guān)鍵的概念——訪問(wèn)控制。訪問(wèn)控制通常有三種級(jí)別:私有、受保護(hù)和公有:私有(Private):只有類自身內(nèi)部可以訪問(wèn)。受保護(hù)(Protected):只有類自身和子類可以訪問(wèn)。公有(Public):任何類都可以訪問(wèn)。3.1訪問(wèn)機(jī)制203.2方法21Python中每個(gè)實(shí)例方法的第一個(gè)參數(shù)必須對(duì)應(yīng)于該實(shí)例,即該對(duì)象本身。按照慣例,這個(gè)參數(shù)名為self。后面是其他參數(shù)(如果有需要的話)。在調(diào)用方法時(shí),無(wú)需明確提供與參數(shù)self相對(duì)應(yīng)的參數(shù)。通常,需要定義的一個(gè)最重要的方法是構(gòu)造函數(shù),即__init__()方法。和其他語(yǔ)言的構(gòu)造函數(shù)一樣,在類的實(shí)例創(chuàng)建后就會(huì)調(diào)用這個(gè)方法。該方法負(fù)責(zé)初始化類成員。溫馨提示:和其他面向?qū)ο蟮恼Z(yǔ)言一樣,Python也有析構(gòu)函數(shù),在示例銷毀的時(shí)候調(diào)用,Python中的析構(gòu)函數(shù)是通過(guò)__del__()來(lái)實(shí)現(xiàn)的,如果有必要的話,在其中執(zhí)行一些資源釋放操作。3.3屬性22類的成員有公有成員,也有私有成員。對(duì)于公有成員來(lái)說(shuō),外部可以直接訪問(wèn),但是對(duì)于私有成員來(lái)說(shuō),外部不能直接訪問(wèn)。可以定義一些常規(guī)方法來(lái)對(duì)這些私有成員進(jìn)行訪問(wèn),除此之外,還可以通過(guò)一種特殊的方法對(duì)這些私有成員進(jìn)行訪問(wèn),那就是屬性。屬性封裝了一系列方法:getter、setter和deleter,但其行為與普通的數(shù)據(jù)屬性相同。3.4類和靜態(tài)方法23Python中普通的方法都需要先實(shí)例化一個(gè)類的對(duì)象,然后通過(guò)該對(duì)象調(diào)用相關(guān)的方法,也被稱為實(shí)例方法。除了實(shí)例方法和屬性之外,類還可以擁有類方法和靜態(tài)方法。而靜態(tài)方法與類方法則不需要進(jìn)行實(shí)例化對(duì)象,都是可以通過(guò)類名來(lái)直接調(diào)用。他們之間的區(qū)別如下表所示:3.4類和靜態(tài)方法24方法類別定義調(diào)用實(shí)例方法第一個(gè)參數(shù)必須是實(shí)例對(duì)象,該參數(shù)名一般約定為“self”,通過(guò)它來(lái)傳遞實(shí)例的屬性和方法(也可以傳類的屬性和方法)只能由實(shí)例對(duì)象調(diào)用類方法使用裝飾器@classmethod。第一個(gè)參數(shù)必須是當(dāng)前類對(duì)象,該參數(shù)名一般約定為“cls”,通過(guò)它來(lái)傳遞類的屬性和方法(不能傳實(shí)例的屬性和方法)類對(duì)象或?qū)嵗龑?duì)象都可以調(diào)用靜態(tài)方法使用裝飾器@staticmethod。參數(shù)隨意,沒(méi)有“self”和“cls”參數(shù),但是方法體中不能使用類或?qū)嵗娜魏螌傩院头椒悓?duì)象或?qū)嵗龑?duì)象都可以調(diào)用3.4類和靜態(tài)方法25類方法類方法需要使用裝飾器@classmethod。原則上,類方法是將類本身作為對(duì)象進(jìn)行操作的方法。假設(shè)有個(gè)方法在邏輯上采用類本身作為對(duì)象來(lái)調(diào)用更合理,那么就可以將其定義為類方法。靜態(tài)方法靜態(tài)方法是類中的函數(shù),不需要實(shí)例。靜態(tài)方法主要用于存放邏輯性的代碼,邏輯上屬于類,但是和類本身沒(méi)有關(guān)系,也就是說(shuō)在靜態(tài)方法中,不會(huì)涉及到類中的屬性和方法的操作??梢岳斫鉃?,靜態(tài)方法是個(gè)獨(dú)立的、單純的函數(shù),它僅僅托管于某個(gè)類的名稱空間中,便于使用和維護(hù)。靜態(tài)方法使用裝飾器@staticmethod。類的繼承四4.1類的繼承27繼承是一種創(chuàng)建類的方法,在python中,一個(gè)類可以繼承來(lái)自一個(gè)或多個(gè)父類。原始類稱為基類或超類。而繼承也分為單繼承和多繼承(也叫多重繼承)。和繼承相對(duì)的概念叫派生,派生就是子類在繼承父類的基礎(chǔ)上衍生出新的屬性。子類中獨(dú)有的,父類中沒(méi)有的;或子類定義與父類重名的東西。子類也叫派生類。假如已經(jīng)有了幾個(gè)類,而類與類之間有共同的變量屬性和函數(shù)屬性,就可以把這幾個(gè)變量屬性和函數(shù)屬性提取出來(lái)作為基類的屬性。而特殊的變量屬性和函數(shù)屬性,則在本類中定義,這樣只需要繼承這個(gè)基類,就可以訪問(wèn)基類的變量屬性和函數(shù)屬性。適當(dāng)?shù)氖褂美^承可以提高代碼的可擴(kuò)展性。4.1類的繼承284.1類的繼承29Python中的繼承有如下特點(diǎn):在子類中,并不會(huì)自動(dòng)調(diào)用基類的__init__(),需要在派生類中手動(dòng)調(diào)用。在調(diào)用基類的方法時(shí),需要加上基類的類名前綴,且需要帶上self參數(shù)變量。先在本類中查找調(diào)用的方法,找不到才去基類中找。4.2組合30代碼復(fù)用的重要的方式除了繼承還有組合。組合就是在一個(gè)類中以另一個(gè)類的對(duì)象作為數(shù)據(jù)屬性,稱為類的組合,通常也將這樣的類稱為復(fù)合類或組合類。通過(guò)繼承建立了派生類與基類之間的關(guān)系,它是一種“是”的關(guān)系,比如白馬是馬,人是動(dòng)物。而通過(guò)組合的方式建立了類與組合類之間的包含關(guān)系,它是一種“有”的關(guān)系,比如老師有生日,老師有一些教的課程等等。當(dāng)類之間有顯著不同,并且較小的類是較大的類所需要的組件時(shí),更推薦使用組合。4.2組合31應(yīng)用舉例五5應(yīng)用舉例33絕地求生是一款當(dāng)下很火熱的第一人稱射擊游戲。在Python中,可以用面向?qū)ο蟮木幊趟枷?,模擬實(shí)現(xiàn)一個(gè)戰(zhàn)士開(kāi)槍射擊敵人的場(chǎng)景。模擬場(chǎng)景中需要有戰(zhàn)士(玩家)、敵人、槍三個(gè)對(duì)象,其中槍又包括彈夾,子彈兩個(gè)對(duì)象。該案例的實(shí)現(xiàn)流程可以大致分為5個(gè)步驟:5應(yīng)用舉例34第1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房買(mǎi)賣(mài)合同范本
- 工程監(jiān)理聘用合同
- 2025合同模板股權(quán)質(zhì)押協(xié)議(質(zhì)權(quán)人為銀行)范本
- 電車(chē)租賃合同范本
- 2025年滬教版選擇性必修3歷史上冊(cè)月考試卷含答案
- 2025年新科版九年級(jí)地理上冊(cè)月考試卷含答案
- 2025年人教新課標(biāo)九年級(jí)物理上冊(cè)階段測(cè)試試卷含答案
- 2025企業(yè)加工貿(mào)易合同
- 2025年粵教新版選修5歷史下冊(cè)階段測(cè)試試卷含答案
- 建筑工程經(jīng)濟(jì)學(xué)與投資分析
- 《中國(guó)古代寓言》導(dǎo)讀(課件)2023-2024學(xué)年統(tǒng)編版語(yǔ)文三年級(jí)下冊(cè)
- 五年級(jí)上冊(cè)計(jì)算題大全1000題帶答案
- 工程建設(shè)行業(yè)標(biāo)準(zhǔn)內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
- 液壓動(dòng)力元件-柱塞泵課件講解
- 人教版五年級(jí)上冊(cè)數(shù)學(xué)脫式計(jì)算100題及答案
- 屋面細(xì)石混凝土保護(hù)層施工方案及方法
- 2024年1月山西省高三年級(jí)適應(yīng)性調(diào)研測(cè)試(一模)理科綜合試卷(含答案)
- 110kv各類型變壓器的計(jì)算單
- 5A+Chapter+1+Changes+at+home+課件(新思維小學(xué)英語(yǔ))
- 安徽省2023年中考數(shù)學(xué)試卷(附答案)
- 護(hù)工(陪護(hù))培訓(xùn)教材(完整版)資料
評(píng)論
0/150
提交評(píng)論