黑马程序员技术交流社区

标题: 面向对象(下) [打印本页]

作者: 小江哥    时间: 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