




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄CONTENT8.18.28.38.4OOP概述類的定義和使用類的成員及其訪問控制應(yīng)用實(shí)例:學(xué)生成績(jī)的處理8.1OOP概述
面向?qū)ο蟪绦蛟O(shè)計(jì)(ObjectOrientedProgramming,簡(jiǎn)稱OOP)出現(xiàn)于20世紀(jì)80年代末期,是90年代以來主流程序設(shè)計(jì)技術(shù)。OOP主要是針對(duì)大型軟件的設(shè)計(jì)而提出的。使用OOP技術(shù)設(shè)計(jì)的軟件,代碼的可讀性、可維護(hù)性和重用性(復(fù)用性)都非常好。OOP技術(shù)比較符合人的思維方式,使軟件設(shè)計(jì)更加靈活,大大提高了軟件設(shè)計(jì)的效率。當(dāng)今主流的程序設(shè)計(jì)語言都支持OOP,包括Python語言。
MORETHENTEMPLATE對(duì)象所謂對(duì)象就是任意存在的事物,是可以控制和操作的實(shí)體。在現(xiàn)實(shí)世界中,任何事物都是對(duì)象。它可以是人,也可以是物,還可以是一件事。同樣的,用OOP設(shè)計(jì)出來的程序,也是由各種各樣的對(duì)象組成的,對(duì)象之間互相關(guān)聯(lián)、互相影響推動(dòng)程序向前運(yùn)行。對(duì)象通常由兩部分組成,靜態(tài)部分和動(dòng)態(tài)部分。類在現(xiàn)實(shí)世界中,類是對(duì)一組具有相同的屬性和行為(功能)的對(duì)象的抽象。比如,張三是一個(gè)教師,教師是一個(gè)類,張三是教師這個(gè)類的一個(gè)具體對(duì)象。類和對(duì)象之間的關(guān)系是抽象和具體的關(guān)系,類是對(duì)多個(gè)對(duì)象進(jìn)行抽象的結(jié)果。一個(gè)對(duì)象是類的一個(gè)實(shí)例。在OOP中,類就是具有相同的屬性(通常稱為類的數(shù)據(jù)成員)和相同的行為或功能(通常稱為類的方法成員)的一組對(duì)象的模板。用OOP設(shè)計(jì)程序時(shí),通常是先設(shè)計(jì)類,然后再創(chuàng)建對(duì)象,這一點(diǎn)與現(xiàn)實(shí)世界不一樣。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院38.1.1OOP基本概念
MORETHENTEMPLATE消息和方法在現(xiàn)實(shí)世界中,對(duì)象之間是通過發(fā)送消息進(jìn)行交流的。在OOP中,向一個(gè)對(duì)象發(fā)出請(qǐng)求稱為消息,這個(gè)消息要求對(duì)象實(shí)現(xiàn)某一行為(功能)。而對(duì)象所能實(shí)現(xiàn)的行為(功能),在OOP中稱之為方法(就是類的方法成員),它是通過函數(shù)來實(shí)現(xiàn)的。因此,向?qū)ο蟀l(fā)送消息,實(shí)際上就是調(diào)用實(shí)現(xiàn)對(duì)應(yīng)功能的函數(shù)。換句話說,對(duì)象根據(jù)接收到的消息,調(diào)用相應(yīng)的方法(函數(shù));反過來,有了方法(函數(shù)),對(duì)象才能響應(yīng)相應(yīng)的消息。事件事件是外部發(fā)生在對(duì)象上的動(dòng)作。在OOP中,事件的發(fā)生不是隨意的,某些事件僅發(fā)生在某些對(duì)象上,對(duì)象僅對(duì)這些事件做出反應(yīng),這在OOP中都是事先定義好的。OOP應(yīng)用程序通常是事件驅(qū)動(dòng)的。事件驅(qū)動(dòng)的應(yīng)用程序中,代碼不是按照預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同的事件時(shí)執(zhí)行不同的代碼片段。事件可以由用戶操作觸發(fā)、也可以由來自操作系統(tǒng)或其它應(yīng)用程序的消息觸發(fā)、甚至由應(yīng)用程序本身的消息觸發(fā)。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院48.1.1OOP基本概念
MORETHENTEMPLATE封裝在現(xiàn)實(shí)世界中,所謂封裝就是把某個(gè)事物包圍起來,外界是看不到內(nèi)部的,甚至是不可知的。比如一臺(tái)電視機(jī),使用外殼封裝起來的。OOP的封裝與電視機(jī)的設(shè)計(jì)思想是一致的。在OOP中,封裝是指把數(shù)據(jù)和實(shí)現(xiàn)操作的方法集中起來放在對(duì)象內(nèi)部,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),只給外部留下少量接口,便于聯(lián)系。封裝使各個(gè)對(duì)象相對(duì)獨(dú)立、相不干擾。封裝使對(duì)象的使用者與設(shè)計(jì)者分開。這樣,大大降低了人們操作的復(fù)雜程度,還有利于數(shù)據(jù)安全,從而減輕了開發(fā)一個(gè)軟件糸統(tǒng)的難度。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院58.1.2OOP特點(diǎn)
MORETHENTEMPLATE繼承現(xiàn)代工業(yè)高效的重要原因:重用性。一件工業(yè)產(chǎn)品的生產(chǎn)通常都不是從零開始的,總是盡可能利用前有的成果。在OOP中,重用性主要通過繼承機(jī)制來實(shí)現(xiàn)。所謂繼承,是指在設(shè)計(jì)新類(稱之為子類)的時(shí)候,直接把現(xiàn)有的類(稱之為父類)拿過來用。也就是在父類的基礎(chǔ)上設(shè)計(jì)子類,父類有的直接拿過來用,父類沒有的可以新增。通過繼承,使得類間具有共享特性,避免公用代碼的重復(fù)開發(fā),減少代碼和數(shù)據(jù)冗余。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院68.1.2OOP特點(diǎn)
MORETHENTEMPLATE多態(tài)多態(tài)性是指不同的對(duì)象收到相同的的消息時(shí),執(zhí)行不同的操作。比如,學(xué)校網(wǎng)站發(fā)布了有關(guān)開學(xué)的通知,學(xué)校里不同的人員看到這個(gè)相同的消息,所做出的的反應(yīng)是不一樣的。OOP中的多態(tài)是指由繼承而產(chǎn)生的相關(guān)的不同的類,其對(duì)象對(duì)同一消息會(huì)作出不同的響應(yīng)。每個(gè)對(duì)象對(duì)消息做什么操作,在類中都是事先規(guī)定好的。多態(tài)使程序設(shè)計(jì)更加簡(jiǎn)單。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院78.1.2OOP特點(diǎn)8.2類的定義和使用Python中定義類相當(dāng)于先設(shè)計(jì)一個(gè)對(duì)象模板,規(guī)定每個(gè)對(duì)象的屬性(數(shù)據(jù)成員),以及方法(函數(shù)成員)。
MORETHENTEMPLATE定義類的一般格式浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院98.2.1定義類
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院108.2.1定義類【例8?1】定義1個(gè)圓類(Circle),包含圓心坐標(biāo)(x,y)和半徑r屬性,并設(shè)計(jì)具有計(jì)算面積、放大縮小、移動(dòng)位置和顯示信息4個(gè)方法。
MORETHENTEMPLATE創(chuàng)建對(duì)象格式Python創(chuàng)建對(duì)象的格式非常簡(jiǎn)單:
對(duì)象名=類名(參數(shù))比如對(duì)于前面的Circle類,語句c1=Circle(7,8,9)表示創(chuàng)建創(chuàng)建一個(gè)圓心坐標(biāo)為(7,8)半徑為9的對(duì)象c1。對(duì)象屬性的訪問Python訪問對(duì)象屬性的格式比較簡(jiǎn)單:
對(duì)象名.屬性名比如在前面的例子里,可以用c1.r去訪問圓c1的半徑,但是必須要求訪問的權(quán)限才行浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院118.2.2對(duì)象的創(chuàng)建與使用
MORETHENTEMPLATE向?qū)ο蟀l(fā)送消息Python向?qū)ο蟀l(fā)送消息的格式也非常簡(jiǎn)單:
對(duì)象名.函數(shù)(參數(shù))比如對(duì)于前面創(chuàng)建的對(duì)象c1,語句c1.zoom(1)表示向?qū)ο蟀l(fā)送一條消息對(duì)對(duì)象進(jìn)行放大縮小,該對(duì)象接受到這個(gè)消息以后,調(diào)用函數(shù)zoom,將對(duì)象的半徑加1,完成放大功能。這里要特別說明的是,每當(dāng)向?qū)ο蟀l(fā)送消息調(diào)用相應(yīng)的函數(shù)時(shí),都會(huì)自動(dòng)傳遞一個(gè)self對(duì)象作為參數(shù),這個(gè)self對(duì)象就是該對(duì)象本身。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院128.2.2對(duì)象的創(chuàng)建與使用
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院138.2.2對(duì)象的創(chuàng)建與使用【例8?2】對(duì)于前面定義的圓類(Circle),創(chuàng)建兩個(gè)對(duì)象,計(jì)算面積,并調(diào)用其他的成員函數(shù)進(jìn)行測(cè)試。8.3類的成員及其訪問控制
MORETHENTEMPLATE__init__函數(shù)__init__函數(shù)是一個(gè)特殊的函數(shù),它主要用于創(chuàng)建對(duì)象時(shí)給對(duì)象初始化,它相當(dāng)于C++中的構(gòu)造函數(shù),有的Python教材也稱之為構(gòu)造函數(shù),它有如下特點(diǎn):__init__函數(shù)名是固定的,改成其它名字就不具備特殊性。帶有兩個(gè)下劃線開頭的函數(shù)是聲明該屬性為私有(有關(guān)訪問控制后面會(huì)介紹),不能在類的外部被使用或直接訪問,在創(chuàng)建對(duì)象時(shí)自動(dòng)調(diào)用。__init__函數(shù)(方法)的第一個(gè)參數(shù)必須是self(self為習(xí)慣用法,也可以用別的名字),后面的參數(shù)則可以自由定義,和定義函數(shù)沒有任何區(qū)別。類的數(shù)據(jù)成員(指實(shí)例變量,8.3.2節(jié)會(huì)介紹)在__init__函數(shù)中定義并初始化。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院158.3.1__init__函數(shù)和__del__函數(shù)
MORETHENTEMPLATE__del__函數(shù)__del__函數(shù)也是一個(gè)特殊的函數(shù),它主要用于撤銷對(duì)象時(shí)做善后清理工作,它相當(dāng)于C++中的析構(gòu)函數(shù),有的Python教材也稱之為析構(gòu)函數(shù),它有如下特點(diǎn):__del__函數(shù)名是固定的,改成其它名字就不具備特殊性。帶有兩個(gè)下劃線開頭的函數(shù)是聲明該屬性為私有(有關(guān)訪問控制后面會(huì)介紹),不能在類的外部被使用或直接訪問,在撤銷對(duì)象時(shí)自動(dòng)調(diào)用。__del__函數(shù)(方法)的第一個(gè)參數(shù)必須是self(self為習(xí)慣用法,也可以用別的名字),后面的參數(shù)則可以自由定義,和定義函數(shù)沒有任何區(qū)別。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院168.3.1__init__函數(shù)和__del__函數(shù)
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院178.3.1__init__函數(shù)和__del__函數(shù)【例8?3】給【例8-2】添加__del__函數(shù)
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院188.3.1__init__函數(shù)和__del__函數(shù)【例8?3】給【例8-2】添加__del__函數(shù)
MORETHENTEMPLATE數(shù)據(jù)成員之實(shí)例變量實(shí)例變量是在__init__函數(shù)中定義并初始化的,實(shí)例變量最大的特點(diǎn)是每個(gè)對(duì)象的實(shí)例變量值可以不同,前面定義的Circle類中,x、y、r就是實(shí)例變量。數(shù)據(jù)成員之類變量類變量是在類中函數(shù)的外部定義并初始化的,類變量的特點(diǎn)是對(duì)于所有對(duì)象,類變量的值是相同的,所以類變量通常用于表示所有對(duì)象屬性值相同的屬性,也就是共享屬性。類變量的訪問采用如下格式:
類名.屬性名浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院198.3.2數(shù)據(jù)成員及其訪問控制
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院208.3.2數(shù)據(jù)成員及其訪問控制【例8?4】修改【例8-3】,使其能方便表示同心圓對(duì)象。
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院218.3.2數(shù)據(jù)成員及其訪問控制【例8?4】修改【例8-3】,使其能方便表示同心圓對(duì)象。
MORETHENTEMPLATE數(shù)據(jù)成員之公有屬性是指對(duì)數(shù)據(jù)成員的訪問不做嚴(yán)格限制,用“對(duì)象名.變量名”可以直接訪問的。Python默認(rèn)的屬性都是公有的。數(shù)據(jù)成員之私有屬性是指數(shù)據(jù)成員名前加上"__"兩個(gè)下劃線,只能被本類的函數(shù)訪問,不能被類外部函數(shù)訪問的數(shù)據(jù)成員,即私有屬性在類外部不能以“對(duì)象名.變量名”的方式訪問。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院228.3.2數(shù)據(jù)成員及其訪問控制
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院238.3.2數(shù)據(jù)成員及其訪問控制【例8?5】修改【例8-3】,將數(shù)據(jù)成員x,y改為私有屬性。
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院248.3.2數(shù)據(jù)成員及其訪問控制【例8?5】修改【例8-3】,將數(shù)據(jù)成員x,y改為私有屬性。
MORETHENTEMPLATE函數(shù)成員之實(shí)例函數(shù)是指跟具體對(duì)象有關(guān),調(diào)用時(shí)第1個(gè)參數(shù)必須是self的函數(shù),我們前面例子中看到的函數(shù)都是實(shí)例函數(shù)函數(shù)成員之靜態(tài)函數(shù)靜態(tài)函數(shù)是指與具體對(duì)象無關(guān)的函數(shù),通常靜態(tài)函數(shù)用于訪問類變量,但不能訪問實(shí)例變量。在靜態(tài)函數(shù)中訪問類變量,要通過類名來引用。在定義靜態(tài)函數(shù)時(shí),函數(shù)頭之前要用@staticmethod進(jìn)行修飾。我們可以通過類名或?qū)ο竺L問靜態(tài)函數(shù),格式如下:
類名(對(duì)象名).靜態(tài)函數(shù)名(參數(shù))浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院258.3.3函數(shù)成員及其訪問控制
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院268.3.3函數(shù)成員及其訪問控制【例8?6】修改【例8-4】,將move函數(shù)修改為靜態(tài)函數(shù)
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院278.3.3函數(shù)成員及其訪問控制【例8?6】修改【例8-4】,將move函數(shù)修改為靜態(tài)函數(shù)
MORETHENTEMPLATE函數(shù)成員之公有屬性與數(shù)據(jù)成員的公有屬性用法相同。是指對(duì)函數(shù)成員的訪問不做嚴(yán)格限制,用“對(duì)象名.函數(shù)名”可以直接訪問的。Python默認(rèn)的的函數(shù)成員屬性都是公有的。函數(shù)成員之私有屬性與數(shù)據(jù)成員的私有屬性用法相同。是指函數(shù)成員名前加上"__"兩個(gè)下劃線,只能被本類的函數(shù)訪問,不能被類外部函數(shù)訪問的函數(shù)成員,即私有屬性在類外部不能以“對(duì)象名.函數(shù)名”的方式訪問。一般私有屬性的函數(shù)作為本類的工具函數(shù),不對(duì)外使用。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院288.3.3函數(shù)成員及其訪問控制
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院298.3.3函數(shù)成員及其訪問控制【例8?7】修改【例8-6】,將dispinfo改為私有屬性,使程序運(yùn)行仍然能顯示圓的相關(guān)信息。
MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院308.3.3函數(shù)成員及其訪問控制【例8?7】修改【例8-6】,將dispinfo改為私有屬性,使程序運(yùn)行仍然能顯示圓的相關(guān)信息。8.4學(xué)生成績(jī)處理實(shí)例1,35926778%浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院328.4學(xué)生成績(jī)處理實(shí)例【例8-8】將第7章中學(xué)生成績(jī)處理的案例,用OOP的設(shè)計(jì)方法加以實(shí)現(xiàn)
思路:設(shè)計(jì)學(xué)生類studengt,包含學(xué)號(hào)、姓名、各科成績(jī)、排名等屬性,設(shè)計(jì)初始化函數(shù)和學(xué)生信息格式化顯示函數(shù)。設(shè)計(jì)班級(jí)類oneclass,包含若干學(xué)生對(duì)象(用列表表示),同時(shí)包含各門課的最高分、最低分和平均分屬性,設(shè)計(jì)初始化函數(shù)、排名函數(shù)和成績(jī)表顯示函數(shù)。1,35926778%浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院338.4學(xué)生成績(jī)處理實(shí)例【例8-8】將第7章中學(xué)生成績(jī)處理的案例,用OOP的設(shè)計(jì)方法加以實(shí)現(xiàn)
思路:設(shè)計(jì)學(xué)生類studengt,包含學(xué)號(hào)、姓名、各科成績(jī)、排名等屬性,設(shè)計(jì)初始化函數(shù)和學(xué)生信息格式化顯示函數(shù)。設(shè)計(jì)班級(jí)類oneclass,包含若干學(xué)生對(duì)象(用列表表示),同時(shí)包含各門課的最高分、最低分和平均分屬性,設(shè)計(jì)初始化函數(shù)、排名函數(shù)和成績(jī)表顯示函數(shù)。1,35926778%浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院348.4學(xué)生成績(jī)處理實(shí)例【例8-8】將第7章中學(xué)生成績(jī)處理的案例,用OOP的設(shè)計(jì)方法加以實(shí)現(xiàn)
思路:設(shè)計(jì)學(xué)生類studengt,包含學(xué)號(hào)、姓名、各科成績(jī)、排名等屬性,設(shè)計(jì)初始化函數(shù)和學(xué)生信息格式化顯示函數(shù)。設(shè)計(jì)班級(jí)類oneclass,包含若干學(xué)生對(duì)象(用列表表示),同時(shí)包含各門課的最高分、最低分和平均分屬性,設(shè)計(jì)初始化函數(shù)、排名函數(shù)和成績(jī)表顯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《音樂巨人貝多芬》的教學(xué)反思
- 《迷彩服》的教案
- 《背影圖》的閱讀練習(xí)題及答案
- 鹵味合伙合同范本
- 半成品鋼材銷售合同范例
- 保險(xiǎn)中介合同范本
- 廠家保養(yǎng)合同范例
- 勞務(wù)合同范本安徽
- 《天宮課堂》第二課學(xué)生心得體會(huì)
- 《賣火柴的小女孩》大班教案
- 智能制造企業(yè)制造成熟度能力域打分表
- 《員工保密協(xié)議書》電子版正規(guī)范本(通用版)
- 物流配送退出申請(qǐng)書
- 【學(xué)校必備】普及精神衛(wèi)生知識(shí)-中小學(xué)“世界精神衛(wèi)生日”科普講座
- 企業(yè)安全文化建設(shè)導(dǎo)則
- 八年級(jí)語文上冊(cè)第六單元作業(yè)設(shè)計(jì) 品格與志趣
- 鐵道游擊隊(duì)測(cè)試題6.1總1文檔資料
- 電機(jī)與電氣控制技術(shù)(第2版)全套完整教學(xué)課件
- 掘進(jìn)機(jī)液壓培訓(xùn)課件
- 農(nóng)產(chǎn)品質(zhì)量安全風(fēng)險(xiǎn)防范措施
- 麻醉科臨床技術(shù)操作規(guī)范2022版
評(píng)論
0/150
提交評(píng)論