五. 综合应⽤
5.1 烤地⽠
5.1.1 需求
需求主线:
1. 被烤的时间和对应的地⽠状态:
0-3分钟:⽣的
3-5分钟:半⽣不熟
5-8分钟:熟的
超过8分钟:烤糊了
2. 添加的调料:
⽤户可以按⾃⼰的意愿添加调料
5.1.2 步骤分析
需求涉及⼀个事物: 地⽠,故案例涉及⼀个类:地⽠类。
5.1.2.1 定义类
地⽠的属性
被烤的时间
地⽠的状态
添加的调料
地⽠的⽅法
被烤
⽤户根据意愿设定每次烤地⽠的时间
判断地⽠被烤的总时间是在哪个区间,修改地⽠状态
添加调料
⽤户根据意愿设定添加的调料
将⽤户添加的调料存储
显示对象信息
5.1.2.2 创建对象,调⽤相关实例⽅法
# 1. 定义类:初始化属性、被烤和添加调料的方法、显示对象信息的str class SweetPotato(): def __init__(self): # 被烤的时间 self.cook_time = 0 # 烤的状态 self.cook_state = '生的' # 调料列表 self.condiments = [] def cook(self, time): """烤地瓜方法""" # 1. 先计算地瓜整体烤过的时间 self.cook_time += time # 2. 用整体烤过的时间再判断地瓜的状态 if 0 <= self.cook_time < 3: # 生的 self.cook_state = '生的' elif 3 <= self.cook_time < 5: # 半生不熟 self.cook_state = '半生不熟' elif 5 <= self.cook_time < 8: # 熟了 self.cook_state = '熟了' elif self.cook_time >= 8: # 烤糊了 self.cook_state = '烤糊了' def add_condiments(self, condiment): # 用户意愿的调料追加到调料列表 self.condiments.append(condiment) def __str__(self): return f'这个地瓜的被烤过的时间是{self.cook_time}, 状态是{self.cook_state}, 调料有{self.condiments}' # 2. 创建对象并调用对应的实例方法 digua1 = SweetPotato() print(digua1) digua1.cook(2) digua1.add_condiments('辣椒面儿') print(digua1) digua1.cook(2) digua1.add_condiments('酱油') print(digua1)
5.2 搬家具
5.2.1 需求
将⼩于房⼦剩余⾯积的家具摆放到房⼦中
5.2.2 步骤分析
需求涉及两个事物:房⼦ 和 家具,故被案例涉及两个类:房⼦类 和 家具类。
5.2.2.1 定义类
房⼦类
实例属性
房⼦地理位置
房⼦占地⾯积
房⼦剩余⾯积
房⼦内家具列表
实例⽅法
容纳家具
显示房屋信息
家具类
家具名称
家具占地⾯积
5.2.2.2 创建对象并调⽤相关⽅法
class Furniture(): def __init__(self, name, area): self.name = name self.area = area 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}' def add_furniture(self, item): """容纳家具""" # 如果 家具占地面积 <= 房子剩余面积:可以搬入(家具列表添加家具名字数据并房子剩余面积更新: # 房屋剩余面积 - 该家具的占地面积 # 否则:提示用户家具太大,剩余面积不足,无法容纳 # ) if item.area <= self.free_area: self.furniture.append(item.name) self.free_area -= item.area else: print('家具太大,剩余面积不足,无法容纳') # 双人床, 6 bed = Furniture('双人床', 6) sofa = Furniture('沙发', 10) # 房子1: 北京, 1000 jia1 = Home('北京', 1000) print(jia1) jia1.add_furniture(bed) print(jia1) ball = Furniture('篮球场', 2000) jia1.add_furniture(ball) print(jia1)