|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
通过这段时间的学习实践,对软件开发有了更多新的认识,不在局限于之前的片面性。当然,现在所学到的东西其实并不多,离当一个真正的程序员,还有很大的差距。 防止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();//输入
咱们很分明地看到,以上代码的门的数目和价钱房子已联合在了一同.这才是真实的面向对象.
你不感觉吗?^_^
多个成员之间重复做相同的工作,很容易因为交流沟通的时候没有进行一致性的文档要求而出现不明错误,严重影响开发进度,导致在预定时间内无法完成该项目或者完成的项目跟原先计划所要实现的项目功能不符合。 |
|