《Python編程基礎》教學課件-06面向?qū)ο缶幊蘝第1頁
《Python編程基礎》教學課件-06面向?qū)ο缶幊蘝第2頁
《Python編程基礎》教學課件-06面向?qū)ο缶幊蘝第3頁
《Python編程基礎》教學課件-06面向?qū)ο缶幊蘝第4頁
《Python編程基礎》教學課件-06面向?qū)ο缶幊蘝第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、任務6 面向?qū)ο缶幊虒W生信息管理程序任務6 面向?qū)ο缶幊虒W生信息管理程序目錄CONTENTS1任務描述2面向?qū)ο缶幊谈攀?類和對象4類的方法5對象初始化6繼承7任務實現(xiàn)目錄CONTENTS1任務描述2面向?qū)ο缶幊谈攀?類和對象401 任務描述通過前面內(nèi)容的學習,了解如何在Python 編程語言中進行程序調(diào)試與測試,掌握了調(diào)試和測試的方法,通過調(diào)試猜數(shù)程序詳細介紹了調(diào)試的過程。本章將學習面向?qū)ο缶幊?,并完成“學生信息管理”的實現(xiàn)。“學生信息管理”程序會通過面向?qū)ο蟮姆椒ㄔO計學生類Student,包含一個學生姓名(Name)、性別(Gender)、年齡(Age),然后設計學生記錄管理類Studen

2、tList來管理一組學生記錄。01 任務描述通過前面內(nèi)容的學習,了解如何在Python 編01 任務描述任務描述如下:(1)設計學生類Student和學生記錄管理類StudentList;(2)增加學生記錄的函數(shù)insert與_insert;(3)增加更新記錄的函數(shù)update與_update;(4)設計刪除記錄的函數(shù)是delete與_delete;(5)啟動無限循環(huán),在命令提示符號“”后面輸入show、insert、update、delete、exit命令,實現(xiàn)學生信息管理的功能。01 任務描述任務描述如下:02 面向?qū)ο缶幊谈攀雒嫦驅(qū)ο缶幊淌亲钣行У能浖帉懛椒ㄖ?,是軟件工程領域中的重要

3、技術,這種軟件開發(fā)思想比較自然地模擬了人類對客觀世界的認識,成為當前計算機軟件工程學的主流方法。Python作為一門面向?qū)ο缶幊陶Z言,掌握面向?qū)ο缶幊趟枷胫陵P重要,因此,本章我們來學習面向?qū)ο缶幊蹋ㄟ^本章的學習,大家能夠建立面向?qū)ο蟮木幊趟枷耄瑢W會使用這種思想開發(fā)程序。02 面向?qū)ο缶幊谈攀雒嫦驅(qū)ο缶幊淌亲钣行У能浖帉懛椒ㄖ?2 面向?qū)ο缶幊谈攀雒嫦驅(qū)ο缶幊蘋bject Oriented Programming,簡稱OOP,是一種程序設計思想。OOP把對象作為程序的基本單元,一個對象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)。面向過程的程序設計把計算機程序視為一系列的命令集合,即一組函數(shù)的順序執(zhí)行。為了

4、簡化程序設計,面向過程把函數(shù)繼續(xù)切分為子函數(shù),即把大塊函數(shù)通過切割成小塊函數(shù)來降低系統(tǒng)的復雜度。而面向?qū)ο蟮某绦蛟O計把計算機程序視為一組對象的集合,而每個對象都可以接收其他對象發(fā)過來的消息,并處理這些消息,計算機程序的執(zhí)行就是一系列消息在各個對象之間傳遞。在Python中,所有數(shù)據(jù)類型都可以視為對象,當然也可以自定義對象。自定義的對象數(shù)據(jù)類型就是面向?qū)ο笾械念悾–lass)的概念。02 面向?qū)ο缶幊谈攀雒嫦驅(qū)ο缶幊蘋bject Orie03 類和對象(1)類與對象簡介在進行Python面向?qū)ο缶幊讨埃紫攘私鈳讉€術語:類、類對象、實例對象、屬性、函數(shù)和方法。類是對現(xiàn)實世界中一些事物的封裝,定

