欢迎光临
我们一直在努力

避免OOP的形式,POP的思想-PHP教程,PHP应用

建站超值云服务器,限时71元/月

避免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();//输出

我们很明显地看到,以上代码的门的数量和价格房子已经结合在了一起.这才是真正的面向对象.

你不觉得吗?^_^

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 避免OOP的形式,POP的思想-PHP教程,PHP应用
分享到: 更多 (0)

相关推荐

  • 暂无文章