




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目錄CONTENT8.18.28.38.4OOP概述類的定義和使用類的成員及其訪問控制應用實例:學生成績的處理8.1OOP概述
面向對象程序設計(ObjectOrientedProgramming,簡稱OOP)出現于20世紀80年代末期,是90年代以來主流程序設計技術。OOP主要是針對大型軟件的設計而提出的。使用OOP技術設計的軟件,代碼的可讀性、可維護性和重用性(復用性)都非常好。OOP技術比較符合人的思維方式,使軟件設計更加靈活,大大提高了軟件設計的效率。當今主流的程序設計語言都支持OOP,包括Python語言。
MORETHENTEMPLATE對象所謂對象就是任意存在的事物,是可以控制和操作的實體。在現實世界中,任何事物都是對象。它可以是人,也可以是物,還可以是一件事。同樣的,用OOP設計出來的程序,也是由各種各樣的對象組成的,對象之間互相關聯、互相影響推動程序向前運行。對象通常由兩部分組成,靜態部分和動態部分。類在現實世界中,類是對一組具有相同的屬性和行為(功能)的對象的抽象。比如,張三是一個教師,教師是一個類,張三是教師這個類的一個具體對象。類和對象之間的關系是抽象和具體的關系,類是對多個對象進行抽象的結果。一個對象是類的一個實例。在OOP中,類就是具有相同的屬性(通常稱為類的數據成員)和相同的行為或功能(通常稱為類的方法成員)的一組對象的模板。用OOP設計程序時,通常是先設計類,然后再創建對象,這一點與現實世界不一樣。浙江財經大學東方學院信息分院38.1.1OOP基本概念
MORETHENTEMPLATE消息和方法在現實世界中,對象之間是通過發送消息進行交流的。在OOP中,向一個對象發出請求稱為消息,這個消息要求對象實現某一行為(功能)。而對象所能實現的行為(功能),在OOP中稱之為方法(就是類的方法成員),它是通過函數來實現的。因此,向對象發送消息,實際上就是調用實現對應功能的函數。換句話說,對象根據接收到的消息,調用相應的方法(函數);反過來,有了方法(函數),對象才能響應相應的消息。事件事件是外部發生在對象上的動作。在OOP中,事件的發生不是隨意的,某些事件僅發生在某些對象上,對象僅對這些事件做出反應,這在OOP中都是事先定義好的。OOP應用程序通常是事件驅動的。事件驅動的應用程序中,代碼不是按照預定的路徑執行,而是在響應不同的事件時執行不同的代碼片段。事件可以由用戶操作觸發、也可以由來自操作系統或其它應用程序的消息觸發、甚至由應用程序本身的消息觸發。浙江財經大學東方學院信息分院48.1.1OOP基本概念
MORETHENTEMPLATE封裝在現實世界中,所謂封裝就是把某個事物包圍起來,外界是看不到內部的,甚至是不可知的。比如一臺電視機,使用外殼封裝起來的。OOP的封裝與電視機的設計思想是一致的。在OOP中,封裝是指把數據和實現操作的方法集中起來放在對象內部,并盡可能隱蔽對象的內部細節,只給外部留下少量接口,便于聯系。封裝使各個對象相對獨立、相不干擾。封裝使對象的使用者與設計者分開。這樣,大大降低了人們操作的復雜程度,還有利于數據安全,從而減輕了開發一個軟件糸統的難度。浙江財經大學東方學院信息分院58.1.2OOP特點
MORETHENTEMPLATE繼承現代工業高效的重要原因:重用性。一件工業產品的生產通常都不是從零開始的,總是盡可能利用前有的成果。在OOP中,重用性主要通過繼承機制來實現。所謂繼承,是指在設計新類(稱之為子類)的時候,直接把現有的類(稱之為父類)拿過來用。也就是在父類的基礎上設計子類,父類有的直接拿過來用,父類沒有的可以新增。通過繼承,使得類間具有共享特性,避免公用代碼的重復開發,減少代碼和數據冗余。浙江財經大學東方學院信息分院68.1.2OOP特點
MORETHENTEMPLATE多態多態性是指不同的對象收到相同的的消息時,執行不同的操作。比如,學校網站發布了有關開學的通知,學校里不同的人員看到這個相同的消息,所做出的的反應是不一樣的。OOP中的多態是指由繼承而產生的相關的不同的類,其對象對同一消息會作出不同的響應。每個對象對消息做什么操作,在類中都是事先規定好的。多態使程序設計更加簡單。浙江財經大學東方學院信息分院78.1.2OOP特點8.2類的定義和使用Python中定義類相當于先設計一個對象模板,規定每個對象的屬性(數據成員),以及方法(函數成員)。
MORETHENTEMPLATE定義類的一般格式浙江財經大學東方學院信息分院98.2.1定義類
MORETHENTEMPLATE浙江財經大學東方學院信息分院108.2.1定義類【例8?1】定義1個圓類(Circle),包含圓心坐標(x,y)和半徑r屬性,并設計具有計算面積、放大縮小、移動位置和顯示信息4個方法。
MORETHENTEMPLATE創建對象格式Python創建對象的格式非常簡單:
對象名=類名(參數)比如對于前面的Circle類,語句c1=Circle(7,8,9)表示創建創建一個圓心坐標為(7,8)半徑為9的對象c1。對象屬性的訪問Python訪問對象屬性的格式比較簡單:
對象名.屬性名比如在前面的例子里,可以用c1.r去訪問圓c1的半徑,但是必須要求訪問的權限才行浙江財經大學東方學院信息分院118.2.2對象的創建與使用
MORETHENTEMPLATE向對象發送消息Python向對象發送消息的格式也非常簡單:
對象名.函數(參數)比如對于前面創建的對象c1,語句c1.zoom(1)表示向對象發送一條消息對對象進行放大縮小,該對象接受到這個消息以后,調用函數zoom,將對象的半徑加1,完成放大功能。這里要特別說明的是,每當向對象發送消息調用相應的函數時,都會自動傳遞一個self對象作為參數,這個self對象就是該對象本身。浙江財經大學東方學院信息分院128.2.2對象的創建與使用
MORETHENTEMPLATE浙江財經大學東方學院信息分院138.2.2對象的創建與使用【例8?2】對于前面定義的圓類(Circle),創建兩個對象,計算面積,并調用其他的成員函數進行測試。8.3類的成員及其訪問控制
MORETHENTEMPLATE__init__函數__init__函數是一個特殊的函數,它主要用于創建對象時給對象初始化,它相當于C++中的構造函數,有的Python教材也稱之為構造函數,它有如下特點:__init__函數名是固定的,改成其它名字就不具備特殊性。帶有兩個下劃線開頭的函數是聲明該屬性為私有(有關訪問控制后面會介紹),不能在類的外部被使用或直接訪問,在創建對象時自動調用。__init__函數(方法)的第一個參數必須是self(self為習慣用法,也可以用別的名字),后面的參數則可以自由定義,和定義函數沒有任何區別。類的數據成員(指實例變量,8.3.2節會介紹)在__init__函數中定義并初始化。浙江財經大學東方學院信息分院158.3.1__init__函數和__del__函數
MORETHENTEMPLATE__del__函數__del__函數也是一個特殊的函數,它主要用于撤銷對象時做善后清理工作,它相當于C++中的析構函數,有的Python教材也稱之為析構函數,它有如下特點:__del__函數名是固定的,改成其它名字就不具備特殊性。帶有兩個下劃線開頭的函數是聲明該屬性為私有(有關訪問控制后面會介紹),不能在類的外部被使用或直接訪問,在撤銷對象時自動調用。__del__函數(方法)的第一個參數必須是self(self為習慣用法,也可以用別的名字),后面的參數則可以自由定義,和定義函數沒有任何區別。浙江財經大學東方學院信息分院168.3.1__init__函數和__del__函數
MORETHENTEMPLATE浙江財經大學東方學院信息分院178.3.1__init__函數和__del__函數【例8?3】給【例8-2】添加__del__函數
MORETHENTEMPLATE浙江財經大學東方學院信息分院188.3.1__init__函數和__del__函數【例8?3】給【例8-2】添加__del__函數
MORETHENTEMPLATE數據成員之實例變量實例變量是在__init__函數中定義并初始化的,實例變量最大的特點是每個對象的實例變量值可以不同,前面定義的Circle類中,x、y、r就是實例變量。數據成員之類變量類變量是在類中函數的外部定義并初始化的,類變量的特點是對于所有對象,類變量的值是相同的,所以類變量通常用于表示所有對象屬性值相同的屬性,也就是共享屬性。類變量的訪問采用如下格式:
類名.屬性名浙江財經大學東方學院信息分院198.3.2數據成員及其訪問控制
MORETHENTEMPLATE浙江財經大學東方學院信息分院208.3.2數據成員及其訪問控制【例8?4】修改【例8-3】,使其能方便表示同心圓對象。
MORETHENTEMPLATE浙江財經大學東方學院信息分院218.3.2數據成員及其訪問控制【例8?4】修改【例8-3】,使其能方便表示同心圓對象。
MORETHENTEMPLATE數據成員之公有屬性是指對數據成員的訪問不做嚴格限制,用“對象名.變量名”可以直接訪問的。Python默認的屬性都是公有的。數據成員之私有屬性是指數據成員名前加上"__"兩個下劃線,只能被本類的函數訪問,不能被類外部函數訪問的數據成員,即私有屬性在類外部不能以“對象名.變量名”的方式訪問。浙江財經大學東方學院信息分院228.3.2數據成員及其訪問控制
MORETHENTEMPLATE浙江財經大學東方學院信息分院238.3.2數據成員及其訪問控制【例8?5】修改【例8-3】,將數據成員x,y改為私有屬性。
MORETHENTEMPLATE浙江財經大學東方學院信息分院248.3.2數據成員及其訪問控制【例8?5】修改【例8-3】,將數據成員x,y改為私有屬性。
MORETHENTEMPLATE函數成員之實例函數是指跟具體對象有關,調用時第1個參數必須是self的函數,我們前面例子中看到的函數都是實例函數函數成員之靜態函數靜態函數是指與具體對象無關的函數,通常靜態函數用于訪問類變量,但不能訪問實例變量。在靜態函數中訪問類變量,要通過類名來引用。在定義靜態函數時,函數頭之前要用@staticmethod進行修飾。我們可以通過類名或對象名訪問靜態函數,格式如下:
類名(對象名).靜態函數名(參數)浙江財經大學東方學院信息分院258.3.3函數成員及其訪問控制
MORETHENTEMPLATE浙江財經大學東方學院信息分院268.3.3函數成員及其訪問控制【例8?6】修改【例8-4】,將move函數修改為靜態函數
MORETHENTEMPLATE浙江財經大學東方學院信息分院278.3.3函數成員及其訪問控制【例8?6】修改【例8-4】,將move函數修改為靜態函數
MORETHENTEMPLATE函數成員之公有屬性與數據成員的公有屬性用法相同。是指對函數成員的訪問不做嚴格限制,用“對象名.函數名”可以直接訪問的。Python默認的的函數成員屬性都是公有的。函數成員之私有屬性與數據成員的私有屬性用法相同。是指函數成員名前加上"__"兩個下劃線,只能被本類的函數訪問,不能被類外部函數訪問的函數成員,即私有屬性在類外部不能以“對象名.函數名”的方式訪問。一般私有屬性的函數作為本類的工具函數,不對外使用。浙江財經大學東方學院信息分院288.3.3函數成員及其訪問控制
MORETHENTEMPLATE浙江財經大學東方學院信息分院298.3.3函數成員及其訪問控制【例8?7】修改【例8-6】,將dispinfo改為私有屬性,使程序運行仍然能顯示圓的相關信息。
MORETHENTEMPLATE浙江財經大學東方學院信息分院308.3.3函數成員及其訪問控制【例8?7】修改【例8-6】,將dispinfo改為私有屬性,使程序運行仍然能顯示圓的相關信息。8.4學生成績處理實例1,35926778%浙江財經大學東方學院信息分院328.4學生成績處理實例【例8-8】將第7章中學生成績處理的案例,用OOP的設計方法加以實現
思路:設計學生類studengt,包含學號、姓名、各科成績、排名等屬性,設計初始化函數和學生信息格式化顯示函數。設計班級類oneclass,包含若干學生對象(用列表表示),同時包含各門課的最高分、最低分和平均分屬性,設計初始化函數、排名函數和成績表顯示函數。1,35926778%浙江財經大學東方學院信息分院338.4學生成績處理實例【例8-8】將第7章中學生成績處理的案例,用OOP的設計方法加以實現
思路:設計學生類studengt,包含學號、姓名、各科成績、排名等屬性,設計初始化函數和學生信息格式化顯示函數。設計班級類oneclass,包含若干學生對象(用列表表示),同時包含各門課的最高分、最低分和平均分屬性,設計初始化函數、排名函數和成績表顯示函數。1,35926778%浙江財經大學東方學院信息分院348.4學生成績處理實例【例8-8】將第7章中學生成績處理的案例,用OOP的設計方法加以實現
思路:設計學生類studengt,包含學號、姓名、各科成績、排名等屬性,設計初始化函數和學生信息格式化顯示函數。設計班級類oneclass,包含若干學生對象(用列表表示),同時包含各門課的最高分、最低分和平均分屬性,設計初始化函數、排名函數和成績表顯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年合肥高新美城物業有限公司招聘真題
- 2024年甘肅和平醫院招聘真題
- 2024年北京首都醫科大學附屬北京世紀壇醫院招聘真題
- 2024年安徽工程技術學校專任教師招聘真題
- 人教初中地理八下山東省德州市期末考試地理試題
- 四年級下冊數學教案-3.1 練習五 丨蘇教版
- UPS容量與負載量的計算
- 28.1 銳角三角函數 課件2024-2025學年人教版數學九年級下冊
- 首飾代加工合同范本
- 雇人拆遷勞務合同范本
- 填塘壓浸工程施工組織設計方案
- 普通心理學(第六版)
- 衛健系統深入開展矛盾糾紛“大走訪、大排查、大化解”專項行動工作方案
- 三年級音樂上冊 《法國號》課件教學
- 鄉鎮(街道)財政運行綜合績效評價報告及自評指標
- 餐飲部作業流程圖
- 代建項目管理手冊
- GB/T 15065-2009電線電纜用黑色聚乙烯塑料
- 中層干部任期考核民主測評表
- 十二經絡及腧穴課件
- 辦公室工作存在問題(總結12篇)
評論
0/150
提交評論