案例:烤地瓜

需求(目的:练习面向对象思想,分析主题及主题之间关系)

需求主线:

  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, 状态是半生不熟, 调料有['辣椒面儿', '酱油']
复制代码

 

posted @   Allen_Hao  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示