[toc]
1、烤地瓜
(1)需求
1)被烤的时间和对应的地瓜状态:
- 0-3分钟:生的。
- 3-5分钟:半生不熟。
- 5-8分钟:熟的。
- 超过8分钟:烤糊了。
2)添加的调料:
用户可以按自己的意愿添加调料。
(2)步骤分析
需求涉及一个事物: 地瓜,故案例涉及一个类:地瓜类。
1)地瓜的属性:
- 被烤的时间。
- 地瓜的状态。
- 添加的调料。
2)地瓜的方法:
- 被烤。用户根据意愿设定每次烤地瓜的时间。
- 判断地瓜被烤的总时间是在哪个区间,修改地瓜状态。
- 用户根据意愿设定添加的调料。
(3)代码实现
1)地瓜属性。
定义地瓜初始化属性,后期根据程序推进更新实例属性。
class SweetPotato():def __init__(self):# 被烤的时间self.cook_time = 0# 地瓜的状态self.cook_static = \'生的\'# 调料列表self.condiments = []
2)定义烤地瓜方法。
class SweetPotato():......def cook(self, time):"""烤地瓜的方法"""# self.cook_time是已考过的时间# time是这次考的时间,调用一次cook方法就算考一次self.cook_time += timeif 0 <= self.cook_time < 3:self.cook_static = \'生的\'elif 3 <= self.cook_time < 5:self.cook_static = \'半生不熟\'elif 5 <= self.cook_time < 8:self.cook_static = \'熟了\'elif self.cook_time >= 8:self.cook_static = \'烤糊了\'
3)书写str魔法方法,用于输出对象状态。
class SweetPotato():......def __str__(self):return f\'这个地瓜烤了{self.cook_time}分钟, 状态是{self.cook_static}\'
4)创建对象,测试实例属性和实例方法。
# 创建对象digua1 = SweetPotato()# 打印对象中的__str__方法# 这个地瓜烤了0分钟, 状态是生的, 添加的调料有[]print(digua1)# 调用对象的烹饪cook方法digua1.cook(2)# 再查看地瓜状态# 这个地瓜烤了2分钟, 状态是生的, 添加的调料有[]print(digua1)
5)定义添加调料方法,并调用该实例方法。
class SweetPotato():......# 添加调料方法def add_condiments(self, condiment):"""添加调料"""self.condiments.append(condiment)def __str__(self):return f\'这个地瓜烤了{self.cook_time}分钟, 状态是{self.cook_static}, 添加的调料有{self.condiments}\'# 创建对象digua1 = SweetPotato()# 打印对象中的__str__方法# 这个地瓜烤了0分钟, 状态是生的, 添加的调料有[]print(digua1)# 调用对象的烹饪cook方法digua1.cook(2)# 调用添加调料digua1.add_condiments(\'酱油\')# 再查看地瓜状态# 这个地瓜烤了2分钟, 状态是生的, 添加的调料有[\'酱油\']print(digua1)# 再烤两分钟,再加调料# 这个地瓜烤了4分钟, 状态是半生不熟, 添加的调料有[\'酱油\', \'辣椒面儿\']digua1.cook(2)digua1.add_condiments(\'辣椒面儿\')print(digua1)# 还不熟继续烤# 这个地瓜烤了6分钟, 状态是熟了, 添加的调料有[\'酱油\', \'辣椒面儿\']digua1.cook(2)print(digua1)
(4)代码总览
# 定义类class SweetPotato():def __init__(self):# 被烤的时间self.cook_time = 0# 地瓜的状态self.cook_static = \'生的\'# 调料列表self.condiments = []# 烤白薯方法def cook(self, time):"""烤地瓜的方法"""# self.cook_time是已考过的时间# time是这次考的时间,调用一次cook方法就算考一次self.cook_time += timeif 0 <= self.cook_time < 3:self.cook_static = \'生的\'elif 3 <= self.cook_time < 5:self.cook_static = \'半生不熟\'elif 5 <= self.cook_time < 8:self.cook_static = \'熟了\'elif self.cook_time >= 8:self.cook_static = \'烤糊了\'# 添加调料方法def add_condiments(self, condiment):"""添加调料"""# 用户意愿的调料追加到调料列表self.condiments.append(condiment)def __str__(self):return f\'这个地瓜烤了{self.cook_time}分钟, 状态是{self.cook_static}, 添加的调料有{self.condiments}\'# 创建对象并调用对应的实例方法# 创建对象digua1 = SweetPotato()# 打印对象中的__str__方法# 这个地瓜烤了0分钟, 状态是生的, 添加的调料有[]print(digua1)# 调用对象的烹饪cook方法digua1.cook(2)# 调用添加调料digua1.add_condiments(\'酱油\')# 再查看地瓜状态# 这个地瓜烤了2分钟, 状态是生的, 添加的调料有[\'酱油\']print(digua1)# 再烤两分钟,再加调料# 这个地瓜烤了4分钟, 状态是半生不熟, 添加的调料有[\'酱油\', \'辣椒面儿\']digua1.cook(2)digua1.add_condiments(\'辣椒面儿\')print(digua1)# 还不熟继续烤# 这个地瓜烤了6分钟, 状态是熟了, 添加的调料有[\'酱油\', \'辣椒面儿\']digua1.cook(2)print(digua1)# 再继续烤,要烤糊白薯# 这个地瓜烤了8分钟, 状态是烤糊了, 添加的调料有[\'酱油\', \'辣椒面儿\']digua1.cook(2)print(digua1)
2、搬家具
(1)需求
将小于房子剩余面积的家具摆放到房子中
(2)步骤分析
需求涉及两个事物:房子 和 家具,故被案例涉及两个类:房子类 和 家具类。
1)房子类
- 实例属性房子地理位置
- 房子占地面积
- 房子剩余面积
- 房子内家具列表
- 容纳家具
2)家具类
- 家具名称
- 家具占地面积
(3)代码实现
1)家具类
class Furniture():def __init__(self, name, area):# 家具名字self.name = name# 家具占地面积self.area = area# 创建一张双人床, 占地面积6bed = Furniture(\'双人床\', 6)sofa = Furniture(\'沙发\', 10)
2)房子类
class Home():def __init__(self, address, area):# 地理位置self.address = address# 房屋面积self.area = area# 剩余面积self.free_area = area# 家具列表self.furniture = []def __str__(self):return f\'房子坐落于{self.address}, 占地面积{self.area}, 剩余面积{self.free_area}, 家具有{self.furniture}\'# 添加家具的方法,item是一个家具的示例对象def add_furniture(self, item):"""容纳家具"""# 剩余面积大于家具面积,才可以添加家具if self.free_area >= item.area:# 添加到家具列表中self.furniture.append(item.name)# 家具搬入后,更新房屋剩余面积# 房屋剩余面积 = 之前剩余面积 - 该家具面积self.free_area -= item.areaelse:print(\'家具太大,剩余面积不足,无法容纳\')# 创建一个房子1实例: 在北京, 1000平jia1 = Home(\'北京\', 1000)# 房子坐落于北京, 占地面积1000, 剩余面积1000, 家具有[]print(jia1)# 添加家具,参数是传入一个家具的实例jia1.add_furniture(bed)print(jia1)
3)创建对象并调用实例属性和方法
# 创建家具实例bed = Furniture(\'双人床\', 6)# 创建房屋实例jia1 = Home(\'北京\', 1200)# 房屋现状# 房子坐落于北京, 占地面积1200, 剩余面积1200, 家具有[]print(jia1)# 添加家具到房屋jia1.add_furniture(bed)# 查看房屋现状# 房子坐落于北京, 占地面积1200, 剩余面积1194, 家具有[\'双人床\']print(jia1)# 添加个篮球场ball = Furniture(\'篮球场\', 1500)# 家具太大,剩余面积不足,无法容纳jia1.add_furniture(ball)# 查看房屋现状# 房子坐落于北京, 占地面积1200, 剩余面积1194, 家具有[\'双人床\']print(jia1)
提示:三块代码,放到一起就可以查看效果了。