<?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();

PHP面向对象编程题(方法的实践)的更多相关文章

  1. Python 渗透测试编程技术方法与实践 ------全书整理

    1.整个渗透测试的工作阶段 ( 1 )前期与客户的交流阶段.( 2 )情报的收集阶段.( 3 )威胁建模阶段.( 4 )漏洞分析阶段.( 5 )漏洞利用阶段.( 6 )后渗透攻击阶段.( 7 )报告阶 ...

  2. Python - 面向对象编程 - 子类方法的重写

    继承的详解 https://www.cnblogs.com/poloyy/p/15216652.html 方法的重写 在子类继承父类时,子类会拥有父类的所有属性和方法 但当父类的方法实现不满足子类需要 ...

  3. Python - 面向对象编程 - MRO 方法搜索顺序

    为什么会讲 MRO? 在讲多继承的时候:https://www.cnblogs.com/poloyy/p/15224912.html 有讲到, 当继承的多个父类拥有同名属性.方法,子类对象调用该属性. ...

  4. Python - 面向对象编程 - 魔术方法(双下划线方法)

    什么是魔术方法 在Python中,所有以 __ 双下划线包起来的方法,都统称为 Magic Method 魔术方法,也叫双下划线方法 有哪些重要的魔术方法? __new__ https://www.c ...

  5. python之面向对象编程

    1.面向对象介绍: 世界万物,皆可分类 世界万物,皆为对象 只要是对象,就肯定属于某种类 只要是对象,就肯定有属性 2. 面向对象的几个特性: class类: 一个类即对一类拥有相同属性的对象的抽象, ...

  6. JavaScript面向对象编程(二)构造函数和类

    new关键字和构造函数 在文章JavaScript面向对象编程(一)原型与继承中讨论啦JavaScript中原型的概念,并且提到了new关键字和构造函数.利用new关键字构造对象的实例代码如下: // ...

  7. Python3面向对象编程实例

    /*认真研究完这个实例,理解python面向对象编程的方法*/class Person: """人员信息""" # 姓名(共有属性) nam ...

  8. PHP面向对象编程 对象的基本概念 PHP面向对象的基本实践 PHP面向对象的高级实践 PHP面向对象的特殊实践

    再次梳理一下面向对象编程的要点. 此文是以php为例,但思想是通用的. 总结的PHP面向对象编程笔记 对象的基本概念 对象的基本构成 对象包含两部分 一.对象的组成元素 是对象的数据模型,用于描述对象 ...

  9. 2018.3.5 Java语言基础与面向对象编程实践

    Java语言基础与面向对象编程实践 第一章 初识Java 1.Java特点 http://www.manew.com/blog-166576-20164.html Java语言面向对象的 Java语言 ...

随机推荐

  1. 移动端布局 + iscroll + 滚动事件

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  2. SOLID设计原则

    SOLID设计原则 Single Responsibility Principle单一职责原则 单一职责原则(SRP)表明一个类有且只有一个职责. 一个类就像容器一样,它能添加任意数量的属性.方法等. ...

  3. js 购物车的数量加减,对应的总价也随机变化

    html相关的源码: <div class="goods_num clearfix"> <div class="num_name fl"> ...

  4. HTML——表单标签

    表单标签(掌握) 现实中的表单,类似我们去银行办理信用卡填写的单子. 如下图: 目的是为了收集用户信息. 在我们网页中, 我们也需要跟用户进行交互,收集用户资料,此时也需要表单. 在HTML中,一个完 ...

  5. Android中的Parcel机制(下)

    上一篇中我们透过源码看到了Parcel背后的机制,本质上把它当成一个Serialize就可以了,只是它是在内存中完成的序列化和反序列化,利用的是连续的内存空间,因此会更加高效. 我们接下来要说的是Pa ...

  6. 取对数求阶乘位数——lightoj1045

    /* 求 n! 在base进制下的位数 取对数,用换底公式,预处理对数前缀和 b^x = n! x = log_b(n!) = log_10(n!)/log_10(b) 对x向上取整即可 */ #in ...

  7. vue-cli整合axios的几种方法

    Vue这个框架现在在单页面应用方面非常受人欢迎. 基于vue-cli创建的项目怎么样才能更好地处理网络请求? 首选的应该就是axios了 这次给刚接触vue的新手介绍一下axios在vue中如何使用 ...

  8. FZU - 2295 Human life:网络流-最大权闭合子图-二进制优化-第九届福建省大学生程序设计竞赛

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 http://acm.fzu.edu.cn/problem.php?pid=2295 htt ...

  9. AtCoder ABC 131E Friendships

    题目链接:https://atcoder.jp/contests/abc131/tasks/abc131_e 题目大意 给定 N 和 K,要求构造有 N 个点,恰有 K 对点,它们的最短距离为 2 的 ...

  10. 基于airtest的朋友圈自动点赞

    本脚本可以通过AirtestIDE和python执行,推荐使用AirtestIDE的环境执行,更稳定一些 AirtestIDE官方文档 使用python执行该脚本 安装库 airtest.pocoui ...