1.物件導向的概念
物件導向程式設計(object oriented programming,oop,物件導向程式設計)是一種計算機程式設計架構,oop 的一條基本原則是電腦程式是由單個能夠起到子程式作用的單元或物件組合而成,oop 達到了軟體工程的三個目標:重用性、靈活性和擴充套件性。為了實現整體運算,每個物件都能夠接收資訊、處理資料和向其它物件傳送資訊。物件導向一直是軟體開發領域內比較熱門的話題,首先,物件導向符合人類看待事物的一般規律。其次,採用物件導向方法可以使系統各部分各司其職、各盡所能。為程式設計人員敞開了一扇大門,使其程式設計的**更簡潔、更易於維護,並且具有更強的可重用性。有人說php 不是乙個真正的物件導向的語言,
這是事實。php 是乙個混合型語言,你可以使用oop,也可以使用傳統的過程化程式設計。然而,對於大型專案,你可能需要在php 中使用純的oop 去宣告類,而且在你的專案裡只用物件
和類。這個概念我先不多說了,因為有很多朋友遠離物件導向程式設計的主要原因就是一接觸物件導向概念的時候就理解不上去,所以就不想去學下去了。等讀者看完整篇內容後再去把概
念搞明白吧。
2.什麼是類,什麼是物件,類和物件之間的關係
類的概念:類是具有相同屬性和服務的一組物件的集合。它為屬於該類的所有物件提供了統一的抽象描述,其內部包括屬性和服務兩個主要部分。在物件導向的程式語言中,類是
乙個獨立的程式單位,它應該有乙個類名幷包括屬性說明和服務說明兩個主要部分。
物件的概念:物件是系統中用來描述客觀事物的乙個實體,它是構成系統的乙個基本單位。乙個物件由一組屬性和對這組屬vtdfewjdg性進行操作的一組服務組成。從更抽象的角度來說,對
象是問題域或實現域中某些事物的乙個抽象,它反映該事物在系統中需要儲存的資訊和發揮的作用;它是一組屬性和有權對這些屬性進行操程式設計客棧作的一組服務的封裝體。客觀世界是由物件
和物件之間的聯絡組成的。
類與物件的關係就如模具和鑄件的關係,類的例項化結果就是物件,而對一類物件的抽象就是類。類描述了一組有相同特性(屬性)和相同行為(方法)的物件。
上面大概就是它們的定義吧,也許你是剛接觸物件導向的朋友,不要被概念的東西搞暈了,給你舉個例子吧,如果你去中關村想買幾台組裝的pc 機,到了那裡你第一步要幹什麼,
是不是裝機的工程師和你坐在一起,按你提供的資訊和你一起完成乙個裝機的配置單呀,這個配置單就可以想象成是類,它就是一張紙,但是它上面記錄了你要買的pc 機的資訊,如
果用這個配置單買10 臺機器,那麼這10 臺機子,都是按這個配置單組成的,所以說這10 臺機子是乙個型別的,也可以說是一類的。那麼什麼是物件呢,類的例項化結果就是物件,用這
個配置單配置出來(例項化出來)的機子就是物件,是我們可以操作的實體,10 臺機子,10個物件。每台機子都是獨立的,只能說明他們是同一類的,對其中乙個機做任何動作都不會
影響其它9 臺機器,但是我對類修改,也就是在這個配置單上加乙個或少乙個配件,那麼裝出來的9 個機子都改變了,這是類和物件的關係(類的例項化結果就是物件)。
3.什麼是物件導向程式設計呢?
就不說他的概念,如果你想建立乙個電腦教室,首先要有乙個房間,房間裡面要有n 臺電腦,有n 張桌子,n 把椅子,白板,投影機等等,這些是什麼,剛才咱們說了,這就是物件,能看到的乙個個的實體,可以說這個電腦教室的單位就是這乙個個的實體物件,它們共
同組成了這個電腦教室,那麼我們是做程式,這和物件導向有什麼關係呢?開發乙個系統程式和建乙個電腦教室類似,你把每個獨立的功能模組抽象成類,形成物件,由多個物件組成
這個系統,這些物件之間都能夠接收資訊、處理資料和向其它物件傳送資訊等等相互作用。
4.如何抽象出乙個類?
上面已經介紹過了,物件導向程式的單位就是物件,但物件又是通過類的例項化出來的,所以我們首先要做的就是如何來宣告類,做出來乙個類很容易,只要掌握基本的程式語法定
義規則就可以做的出來,那麼難點在那裡呢?乙個專案要用到多少個類,用多少個物件,在那要定義類,定義乙個什麼樣的類,這個類例項化出多少個物件,vtdfewjdg類裡面有多少個屬性,有
多少個方法等等,這就需要讀者通過在實際的開發中就實際問題分析設計和總結了。
類的定義:
class 類名
使用乙個關鍵字class 和後面加上乙個你想要的類名以及加上一對大括號,這樣乙個類的結構就定義出來了,只要在裡面寫**就可以了,但是裡面寫什麼?能寫什麼?怎樣寫才是
乙個完整的類呢?上面講過來,使用類是為了讓它例項出物件來給我們用,這就要知道你想要的是什麼樣的物件了,像上面我們講的乙個裝機配置單上寫什麼,你裝出來的機子就有什
麼。比如說,乙個人就是乙個物件,你怎麼把乙個你看好的人推薦給你們領導呢?當然是越詳細越好了:
首先,你會介紹這個人姓名、性別、年齡、身高、體重、**、家庭住址等等。
然後,你要介紹這個人能做什麼,可以開車,會說英語,可以使用電腦等等。只要你介紹多一點,別人對這個人就多一點了解,這就是我們對乙個人的描述,現在我
們總結一下,所有的物件我們用類去描述都是類似的,從上面人的描述可以看到,做出乙個類來,從定義的角度分兩部分,第一是從靜態上描述,第二是從動態上描述,靜態上的描述
就是我們所說的屬性,像上面我們看到的,人的姓名、性別、年齡、身高、體重、**、家庭住址等等。
動態上也就是人的這個物件的功能,比如這個人可以開車,程式設計客棧會說英語,可以使用電腦等等,抽象成程式時,我們把動態的寫成函式或者說是方法,函式和方法是一樣的。所以,所有類
都是從屬性和方法這兩方面去寫,屬性又叫做這個類的成員屬性,方法叫做這個類的成員方法。
class 人
屬性:
通過在類定義中使用關鍵字"var"來宣告變數,即建立了類的屬性,雖然在宣告成員屬性的時候可以給定初始值,但是在宣告類的時候給成員屬性初始值是沒有必要的,比如說要是把
人的姓名賦上「張三」,那麼用這個類例項出幾十個人,這幾十個人都叫張三了,所以沒有必
要,我們在例項出物件後給成員屬性初始值就可以了。
如:var $somevar;
方法(成員函式):
通過在類定義中宣告函式,即建立了類的方法。
如:function somefun(引數列表)
**片段
複製** **如下:
<?php
class person function run()
} ?>
上面就是乙個類的宣告,從屬性和方法上宣告出來的乙個類,但是成員屬性最好在宣告
的時候不要給初始的值,因為我們做的人這個類是乙個描述資訊,將來用它例項化物件,比
如例項化出來10 個人物件,那麼這10 個人,每乙個人的名字、性別、年齡都是不一樣的,
所以最好不要在這個地方給成員屬性賦初值,而是對每個物件分別賦值的。
用同樣的辦法可以做出你想要的類了,只要你能用屬性和方法能描述出來的實體都可以
定義成類,去例項化物件。
為了加強你對類的理解,我們再做乙個類,做乙個形狀的類,形狀的範圍廣了點,我們
就做個矩形吧,先分析一下,想一想從兩方面分析,矩形的屬性都有什麼?矩形的功能都有
什麼?
複製** **如下:
class 矩形
**片段
複製** **如下:
<?php
class rect function mianji()
} ?>
如果用這個類來建立出多個矩形物件,每個矩形物件都有自己的長和寬,都可以求出自
己的周長和面積了。
類的宣告我們就到這裡吧!!
本文標題: php物件導向全攻略 (一) 物件導向基礎知識
本文位址: /wangluo/php/51680.html
php物件導向全攻略 (九)訪問型別
13.訪問型別 型別的訪問修飾符允許開發人員對類成員的訪問進行限制,這是php5 的新特性,但卻 是oop 語言的乙個好的特性。而且大多數oop 語言都已支援此特性。php5 支援如下3 種訪 問修飾符 public 公有的 預設的 private 私有的 和protected 受保護的 三種。pu...
php物件導向全攻略 (十二) 抽象方法和抽象類
抽象方法和抽象類 在oop 語言中,乙個類可以有乙個或多個子類,而每個類都有至少乙個公有方法做為 外部 訪問其的介面。而抽象方法就是為www.cppcns.com了方便繼承而引入的,我程式設計客棧們先來看一下抽象類和 抽象方法的定義再說明它的用途。什麼是抽象方法?我們在類裡面定義的沒有方法體的方法就...
設計模式 物件導向一 物件導向
什麼是物件導向程式設計?物件導向程式設計是一種程式設計正規化和程式設計風格。它以類或物件作為組織 的基本單元,並將封裝 抽象 繼承 多型四個特性,作為 設計和實現的基石 什麼是物件導向程式設計語言?物件導向程式設計語言是支援類或物件的語法機制,並有現成的語法機制,能方便的實現物件導向程式設計四大特性...