避免OOP的形式,POP的思想_PHP

來源:互聯網
上載者:User
關鍵字 思想 形式 避免 price 價格 num
避免OOP的形式,POP的思想
好久沒發技術性文章了,今天在21PHP裡看到有位兄弟發了這貼子,轉了過來.對加強OOP的學習有些用

----------------------------------------------------------
避免OOP的形式,POP的思想
隨著PHP對OOP(物件導向編程)支援的增強以及程式設計思想的發展,越來越多的PHP程式員走進了OOP的世界.通過簡單的學習,大多數程式員都能

快速的掌握OOP編程的基本技能.程式員們所寫的代碼裡class,new等字串也越來越多.但是作為程式員的你,是否陷入了一種OO形式,PO思想的

編程陷阱呢?
作為POP時代的程式員,為了實現計算一件房子的所有門的價格,他們會寫這樣一個函數.
代碼:
/******************************************
函數:priceOfHouseDoor($num,$price)
功能:計算所有的門的價格總和
參數:$num 門的數量,$price 每扇門的價格
備忘:surfchen @ http://www.yubeinet.com/
******************************************/
function priceHouseDoor($num,$price)
{
return $num*$price;
}
echo priceHouseDoor(2,5);//輸出價格
或者乾脆來個更過程的:
代碼:
$doors=2;//門數量
$price=5;//每扇門的價格
echo $doors*$price;//輸出價格
這是典型的POP.當瞭解了OOP後,很多人可能會改變實現這個功能的代碼.或許,程式員們會這麼寫:
代碼:
class house
{
/******************************************
函數:getDoorPrice($num,$price)
功能:計算所有的門的價格總和
參數:$num 門的數量,$price 每扇門的價格
備忘:surfchen @ http://www.yubeinet.com/
******************************************/
function getDoorPrice($num,$price)
{
return $num*$price;
}
}
$house=new house;
echo $house->getDoorPrice(2,5);//輸出價格
我們一下子就看出來,這段代碼用到了OOP的代表 -- 類和執行個體化.那麼,這就是物件導向編程了嗎?
我再仔細一看,發現這個類其實只不過是上面的priceOfHouseDoor($num,$price)函數的物件導向形式.

嗯,現在我們先探討一下到底什麼才叫物件導向編程.我的理解是:物件導向編程有兩個核心內容.一是類,二是執行個體.類是對一類事物的抽象,而實

例是這一類事物中的個體.而執行個體的屬性(值)和方法(函數),則分別是這個個體的具體內容和動作.
我們再來看看上面的這個house類.它有一個方法,getDoorPrice($num,$price),引入了兩個參數.一個是房子的門的數量,一個是房子門價.我們

發現,當我們使用這個方法時,這兩個值是臨時構建的,並沒有與房子形成任何的聯絡.在實際生活中,一個房子裡的門與房子無任何聯絡,這是不

可以理解的...正如我們所知道的,OOP其實是我們真實世界的一個縮影.所以,OOP中的房子和房子的門無任何聯絡,也是不可理解的,是非OO的思

維.
那麼,我們應該如何使用真正的OO來實現以上功能呢?請看以下代碼:
代碼:
class house
{
var $doors;//門的數量
var $pricePerDoors;//每扇門的價格
function setNumOfDoors($num){$this->doors=$num;}//設定門數量
function setPricePerDoor($price){$this->pricePerDoors=$price;}//設定每扇門的價格
/*************
*獲得門的價格 *
\*************/
function getDoorPrice()
{
return ($this->doors)*($this->pricePerDoors);
}
}
$house=new house;
$house->setNumOfDoors(2);//設定門數量
$house->setPricePerDoor(5);//設定每扇門的價格
echo $house->getDoorPrice();//輸出
我們很明顯地看到,以上代碼的門的數量和價格房子已經結合在了一起.這才是真正的物件導向.
你不覺得嗎?^_^
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.