5、義一個類可以采用下面的方式來定義:注意:類名后面有個冒號,block要向右邊縮進,在block塊里面就可以定義屬性和方法了。03 類和對象(1)類與對象簡介注意:類名后面有個冒號,bl03 類和對象(2)類屬性類屬性是與類綁定的,它是被這個類所擁有的,如果要修改類的屬性就必須使用類的名稱訪問它,而不能使用對象實例訪問它。Python的這個功能特性與JavaScript的特性很像,實例有結(jié)合任何屬性的功能,只要執(zhí)行:對象實例.屬性 = .為這個對象實例賦值,那么如果該對象實例存在這個屬性,這個屬性的值就被改變,但是如果不存在該屬性就會自動為該對象實例創(chuàng)建一個這樣的屬性。03 類和對象(2)類屬性

6、03 類和對象(3)訪問的權限前面的Student中的name和age都是共有的屬性,可以直接在類外通過對象名訪問,如果想定義成為私有的,則需要在前面添加2個下畫線“_”。創(chuàng)建一個文檔Student3.py,具體代碼如下。03 類和對象(3)訪問的權限03 類和對象(4)案例:Student類屬性執(zhí)行后,運行結(jié)果如下。由此可見,通過對象p與Person類名稱都可以讀取到類屬性name、gender、age。03 類和對象(4)案例:Student類屬性執(zhí)行后,運行結(jié)04 類的方法(1)實例方法實例方法就是通過實例對象調(diào)用的方法,在類中可以根據(jù)需要定義一些方法,定義方法采用def關鍵字,在類中定

7、義的方法至少會有一個參數(shù),一般以名為self的變量作為該參數(shù)(用其他名稱也可以),而且需要作為第一個參數(shù)。04 類的方法(1)實例方法04 類的方法(2)類方法在類中可以定義屬于類的屬性,也可以定義屬于類的方法,這種方法要使用classmethod來修飾,而且第一個參數(shù)一般命名為cls(也可以是別的名稱)。創(chuàng)建文檔Student6.py,具體案例代碼如下。執(zhí)行后,運行結(jié)果如下。04 類的方法(2)類方法執(zhí)行后,運行結(jié)果如下。04 類的方法(3)靜態(tài)方法靜態(tài)函數(shù)通過staticmethod修飾,要訪問類的靜態(tài)函數(shù),可以采用類名稱調(diào)用。在調(diào)用這類的函數(shù)時,不會向函數(shù)傳遞任何參數(shù)。執(zhí)行后,運行結(jié)果如

8、下。04 類的方法(3)靜態(tài)方法執(zhí)行后,運行結(jié)果如下。04 類的方法(3)靜態(tài)方法靜態(tài)函數(shù)通過staticmethod修飾,要訪問類的靜態(tài)函數(shù),可以采用類名稱調(diào)用。在調(diào)用這類的函數(shù)時,不會向函數(shù)傳遞任何參數(shù)。執(zhí)行后,運行結(jié)果如下。其中,display就是靜態(tài)方法,show是類方法,它們都是用Student類名稱調(diào)用,只是Student.show()會把Student傳遞給def show(classme)的參數(shù)classme,但是Student.disp()不傳遞任何參數(shù)。classmethod修飾的函數(shù)與staticmethod修飾的函數(shù)最大的區(qū)別是classmethod的函數(shù)被類名稱或者類

9、調(diào)用時會傳遞一個類的名稱給它的第一個參數(shù),但是staticmethod的函數(shù)被類名稱或者類實例調(diào)用時就不會傳遞任何參數(shù)給這個函數(shù)。04 類的方法(3)靜態(tài)方法執(zhí)行后,運行結(jié)果如下。其中,di04 類的方法(4)案例:Student類方法通過編寫學生個人信息類實例方法、類方法以及靜態(tài)方法,然后通過程序分析其方法的調(diào)用。我們需要創(chuàng)建一個文檔Student8.py,具體案例代碼如下。執(zhí)行后,運行結(jié)果如下。使用類方法classShow()一般采用類的名稱調(diào)用,調(diào)用時需要向類方法傳遞類參數(shù),例如:Student.classShow();使用靜態(tài)方法調(diào)用,一般采用類的名稱調(diào)用,調(diào)用時不需要向靜態(tài)方法傳遞任

