注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
为什么要使用正反解析域名?
Worlclient在IIS下正确的目录权限
如何在HP-UX 10.20系统中正确地配
Win Vista RC1上正确安装iTunes7
如何设定与维持准确的电脑时钟
正确使用内存
修改XPMenu让ToolButton在Down=T
正确使用指针
使用正则表达式进行xml数据验证
如何正确理解PHP的错误信息
您现在的位置: 顶尖设计 >> IT学院 >> 编程开发 >> PHP >> 文章正文
用正确的小汽车对象学习和熟悉类的概念
作者:shuke  来源:PHP蓝皮书  点击:  更新:2006-12-19
简介:
很多书讲到类总喜欢拿小汽车来做例子,但是有些例子实在是又臭又烂误人子弟,骗人钱财,毁人前程,弱智低级到瞎编一个什么 set_color()函数来教人。实在是白白糟踏了好东西。今天在phpx.com又看到一个受害者,忍不住花了两个小时写了这个教程。


闲话少说,我们来正经的,我们的小车可不是随便让人图图颜色就完了(只能图颜色的是废车)。我们的这个小车不但能够到处乱跑,而且装备了高级GPS全球定位系统,油表,里程表。由于使用了面向对象的技术,驾驭这样的一部小汽车一点都不难。

举例子首先要提供一些背景材料。我们有一辆小汽车,可以在一个拥有xy坐标的地图上按照东南西北方向任意的行驶,你可以设定小车行驶的方向和距离,小车会向你汇报它的坐标位置。

其实学习类应该和我们学习其它事物一样,从学习使用开始,然后再学习他的原理。所以我们先来熟悉一下如何正确驾驶这样的一个小汽车:

<?php
$startPoint
= & new Position(3,9); //初始一个出发点坐标x=3,y=9

$myCar = & new Car(500,$startPoint); //我得到一个新的小车,新车初始燃油 500 升,出发地点$startPoint。

$myCar->setHeading('s'); //给小车设定方向 s:南方 n:北方 w:西方 e:东方。

if($myCar->run(100)) //然后让小车跑100公里,如果顺利完成任务显示燃油量。如果半途而废,我们显示警报信息。
{
    print(
'<br><b>小车一切正常,目前还有燃油:'.$myCar->getGas().'</b>');//获得燃油数
}
else
{
    print(
'<br><b>小车出问题了: '.$myCar->getWarning().'</b>');//显示警报信息
}

$myPosition=$myCar->getPosition();//获得小车当前的位置

print('<br>我的小车现在<br> X:'.$myPosition->getX().'Y:'.$myPosition->getY());//显示小车的坐标位置
?>

先给自己制造一个小汽车,并且给他装备上一个定位对象 Position。 然后设定方向, 然后让小车奔跑。 最后检查并输出小车的方位。 复杂么?很难理解吗? 虽然这里我们用到了两个对象(类):CarPosition 但是我相信即使是初学者也不会觉得上面的代码很困难。

我们学会如何开车了以后,再来仔细看一看这个小车对象是怎样工作的。定义一个对象其实很简单只需要 用一个关键字class 和一对{}就可以了,所以我们这样定义这两个对象:

class Car {}

class Position{}

当然,仅仅这样的两个类什么也做不了,我们还需要给他们增加一些功能,先从小汽车开始,我们需要能够给小车设定方向并且让小车奔跑所以我们增加两个方法,也就是2个函数只不过这两个函数包含在小车对象内只有通过小车对象才可以使用。
  • setHeading()
  • run()
class Car

{

	function setHeading($direction)

	{



	}



	function run($km)

	{



	}

}

特别提示:设计一个良好的类的窍门是从如何使用它下手,也就是说先考虑这个对象应当有哪些方法,而不是先确定它有哪些属性。
为了更好的了解小车的状况我们还需要这些方法:
  • getGas() 获得小车当前的燃油数
  • getPosition() 获得小车当前的位置
  • getWarning() 警报信息

为了完成这些功能我们的小车还需要自己的油表,警报消息,和定位仪。我们把这些也添加到 Car 类中,同时我们还给这个类增加了一个初始化的函数 这个函数名字和类的名字一样,这样就有了一个大体的框架。

<?php
class Car
{
    
/**
    * 小车的汽油量
    *
    *@var
    *@access
    */
    
var $gas;

    
/**
    * 里程记录
    *
    *@var
    *@access
    */
    
var $meter;

    
/**
    * 车的位置(由GPS自动控制)
    *
    *@var Object position
    *@access private
    */
    
var $position;
    
    
/**
    * 发动机每1公里耗油量,这个车是0.1升
    *
    *@var Integer
    *@access private
    */
    
var $engine=0.1;

    
/**
    * 警报信息
    *
    *@var
    *@access
    */
    
var $warning;
    
    
/**
    小车的初始化。新车出场当然要
    1、加汽油。
    2、里程表归零。
    3、清除警报信息。
    4、设定出发位置。
    */
    
function Car($gas,&$position)
    {
        
$this->gas= $gas; //加汽油
        
$this->meter = 0;
        
$this->warning =''; //清除警报信息
        
$this->position = $position; //设定出发位置
    
}
    
    function
getWarning() //返回警报信息
    
{
        return
$this->warning;
    }
    
    function
getGas() //返回汽油表指数
    
{
        return
$this->gas;
    }

    function &
getPosition()
    {
        return
$this->position; //返回当前小车的位置
    
}

    function
setHeading($direction='e')
    {
        
    }

    
/**
    * 开动小汽车
    *@access public
    *@param INT 公里数
    */
    
function run($km)
    {

[1] [2] [3] 下一页






  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务