




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第7章PHP面向?qū)ο蟪绦蛟O(shè)計7.1面向?qū)ο蟾攀龊瘮?shù)的概念面向?qū)ο蟪绦蛟O(shè)計達(dá)到了軟件工程的三個目標(biāo):重用性、靈活性和擴(kuò)展性,使其編程的代碼更簡潔、更易于維護(hù),并且具有更強的可重用性。PHP與C#、Java一樣,都可以采用面向?qū)ο蟮姆绞皆O(shè)計程序。但PHP并不是一個真正的面向?qū)ο蟮恼Z言,而是一個混合型語言,既可以使用面向?qū)ο笕ピO(shè)計程序,也可以使用傳統(tǒng)的過程化進(jìn)行編程。PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
謝謝!第7章PHP面向?qū)ο蟪绦蛟O(shè)計7.2類和對象1.類和對象的關(guān)系2.類的聲明3.類的成員4.對象的實例化5.對象中成員的訪問6.特殊的對象引用“$this”本節(jié)內(nèi)容1.類和對象的關(guān)系類與對象之間的關(guān)系就如同模具與鑄件之間的關(guān)系。類的實例化結(jié)果就是對象,而對象的抽象就是類。類描述了一組具有相同特性(屬性)和相同行為(方法)的對象。在程序設(shè)計時,首先要抽象類,然后再用該類去創(chuàng)建對象,在程序中直接使用的是對象而不是類。1.1什么是對象在客觀世界里,所有的事物都是由對象和對象之間聯(lián)系組成的。對象是系統(tǒng)中用來描述客觀事物的一個實體,它是構(gòu)成系統(tǒng)的一個基本單位,一個對象由一組屬性和有權(quán)對這些屬性進(jìn)行操作的一組服務(wù)的封裝體。例如,一輛汽車、一個人、一本書,乃至一種語言、一個圖形等都可以作為一個對象。1.2什么是類類是創(chuàng)建對象的模板,是對一組客觀對象的抽象,將該組對象所具有的共同特征集中起來,以說明該組對象的性質(zhì)和能力。在面向?qū)ο蟮木幊陶Z言中,類是一個獨立的程序單位,是具有相同屬性和方法的一組對象的集合。它為屬于該類的所有對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括成員屬性和成員方法兩個主要部分。1.3類和對象的關(guān)系在程序設(shè)計中,類的實例化結(jié)果就是對象,可以實例化多個對象,每一個對象都具有該類中定義的內(nèi)容特性,但它們是相互獨立的,對其中任何一個對象的修改,都不會影響到其他對象。2.類的聲明類的聲明比較簡單,使用關(guān)鍵字class聲明即可。類的聲明的語法格式如下:
[類修飾符]class類名
{ [類的成員]
}2.類的聲明示例7-1:聲明一個Person類。3.類的成員類的成員由成員屬性和成員方法構(gòu)成。3.1成員屬性在類中直接聲明變量就稱為成員屬性,可以在類中聲明多個變量,即對象中有多個成員屬性,每個變量都存儲對象不同的屬性信息。在類中聲明成員屬性時,變量前面一定要使用public、private、protected、static等關(guān)鍵字的修飾來控制成員屬性的一些權(quán)限。3.1成員屬性示例7-2:聲明一個Person類,在類中聲明三個成員屬性。3.2成員方法在對象中需要聲明一些可以操作本對象成員屬性的方法,來實現(xiàn)對象的一些行為。在類中直接聲明的函數(shù)就稱為成員方法。可以在類中聲明多個函數(shù),對象中就有多個成員方法。成員方法的聲明和函數(shù)的聲明完全一樣,不過可以使用public、private、protected、static等關(guān)鍵字的修飾來控制成員方法的一些權(quán)限。3.2成員方法示例7-3:聲明一個Person類,在類中聲明兩個成員方法。4.對象的實例化因為在程序中不是直接使用類,使用的是通過類創(chuàng)建的對象,所以在使用對象之前,首先要通過聲明的類實例化出一個或多個對象。使用new關(guān)鍵字可以將類實例化成對象。對象的實例化的語法格式如下: $變量名=new類名稱([參數(shù)列表]);4.對象的實例化示例7-4:聲明一個Person類,并實例化出兩個對象。5.對象中成員的訪問對象中成員的訪問就是對對象中成員屬性的訪問和成員方法的訪問,而對成員屬性的訪問則又包括賦值操作和獲取成員屬性值的操作。訪問對象中的成員是使用一個特殊的運算符號“->”、通過對象的引用來訪問的。訪問對象中成員的語法格式如下:
$引用名=new類名稱([參數(shù)列表]);
$引用名->成員屬性=值;
echo$引用名->成員屬性;
$引用名->成員方法;5.對象中成員的訪問示例7-5:聲明一個Person類,單獨放置在一個“./7-5.class/Person.class.php”文件中。然后再通過Person類實例化出兩個對象,分別訪問這兩個對象中的成員屬性和成員方法。6.特殊的對象引用“$this”訪問對象中的成員必須通過對象的引用來實現(xiàn)。對象一旦被創(chuàng)建,在對象中的每個成員方法里面都會存在一個特殊的對象引用“$this”,成員方法屬于哪個對象,$this引用就代表哪個對象,專門用來完成對象內(nèi)部成員之間的訪問。6.特殊的對象引用“$this”示例7-6:聲明一個Person類,單獨放置在一個“./7-6.class/Person.class.php”文件中。在其成員方法中使用$this引用訪問自己對象內(nèi)部的成員屬性。PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
謝謝!第7章PHP面向?qū)ο蟪绦蛟O(shè)計7.3構(gòu)造方法和析構(gòu)方法1.構(gòu)造方法2.析構(gòu)方法本節(jié)內(nèi)容構(gòu)造方法和析構(gòu)方法構(gòu)造方法和析構(gòu)方法是對象中兩個特殊的方法,它們都與對象的生命周期有關(guān)。構(gòu)造方法是對象創(chuàng)建完成后第一個被對象自動調(diào)用的方法,而析構(gòu)方法是對象在銷毀之前最后一個被對象自動調(diào)用的方法。通常使用構(gòu)造方法完成一些對象的初始化工作,使用析構(gòu)方法完成后一些對象在銷毀前的清理工作。1.構(gòu)造方法在每個類中都有一個稱為構(gòu)造方法的特殊成員方法,可以進(jìn)行顯式地聲明,也可以不進(jìn)行顯式地聲明。如果沒有顯式地聲明構(gòu)造方法,則類中都會默認(rèn)存在一個沒有參數(shù)列表并且內(nèi)容為空的構(gòu)造方法。如果顯式地聲明構(gòu)造方法,則構(gòu)造方法的方法名稱必須是以兩個下劃線開始的“__construct()”。其語法格式如下:
function__construct([參數(shù)列表]){
//方法體,通常用來對成員屬性進(jìn)行初始化賦值 }1.構(gòu)造方法在PHP中,同一個類中只能聲明一個構(gòu)造方法。當(dāng)創(chuàng)建一個對象時,構(gòu)造方法就會被自動調(diào)用一次,即每次使用關(guān)鍵字new來實例化對象時都會自動調(diào)用構(gòu)造方法,不能主動通過對象的引用調(diào)用構(gòu)造方法。1.構(gòu)造方法示例7-7:聲明一個Person類,單獨放置在一個“./7-7.class/Person.class.php”文件中。添加一個構(gòu)造方法,用來在創(chuàng)建對象時為對象中的成員屬性賦予初值(構(gòu)造方法使用了默認(rèn)參數(shù))。2.析構(gòu)方法與構(gòu)造方法相對應(yīng)的就是析構(gòu)方法,PHP將在對象被銷毀前自動調(diào)用這個方法。析構(gòu)方法允許在銷毀一個對象之前執(zhí)行一些特定操作,例如關(guān)閉文件、釋放結(jié)果集等。析構(gòu)方法的聲明格式與構(gòu)造方法相似,也是以兩個下劃線開頭的方法名“__destruct()”,而且不能帶有任何參數(shù)。其語法格式如下:
function__destruct(){
//方法體,通常用來完成一些在對象銷毀前的清理工作 }2.析構(gòu)方法在PHP中,析構(gòu)方法并不是很常用,它是屬于類中可選的一部分,只有需要時才在類中聲明。2.析構(gòu)方法示例7-8:聲明一個Person類,單獨放置在一個“./7-8.class/Person.class.php”文件中。除了構(gòu)造方法以外,再添加一個析構(gòu)方法,用來在對象銷毀時輸出一條語句。PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
謝謝!第7章PHP面向?qū)ο蟪绦蛟O(shè)計7.4封裝性1.設(shè)置私有成員2.私有成員的訪問本節(jié)內(nèi)容封裝性封裝性是面向?qū)ο缶幊讨械娜筇匦灾唬庋b就是把對象中的成員屬性和成員方法加上訪問修飾符,使其盡可能隱藏對象的內(nèi)部細(xì)節(jié),以達(dá)到對成員的訪問控制(切記不是拒絕訪問)。PHP支持如下三種訪問修飾符:public:公有的、默認(rèn)修飾符private:私有的protected:受保護(hù)的1.設(shè)置私有成員只要在聲明成員屬性或成員方法時,使用private關(guān)鍵字修飾就是實現(xiàn)了對成員的私有封裝。封裝后的成員在對象的外部不能被訪問,但在對象內(nèi)部的成員方法中可以使用$this引用訪問到被封裝的成員屬性和被封裝的成員方法。1.設(shè)置私有成員示例7-9:聲明一個Person類,單獨放置在一個“./7-9.class/Person.class.php”文件中。使用private關(guān)鍵字對該類中的成員屬性和部分成員方法進(jìn)行封裝。2.私有成員的訪問對象中的成員屬性一旦被private關(guān)鍵字封裝成私有成員以后,就只能在對象內(nèi)部的成員方法中使用,不能被對象外部直接賦值,也不能在對象外部直接獲取私有屬性的值。如果不讓用戶在對象的外部設(shè)置私有屬性的值,但可以獲取私有屬性的值;或者允許用戶對私有屬性賦值,但需要限制一些賦值的條件,解決的方法是使用兩個預(yù)定義的方法“__set()”和“__get()”。2.1魔術(shù)方法__set()使用魔術(shù)方法“__set()”可以控制在對象外部為私有的成員屬性賦值,但不能獲取私有成員屬性的值??梢栽赺_set()方法中根據(jù)不同的屬性,設(shè)置一些條件來限制將非法的值賦給私有屬性。在類中聲明的格式如下:
function__set(stringname,mixedvalue){ //方法體
}2.1魔術(shù)方法__set()示例7-10:聲明一個Person類,單獨放置在一個“./7-10.class/Person.class.php”文件中。使用魔術(shù)方法__set()實現(xiàn)對私有屬性的賦值。2.2魔術(shù)方法__get()使用魔術(shù)方法“__get()”可以控制在對象外部獲取私有成員屬性的值,并且可以在__get()方法中根據(jù)不同的屬性,設(shè)置一些條件來限制對私有屬性的非法取值操作。在類中聲明的格式如下: function__get(stringname){ //方法體
}2.2魔術(shù)方法__get()示例7-11:聲明一個Person類,單獨放置在一個“./7-11.class/Person.class.php”文件中。使用魔術(shù)方法__get()實現(xiàn)對私有屬性的取值。PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
謝謝!第7章PHP面向?qū)ο蟪绦蛟O(shè)計7.5繼承性1.類繼承的定義2.訪問類型的控制3.重載父類中的方法本節(jié)內(nèi)容繼承性繼承性也是面向?qū)ο蟪绦蛟O(shè)計中的重要特性之一,在面向?qū)ο蟮念I(lǐng)域有著極其重要的作用。PHP支持如下三種訪問修飾符:public:公有的、默認(rèn)修飾符private:私有的protected:受保護(hù)的1.類繼承的定義繼承的概念是指建立一個新的派生類,從一個先前定義的類中繼承其屬性和方法,而且可以重新定義或新增類的成員。繼承就是對已經(jīng)存在的類進(jìn)行擴(kuò)充、完善、創(chuàng)建新類的過程。我們把被繼承的類稱為基類,通過繼承產(chǎn)生的類稱為派生類(又稱為父類和子類)。PHP只支持單繼承,不允許多重繼承。一個子類只能有一個父類,不允許一個類直接繼承多個類,但一個類可以被多個類繼承。PHP可以有多層繼承,即一個類可以繼承某一個類的子類。1.類繼承的定義在PHP中,實現(xiàn)繼承的方式就是使用“extends”關(guān)鍵字定義派生類。格式如下:
[類修飾符]class子類名extends父類名{ [新增的類成員]
}1.類繼承的定義示例7-12:聲明一個Person類,單獨放置在一個“./7-12.class/Person.class.php”文件中;再聲明一個繼承于Person類的子類Student,也單獨放置在一個“./7-12.class/Student.class.php”文件中。然后通過Student類實例化出一個對象,并訪問這個對象中的成員屬性和成員方法。2.訪問類型的控制訪問類型的控制是指通過使用修飾符對類中成員進(jìn)行修飾后、進(jìn)而達(dá)到訪問限制的目的。PHP支持如下三種訪問修飾符:public(共有的、默認(rèn)的)、private(私有的)、protected(受保護(hù)的)。它們的作用域及其區(qū)別如下表所示。2.1公有的訪問修飾符public使用public關(guān)鍵字修飾的成員,本類以及該類的子類中的成員都可以對它進(jìn)行訪問,所有的外部成員也能對它進(jìn)行訪問。如果類的成員沒有指定成員訪問修飾符,則被視為public。2.2私有的訪問修飾符private使用private關(guān)鍵字修飾的成員,本類中的成員都可以對它進(jìn)行訪問,但該類的子類中的成員、以及所有的外部成員不能對它進(jìn)行訪問。2.2私有的訪問修飾符private示例7-13:聲明一個Person類,單獨放置在一個“./7-13.class/Person.class.php”文件中;再聲明一個繼承于Person類的子類Student,也單獨放置在一個“./7-13.class/Student.class.php”文件中。然后通過Student類實例化出一個對象,并訪問這個對象中的私有成員。2.3保護(hù)的訪問修飾符protected使用protected關(guān)鍵字修飾的成員,本類以及該類的子類中的成員都可以對它進(jìn)行訪問,但所有的外部成員不能對它進(jìn)行訪問。2.3保護(hù)的訪問修飾符protected示例7-14:聲明一個Person類,單獨放置在一個“./7-14.class/Person.class.php”文件中;再聲明一個繼承于Person類的子類Student,也單獨放置在一個“./7-14.class/Student.class.php”文件中。然后通過Student類實例化出一個對象,并訪問這個對象中的受保護(hù)成員。3.重載父類中的方法在子類中重寫父類中的方法在子類中訪問父類中被覆蓋的方法3.1在子類中重寫父類中的方法在PHP中不能定義重名的函數(shù),也不能在同一個類中定義重名的方法,所以PHP沒有方法重載。在子類中可以定義與父類中同名的方法,意味著在子類中可以把從父類中繼承過來的方法重寫,即在子類中重載父類中的方法。3.1在子類中重寫父類中的方法示例7-15:聲明一個Person類,單獨放置在一個“./7-15.class/Person.class.php”文件中;再聲明一個繼承于Person類的子類Student,在子類中重寫父類中的方法,也單獨放置在一個“./7-15.class/Student.class.php”文件中。然后通過Student類實例化出一個對象,并訪問這個對象中的重寫的方法。3.1在子類中重寫父類中的方法說明:在子類覆蓋父類的方法時一定要注意,在子類中重寫的方法的訪問權(quán)限一定不能低于父類被覆蓋的方法的訪問權(quán)限。3.2在子類中訪問父類中被覆蓋的方法在PHP中,在子類的方法中可以繼續(xù)使用從父類中繼承過來并被覆蓋的方法,調(diào)用的格式如下:調(diào)用父類中被覆蓋的析構(gòu)方法:parent::__construct();調(diào)用父類中被覆蓋的成員方法:parent::fun();3.2在子類中訪問父類中被覆蓋的方法示例7-16:聲明一個Person類,單獨放置在一個“./7-16.class/Person.class.php”文件中;再聲明一個繼承于Person類的子類Student,在子類中訪問父類中被覆蓋的方法,也單獨放置在一個“./7-16.class/Student.class.php”文件中。然后通過Student類實例化出一個對象,并訪問這個對象中的重寫的方法。PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
謝謝!第7章PHP面向?qū)ο蟪绦蛟O(shè)計7.6抽象類與接口1.抽象類2.接口本節(jié)內(nèi)容抽象類與接口抽象類和接口類似,都是一種比較特殊的類。抽象類是一種特殊的類,而接口是一種特殊的抽象類。他們通常配合面向?qū)ο蟮亩鄳B(tài)性一起使用。1.抽象類抽象類是指沒有完整實現(xiàn)的類,其只能供派生類繼承,不能用來創(chuàng)建實例。通常使用抽象類來描述一個類層次的總體框架,就是將抽象類作為子類重載的模版使用,定義抽象類就相當(dāng)于定義了一種規(guī)范,這種規(guī)范要求子類去遵守。抽象類使用abstract關(guān)鍵詞來修飾,并在類中定義抽象方法。抽象方法就是沒有方法體的方法,在聲明抽象方法時,也要使用abstract關(guān)鍵字來修飾。1.抽象類抽象類的聲明的語法格式如下:
abstractclass類名{ abstractfunctionfun1(); abstractfunctionfun2();
……
}1.抽象類示例7-17:聲明一個抽象類Person,定義兩個抽象方法,單獨放置在一個“./7-17.class/Person.class.php”文件中;再聲明一個繼承于Person類的子類Chineses,在Chineses類中實現(xiàn)Person類中的抽象方法,也單獨放置在一個“./7-17.class/Chineses.class.php”文件中;再聲明一個繼承于Person類的子類Americans,在Americans類中實現(xiàn)Person類中的抽象方法,也單獨放置在一個“./7-17.class/Americans.class.php”文件中。然后通過Chineses類和Americans類分別實例化出兩個對象,并訪問這兩個對象中的方法。2.接口接口是一種特殊的抽象類,如果抽象類中的所有方法都是抽象方法,那么我們就可以使用另外一種聲明方式——使用“接口”技術(shù)。接口中聲明的方法必須都是抽象方法,而且不能在接口中聲明變量,可以使用const關(guān)鍵字聲明為常量的成員屬性,接口中的所有成員都必須具有public的訪問權(quán)限。接口和抽象類一樣也不能實例化對象,它是一種更嚴(yán)格的規(guī)范,也需要通過子類來實現(xiàn)。一個類只能有一個父類,但是一個類可以實現(xiàn)多個接口。2.1接口的定義接口使用interface關(guān)鍵詞來修飾,接口的聲明的語法格式如下:
interface接口名稱{ //常量成員 //抽象方法
}2.1接口的定義聲明接口的示例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程造價全過程跟蹤審計咨詢合同范本
- 冷庫服務(wù)安裝合同范本
- 企業(yè)購買電腦合同范本
- 廠長和下屬分房合同范本
- 中美服裝合同范本
- 合作舉辦演出合同范本
- 債務(wù)繼承合同范本
- 叉車以租代售合同范本
- 單人房間 出租合同范本
- 名額買賣合同范例
- 《論教育》主要篇目課件
- 外籍工作人員聘用合同范本
- 大學(xué)生就業(yè)指導(dǎo)教學(xué)-大學(xué)生就業(yè)形勢與政策
- 中華人民共和國學(xué)前教育法
- 2020年全國中學(xué)生生物學(xué)競賽聯(lián)賽試題真題(含答案解析)
- 足浴技師與店內(nèi)禁止黃賭毒協(xié)議書范文
- 鐵路專業(yè)基礎(chǔ)知識考試題及答案
- 車路協(xié)同路側(cè)設(shè)備通信終端(RSU)測試技術(shù)要求(征求意見稿)
- 租電合作合同協(xié)議書范本
- TCAICC 001-2024 張家界莓茶質(zhì)量等級評價
- 冷鏈鄉(xiāng)村物流相關(guān)行業(yè)公司成立方案及可行性研究報告
評論
0/150
提交評論