10、何參數(shù)。04 類的方法(4)案例:Student類方法執(zhí)行后,運行結(jié)05 對象初始化在面向?qū)ο蟮某绦蛟O計中,對象實例化往往要對實例做一些初始化的工作,例如設置實例屬性的初始值,而這些工作是自動完成的,因此有默認的方法被調(diào)用,這個默認的方法就是構造函數(shù),與之匹配的是析構函數(shù)。05 對象初始化在面向?qū)ο蟮某绦蛟O計中,對象實例化往往要對實05 對象初始化(1)構造方法與析構方法在Python中有一些內(nèi)置的方法,這些方法命名都有比較特殊的地方,比如其方法名以2個下畫線開始然后以2個下畫線結(jié)束。類中最常用的就是構造方法和析構方法。構造方法_init_(self,.)在生成對象時調(diào)用,可以用來進行一些初始

11、化操作,不需要顯示去調(diào)用,系統(tǒng)會默認去執(zhí)行。如果用戶自己沒有重新定義構造的方法,系統(tǒng)就會自動執(zhí)行默認的構造方法。建立構造方法的格式如下:class 類名(): Def _init_(參數(shù)): 構造方法主體部分05 對象初始化(1)構造方法與析構方法05 對象初始化(2)對象的初始化構造函數(shù)_init_是建立對象實例的自動調(diào)用函數(shù),可以在這個函數(shù)中為實例對象初始化屬性值。下面,我們通過實例介紹對象的初始化,新建一個文檔student11.py,代碼如下。執(zhí)行后,運行結(jié)果如下。在本程序中,執(zhí)行語句p=Student(李麗,女,21)時調(diào)用_init_函數(shù),并傳遞4個參數(shù)給它,通過以下語句這個實例生

12、成了name,gender,age屬性,而且值由參數(shù)n、g、a確定。注意這幾個屬性是實例對象自己的屬性,不是類Student的類屬性。05 對象初始化(2)對象的初始化執(zhí)行后,運行結(jié)果如下。在本05 對象初始化(3)self參數(shù)類的實例方法都至少帶有一個參數(shù),而且第一個參數(shù)通常命名為self,在實例調(diào)用這個方法時會把實例自己傳遞給這個self參數(shù)。下面,我們通過實例來解釋self參數(shù),新建文檔student13.py,代碼如下。執(zhí)行后,運行結(jié)果如下。其中Student.show(p)的效果與p.show()是一樣的,只是Student.show(p)時直接把實例p傳遞給self參數(shù),而p.sh

13、ow()調(diào)用時p默認自動傳遞給show的是self,因此在show中都可以使用,self.gender,self.age訪問到p的屬性。05 對象初始化(3)self參數(shù)執(zhí)行后,運行結(jié)果如下。其中05 對象初始化(4)案例:日期類通過編寫一個日期類MyDate,擁有年月日的數(shù)據(jù),定義MyDate._init_函數(shù)實現(xiàn)對象的初始化,在數(shù)據(jù)不合理時拋出異常。新建文檔MyDate.py,代碼如下。執(zhí)行后,運行結(jié)果如下。05 對象初始化(4)案例:日期類執(zhí)行后,運行結(jié)果如下。06 繼承面向?qū)ο缶幊?(OOP) 語言的一個主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無須重

