黑马程序员技术交流社区
标题: 面向对象(下) [打印本页]
作者: 小江哥 时间: 2018-12-8 17:24
标题: 面向对象(下)
1. ⽬标
强化 ⾯向对象编程的设计能⼒,进⼀步理解类、属性、⽅法 的构建场景 **
强化 对self的理解,⽅法中使⽤self 可以获取和修改属性
2. 需求说明
烤地⽠规则:
1. 地⽠有⾃⼰的状态,默认是⽣的,地⽠可以进⾏烧烤
2. 地⽠有⾃⼰烧烤的总时间,由每次烧烤的时间累加得出
3. 地⽠烧烤时,需要提供本次烧烤的时间
4. 地⽠烧烤时,地⽠状态随着烧烤总时间的变化⽽改变:[0, 3) ⽣的、[3, 6) 半⽣不熟、[6, 8) 熟了、>=8 烤糊了
5. 输出地⽠信息时,可以显示地⽠的状态和烧烤的总时间
3. ⾯向对象设计
类图
3.1 地⽠类
1. 使⽤ SweetPotato 类可以创建 地⽠对象
2. 地⽠有两个属性:
状态 state:字符串
烧烤总时间 cooked_time:整数
3. 定义 cook ⽅法, 提供参数 time 设置 本次烧烤的时间
使⽤ 本次烧烤时间 对 烧烤总时间 进⾏累加
根据 烧烤总时间, 设置地⽠的状态:
[0, 3) -> ⽣的
[3, 6) -> 半⽣不熟
[6, 8) -> 熟了
⼤于等于8 -> 烤糊了
3.2 主程序逻辑
1. 创建地⽠对象
2. 分多次烧烤地⽠
3. 每烧烤⼀次,输出地⽠信息
4. 代码实现
4.1 定义地⽠类,并且定义 init () 和 str ()⽅ 法
class SweetPotato:# 定 义 类
"""地⽠类"""
definit (self):
self.cooked_state = "⽣的"# 地⽠状态
self.cooked_time = 0 # 烧烤总时间
defstr (self):
return "地⽠状态:%s, 烧烤总时间:%d" % ( self.cooked_state, self.cooked_time)
4.2 定义"烤地⽠"⽅法
defcook(self,time):
"""烧烤"""
# 本次烧烤时间累加到烧烤总时间中
self.cooked_time += time
# 根据烧烤总时间改变地⽠的状态
if self.cooked_time >= 0 and self.cooked_time< 3: self.cooked_state = "⽣的"
elif self.cooked_time >= 3 and self.cooked_time< 6:
self.cooked_state = "半⽣不熟"
elif self.cooked_time >= 6 and self.cooked_time< 8: self.cooked_state = "熟了"
else:
self.cooked_state = "烤糊了"
对象⽅法中可以使⽤self修改、获取对象属性,如 cook ⽅法中使⽤ self 修改了 cooked_time
和 cooked_state 属 性
4.3 测试代码
把上⾯2块代码合并为⼀个程序后,在代码的下⾯添加以下代码进⾏测试
# 创建对象
digua1 =SweetPotato() digua1.cook(1)
print(digua1) # 地⽠状态:⽣的,烧烤总时间:1
digua1.cook(2)
print(digua1) # 地⽠状态:半⽣不熟, 烧烤总时间:3 digua1.cook(3)
print(digua1) # 地⽠状态:熟了, 烧烤总时间:6 digua1.cook(3)
print(digua1) # 地⽠状态:烤糊了, 烧烤总时间:9
作者: 一个人一座城0.0 时间: 2018-12-8 20:55
看看不说话
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |