案例:烤地瓜
需求(目的:练习面向对象思想,分析主题及主题之间关系)
需求主线:
1. 被烤的时间和对应的地⽠状态:
0-3分钟:⽣的
3-5分钟:半⽣不熟
5-8分钟:熟的
超过8分钟:烤糊了
2. 添加的调料: ⽤户可以按⾃⼰的意愿添加调料
分析
主题的拆分(就涉及1个地瓜)
需求涉及⼀个事物: 地⽠。根据面向对象思想,地瓜就是一个类。每一个地瓜就是一个对象。因此,需要创建1个地⽠类,至少1个地瓜对象。
对主题的属性、行为以及主题之间的关系分析
因为只涉及一个地瓜类,不涉及主题之间的关系分析。只需要分析地瓜类的属性、行为。
1. 地瓜的属性:
1. 被烤的时间
2. 地⽠的状态
3. 添加的调料(什么味的)
2. 地瓜的行为(方法):
1. 被烤:
⽤户根据意愿设定每次烤地⽠的时间
判断地⽠被烤的总时间是在哪个区间,修改地⽠状态
2. 添加调料
⽤户根据意愿设定添加的调料
将⽤户添加的调料存储
3. 其他(对象的描述)即显示对象信息
1 # 1. 定义类:初始化属性、被烤和添加调料的方法、显示对象信息的str 2 class SweetPotato(): 3 def __init__(self): 4 # 被烤的时间 5 self.cook_time = 0 6 # 烤的状态 7 self.cook_state = '生的' 8 # 调料列表 9 self.condiments = [] 10 11 def cook(self, time): 12 """烤地瓜方法""" 13 # 1. 先计算地瓜整体烤过的时间 14 self.cook_time += time 15 # 2. 用整体烤过的时间再判断地瓜的状态 16 if 0 <= self.cook_time < 3: 17 # 生的 18 self.cook_state = '生的' 19 elif 3 <= self.cook_time < 5: 20 # 半生不熟 21 self.cook_state = '半生不熟' 22 elif 5 <= self.cook_time < 8: 23 # 熟了 24 self.cook_state = '熟了' 25 elif self.cook_time >= 8: 26 # 烤糊了 27 self.cook_state = '烤糊了' 28 29 def add_condiments(self, condiment): 30 # 用户意愿的调料追加到调料列表 31 self.condiments.append(condiment) 32 33 def __str__(self): 34 return f'这个地瓜的被烤过的时间是{self.cook_time}, 状态是{self.cook_state}, 调料有{self.condiments}' 35 36 37 # 2. 创建对象并调用对应的实例方法 38 digua1 = SweetPotato() 39 40 print(digua1) # 这个地瓜的被烤过的时间是0, 状态是生的, 调料有[] 41 42 digua1.cook(2) 43 digua1.add_condiments('辣椒面儿') 44 print(digua1) # 这个地瓜的被烤过的时间是2, 状态是生的, 调料有['辣椒面儿'] 45 46 digua1.cook(2) 47 digua1.add_condiments('酱油') 48 print(digua1) # 这个地瓜的被烤过的时间是4, 状态是半生不熟, 调料有['辣椒面儿', '酱油']

浙公网安备 33010602011771号