14、新編寫原來的類的情況下對這些功能進行擴展。通過繼承創(chuàng)建的新類被稱為“子類”或“派生類”,被繼承的類被稱為“基類”“父類”或“超類”,繼承的過程,就是從一般到特殊的過程。在某些 OOP 語言中,一個子類可以繼承多個基類。但是一般情況下,一個子類只能有一個基類,要實現(xiàn)多重繼承,可以通過多級繼承來實現(xiàn)。06 繼承面向?qū)ο缶幊?(OOP) 語言的一個主要功能就是“06 繼承繼承概念的實現(xiàn)方式主要有2類:實現(xiàn)繼承、接口繼承。實現(xiàn)繼承是指使用基類的屬性和方法,而無須額外編碼的能力;接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現(xiàn)的能力(子類重構父類方法)。在考慮使用繼承時,有一點需要注意,那就是兩

15、個類之間的關系應該是“屬于”關系。例如,Employee 是一個人,Manager 也是一個人,因此這兩個類都可以繼承 Person 類。但是 Leg 類卻不能繼承 Person 類,因為腿并不是一個人。06 繼承繼承概念的實現(xiàn)方式主要有2類:實現(xiàn)繼承、接口繼承。06 繼承(1)派生與繼承定義一個學生類Student-com,包含姓名name、性別gender、年齡age,還包含所學專業(yè)的major、所在院系dept,那么就沒有必要重新定義Student類,只要從已經(jīng)定義的Student類繼承過來就行。新建一個文檔student14.py,代碼如下。執(zhí)行后,運行結(jié)果如下。06 繼承(1)派生與

16、繼承執(zhí)行后,運行結(jié)果如下。06 繼承(2)構造函數(shù)的繼承從Student-com類的定義可以看出派生類的構造函數(shù)除了完成自己新增加的major、dept屬性的初始化外,還要調(diào)用基類Student的構造函數(shù),而且還要顯示調(diào)用,即:Student._init_(self,name,gender,age)通過類名稱Student直接調(diào)用Student的_init_函數(shù),并且提供所要的4個參數(shù),繼承類是不會自動調(diào)用基類的構造函數(shù)的,必須顯示調(diào)用。06 繼承(2)構造函數(shù)的繼承06 繼承(3)屬性方法的繼承如果一個基類中有一個實例方法,在繼承類中也可以重新定義完全一樣的實例方法,例如Student有sh

17、ow方法,在Student-com中也有一樣的show方法,它們是不會混淆的,稱Student-com類的show重寫了Student的show。當然一個基類的實例方法也可以不被重寫,派生類會繼承這個基類的實例方法,派生類也可以增加自己的新實例方法。06 繼承(3)屬性方法的繼承06 繼承(4)案例:日期時間類前面我們通過編寫一個日期類MyDate,擁有年月日的數(shù)據(jù),接下來,再增加時分秒的數(shù)據(jù),派生出日期時間類MyDateTime。新建文檔MyDateTime.py,代碼如下。執(zhí)行后,運行結(jié)果如下。06 繼承(4)案例:日期時間類執(zhí)行后,運行結(jié)果如下。07 任務實現(xiàn)本項目通過面向?qū)ο蟮姆椒ㄔO計

18、學生類Student,包含一個學生姓名(Name)、性別(Gender)、年齡(Age),然后設計學生記錄管理類StudentList來管理一組學生記錄。代碼如課表所示。在本程序中首先設計學生類Student,然后設計學生記錄管理類StudentList,在該類中有一個students=是一個列表,列表的每個元素是一個Student對象,這樣就記錄了一組學生。增加學生記錄的函數(shù)是insert與_insert,其中insert函數(shù)完成學生信息的輸入,_insert完成學生的真正插入,插入時通過掃描學生學號No確定插入學生的位置,保證插入的學生是按照學號從小到大排列的。07 任務實現(xiàn)本項目通過面向?qū)ο蟮姆椒ㄔO計學生類Studen07 任務實現(xiàn)更新記錄的函數(shù)是update與_update,其中update完成學生信息的輸入,_update完成學生記錄的真正更新,更新時通過掃描學生學號No確定學生的位置,學號不能更新。刪除記錄的函數(shù)是delete與_delete,其中delete完成學生學號的刪除,_de

溫馨提示

  • 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

提交評論