PHP面向对象编程题(方法的实践)

<?php
header('content-type:text/html;charset=utf-8');
/*设计一个peron类(有名字,年龄和蛋糕三个属性)
    蛋糕一共1000块,是所有人共享的,
    创建唐僧师徒四人,他们每人都吃蛋糕,唐僧每天吃3块,悟空吃五块,沙僧吃九块,猪八戒吃30块(编写一个eat方法来吃)
    问两天后,还剩多少块蛋糕(编写一个showCake()来显示)
    请计算,蛋糕一共可以吃多少天*/

class Person{
    public $name;
    public $age;
    /*因为是共享的,因此设置static*/
    protected static $cakeNum = 1000;
    
    /*构造函数*/
    public function __construct($name,$age){
        $this->name = $name;
        $this->age = $age;    
    }
    /*编写eat方法*/  //传入要吃的蛋糕
    public function eat($num){
        //判断一下蛋糕是否够吃
        if(self::$cakeNum >= $num){
            self::$cakeNum -= $num;
        }else{
            echo '<br>蛋糕不够吃了';
        }
    }
    //编写一个方法,显示还有多少块蛋糕
    public function showNum(){
        echo '<br> 当前还有 ' . self::$cakeNum . '蛋糕.';
    }
}
//使用
//1.创建四个对象
$monk = new Person('唐僧',30);
$monkey = new Person('悟空',500);
$pig = new Person('八戒',400);
$sMonk = new Person('沙僧',300);
//2.统计2天后
$day = 2 ;
for($i = 0 ; $i<$day;$i++){
    $monk->eat(3);
    $monkey->eat(5);
    $sMonk->eat(9);
    $pig->eat(30);
}
//3.看看还剩多少块

$monk->showNum();

另一个需求 

 请计算,蛋糕一共可以吃多少天 并且输出当谁要吃的时候蛋糕不够吃
<?php
header('content-type:text/html;charset=utf-8');
/*设计一个peron类(有名字,年龄和蛋糕三个属性)
    蛋糕一共1000块,是所有人共享的,
    创建唐僧师徒四人,他们每人都吃蛋糕,唐僧每天吃3块,悟空吃五块,沙僧吃九块,猪八戒吃30块(编写一个eat方法来吃)
    问两天后,还剩多少块蛋糕(编写一个showCake()来显示)
    请计算,蛋糕一共可以吃多少天*/

class Person{
    public $name;
    public $age;
    /*因为是共享的,因此设置static*/
    protected static $cakeNum = 1000;
    
    /*构造函数*/
    public function __construct($name,$age){
        $this->name = $name;
        $this->age = $age;    
    }
    /*编写eat方法*/  //传入要吃的蛋糕
    public function eat($num){
        //判断一下蛋糕是否够吃
        if(self::$cakeNum >= $num){
            self::$cakeNum -= $num;
            return true;   //如果够吃返回true
        }else{
            echo '<br> 当' .$this->name. '想吃' . $num . '块蛋糕时,蛋糕不够吃了';
            return false;    //如果不够吃返回false
        }
    }
    //编写一个方法,显示还有多少块蛋糕
    public function showNum(){
        echo '<br> 当前还有 ' . self::$cakeNum . '蛋糕.';
    }
}
//使用
//1.创建四个对象
$monk = new Person('唐僧',30);
$monkey = new Person('悟空',500);
$pig = new Person('八戒',400);
$sMonk = new Person('沙僧',300);
//2.统计2天后
$day = 30 ;
for($i = 0 ; $i<$day;$i++){
    //给每个人吃的时候加判断,当不够吃的时候break终止循环
    if(!$monk->eat(3)){
        break;
    };
    if(!$monkey->eat(5)){
        break;    
    };
    if(!$sMonk->eat(9)){
        break;    
    };
    if(!$pig->eat(30)){
        break;    
    };
}
//3.看看还剩多少块

$monk->showNum();

换一个思路,输出能吃多少天

<?php
header('content-type:text/html;charset=utf-8');
/*设计一个peron类(有名字,年龄和蛋糕三个属性)
    蛋糕一共1000块,是所有人共享的,
    创建唐僧师徒四人,他们每人都吃蛋糕,唐僧每天吃3块,悟空吃五块,沙僧吃九块,猪八戒吃30块(编写一个eat方法来吃)
    问两天后,还剩多少块蛋糕(编写一个showCake()来显示)
    请计算,蛋糕一共可以吃多少天*/

class Person{
    public $name;
    public $age;
    /*因为是共享的,因此设置static*/
    protected static $cakeNum = 1000;
    
    /*构造函数*/
    public function __construct($name,$age){
        $this->name = $name;
        $this->age = $age;    
    }
    /*编写eat方法*/  //传入要吃的蛋糕
    public function eat($num){
        //判断一下蛋糕是否够吃
        if(self::$cakeNum >= $num){
            self::$cakeNum -= $num;
            return true;   //如果够吃返回true
        }else{
            echo '<br> 当' .$this->name. '想吃' . $num . '块蛋糕时,蛋糕不够吃了';
            return false;    //如果不够吃返回false
        }
    }
    //编写一个方法,显示还有多少块蛋糕
    public function showNum(){
        echo '<br> 当前还有 ' . self::$cakeNum . '蛋糕.';
    }
}
//使用
//1.创建四个对象
$monk = new Person('唐僧',30);
$monkey = new Person('悟空',500);
$pig = new Person('八戒',400);
$sMonk = new Person('沙僧',300);

$count_day = 0; //思路:天数从0开始,没循环一次加1,最后输出$count_day while(true){ if(!$monk->eat(3)){ break; }; if(!$monkey->eat(5)){ break; }; if(!$sMonk->eat(9)){ break; }; if(!$pig->eat(30)){ break; }; $count_day ++; } echo '<br>蛋糕能吃多少:'.$count_day.'天'; //3.看看还剩多少块 $monk->showNum();

 

转载于:https://www.cnblogs.com/lsqbk/p/10402837.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值