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();
PHP面向对象编程题(方法的实践)的更多相关文章
- Python 渗透测试编程技术方法与实践   ------全书整理
		1.整个渗透测试的工作阶段 ( 1 )前期与客户的交流阶段.( 2 )情报的收集阶段.( 3 )威胁建模阶段.( 4 )漏洞分析阶段.( 5 )漏洞利用阶段.( 6 )后渗透攻击阶段.( 7 )报告阶 ... 
- Python - 面向对象编程 - 子类方法的重写
		继承的详解 https://www.cnblogs.com/poloyy/p/15216652.html 方法的重写 在子类继承父类时,子类会拥有父类的所有属性和方法 但当父类的方法实现不满足子类需要 ... 
- Python - 面向对象编程 - MRO 方法搜索顺序
		为什么会讲 MRO? 在讲多继承的时候:https://www.cnblogs.com/poloyy/p/15224912.html 有讲到, 当继承的多个父类拥有同名属性.方法,子类对象调用该属性. ... 
- Python - 面向对象编程 - 魔术方法(双下划线方法)
		什么是魔术方法 在Python中,所有以 __ 双下划线包起来的方法,都统称为 Magic Method 魔术方法,也叫双下划线方法 有哪些重要的魔术方法? __new__ https://www.c ... 
- python之面向对象编程
		1.面向对象介绍: 世界万物,皆可分类 世界万物,皆为对象 只要是对象,就肯定属于某种类 只要是对象,就肯定有属性 2. 面向对象的几个特性: class类: 一个类即对一类拥有相同属性的对象的抽象, ... 
- JavaScript面向对象编程(二)构造函数和类
		new关键字和构造函数 在文章JavaScript面向对象编程(一)原型与继承中讨论啦JavaScript中原型的概念,并且提到了new关键字和构造函数.利用new关键字构造对象的实例代码如下: // ... 
- Python3面向对象编程实例
		/*认真研究完这个实例,理解python面向对象编程的方法*/class Person: """人员信息""" # 姓名(共有属性) nam ... 
- PHP面向对象编程  对象的基本概念  PHP面向对象的基本实践  PHP面向对象的高级实践   PHP面向对象的特殊实践
		再次梳理一下面向对象编程的要点. 此文是以php为例,但思想是通用的. 总结的PHP面向对象编程笔记 对象的基本概念 对象的基本构成 对象包含两部分 一.对象的组成元素 是对象的数据模型,用于描述对象 ... 
- 2018.3.5   Java语言基础与面向对象编程实践
		Java语言基础与面向对象编程实践 第一章 初识Java 1.Java特点 http://www.manew.com/blog-166576-20164.html Java语言面向对象的 Java语言 ... 
随机推荐
- 移动端布局 + iscroll + 滚动事件
			<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ... 
- SOLID设计原则
			SOLID设计原则 Single Responsibility Principle单一职责原则 单一职责原则(SRP)表明一个类有且只有一个职责. 一个类就像容器一样,它能添加任意数量的属性.方法等. ... 
- js 购物车的数量加减,对应的总价也随机变化
			html相关的源码: <div class="goods_num clearfix"> <div class="num_name fl"> ... 
- HTML——表单标签
			表单标签(掌握) 现实中的表单,类似我们去银行办理信用卡填写的单子. 如下图: 目的是为了收集用户信息. 在我们网页中, 我们也需要跟用户进行交互,收集用户资料,此时也需要表单. 在HTML中,一个完 ... 
- Android中的Parcel机制(下)
			上一篇中我们透过源码看到了Parcel背后的机制,本质上把它当成一个Serialize就可以了,只是它是在内存中完成的序列化和反序列化,利用的是连续的内存空间,因此会更加高效. 我们接下来要说的是Pa ... 
- 取对数求阶乘位数——lightoj1045
			/* 求 n! 在base进制下的位数 取对数,用换底公式,预处理对数前缀和 b^x = n! x = log_b(n!) = log_10(n!)/log_10(b) 对x向上取整即可 */ #in ... 
- vue-cli整合axios的几种方法
			Vue这个框架现在在单页面应用方面非常受人欢迎. 基于vue-cli创建的项目怎么样才能更好地处理网络请求? 首选的应该就是axios了 这次给刚接触vue的新手介绍一下axios在vue中如何使用 ... 
- FZU - 2295 Human life:网络流-最大权闭合子图-二进制优化-第九届福建省大学生程序设计竞赛
			目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 http://acm.fzu.edu.cn/problem.php?pid=2295 htt ... 
- AtCoder ABC 131E Friendships
			题目链接:https://atcoder.jp/contests/abc131/tasks/abc131_e 题目大意 给定 N 和 K,要求构造有 N 个点,恰有 K 对点,它们的最短距离为 2 的 ... 
- 基于airtest的朋友圈自动点赞
			本脚本可以通过AirtestIDE和python执行,推荐使用AirtestIDE的环境执行,更稳定一些 AirtestIDE官方文档 使用python执行该脚本 安装库 airtest.pocoui ... 
