<?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. cocos2D-X 常见49种Action

    bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init( ...

  2. 【转载】查看Linux进程CPU过高具体的线程堆栈(不中断程序)

    具体的命令经常忘记,毕竟用的不是很多.为了避免去找备份一下 1.TOP命令,找到占用CPU最高的进程 $ top top - 20:11:45 up 850 days,  1:18,  3 users ...

  3. 【重磅来袭】阿里小程序IDE上线8大功能

    时隔两个月,10月10日阿里小程序IDE上线了uni-app 跨平台研发支持.预览和真机调试交互优化.预检测新增代码扫描等8项功能,进一步完善了阿里小程序IDE的功能池,给大家更好的开发体验和环境. ...

  4. 线段树区间离散化——牛客多校E

    这个区间离散化把我调死了.. 总之用vector来离散化,然后叶子节点维护的是一段区间,记录下每个叶子结点的起点+长度 千万要注意下标不能弄错! #include<bits/stdc++.h&g ...

  5. NX二次开发-创建圆弧(圆心-半径)UF_CURVE_create_arc

    NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_ui.h> #include <u ...

  6. Vue-cli中使用vConsole,以及设置JS连续点击控制vConsole按钮显隐功能实现

    最近发现了一个鹅厂的仓库,实现起来比我这个方便[捂脸].https://github.com/AlloyTeam/AlloyLever 一.vue-cli脚手架中搭建的项目引入vConsole调试 1 ...

  7. Linux命令(2):cat

    cat命令是一个文本连接和查看的命令,用于文件的输出显示. 三大功能 一次显示整个文件. $ cat filename 从键盘创建一个文件.只能创建新文件,不能编辑已有文件. $ cat > f ...

  8. CApiHook__Api钩子类

    见过网上有很多ApiHook的类,但是都不尽入人意,要么就是写的不够好不够完善,要么就是跑不起来. 用别人写的代码总是有种不安心,所以自己就花了一晚上写了CApiHook类.已经尽量确保自己写的类是非 ...

  9. 剑指offer——30包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)).   题解: 借助辅助栈,新的数据<=f辅助栈顶时,就压入辅助栈,这样,就能保证辅 ...

  10. Datagrid 的 SelectItem 和 SelectValue 如何区分、DataContext 和 ItemSource 在绑定时该绑哪个?

    1.selecteditem.selectedvalue.selectedvaluepath三个属性 场景: class T { public string A { get; set; } publi ...