<?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. 单个机器部署redis集群模式(一键部署脚本)

    一.检查机器是否安装gcc.unzip.wget 二.部署模式 #模式1: 将所有主从节点以及sentinel节点部署在同一台机器上 #模式2: 将一个数据节点和一个sentinel节点部署在一台机器 ...

  2. html中没有不能随意嵌套的标签

    在HTML里有几个元素是比较特别的:<ul>.<ol>.<dl>.<table>,它们的子一层必须是指定元素,<ul>.<ol> ...

  3. 关于springboot错误:“找不到或无法加载主类”的解决办法

    我从网上找的一个Demo,运行的时候报 错误:“找不到或无法加载主类”,百度了一番,都是说在项目目录打开cmd,使用 mvn install.mvn clean complie之类的命令,都成功了,但 ...

  4. 25. object类中的一些方法分析

    1. Object java是面向对象语言,所以其核心思想: 找合适的对象,做合适的事 Object是所有类的终极基类.任何一个类都继承了Object类 2. Object的部分函数列表 1)Stri ...

  5. 关于第一次web前端面试的记录

    最近参加了一场面试,感觉自己题目都懂,但是说起来就是有点说不明白,所以写个博客整理以下吧.答案不少不是面试时回答的答案,只是整理一下可行答案 1. 如图1,使B相对于A垂直居中 图1 <styl ...

  6. delphi xe10 消息操作

    //消息提醒(从手机屏幕顶部向下滑动,出现的提示消息) NotificationC: TNotificationCenter; procedure TNotificationsForm.btnSend ...

  7. 「题解」:毛一琛/$cow$ $subsets$

    问题 A: 毛一琛/$cow$ $subsets$ 时间限制: 1 Sec  内存限制: 512 MB 题面 题面谢绝公开. 题解 题名貌似是个大神??看起来像是签到题然后就死了. 首先$O(3^n) ...

  8. Debian怎么配置网卡(IP)

    来自:http://jingyan.baidu.com/article/a3f121e4d27a53fc9152bb65.html Debian可以配置静态IP.动态IP使Debian连上互联网.用户 ...

  9. 使用豆瓣源安装python包

    Python pip安装的原理就是从Python的官方源https://pypi.python.org/pypi下载到本地安装, 但是访问官方源网络不稳定,速度较慢,我经常会遇到一个问题,pip安装包 ...

  10. 城市代码表mysql

    只有代码: # ************************************************************ # Sequel Pro SQL dump # Version ...