【Python基础编程212 ● 面向对象 ● 面向对象案例:烤红薯】


---------Python基础编程---------

Author : AI菌


 

【学习目标】

1.强化面向对象的设计能力,进一步理解类、属性和方法
2.强化方法参数self的理解。方法中的self可以获取和修改属性

 

【需求文档】

 

1.地瓜有自己的状态,默认是生的,地瓜可以进行烧烤
2.地瓜有自己烧烤的总时间,由每次烧烤的时间累加得出
3.地瓜烧烤时,需要提供本次烧烤的时间
4.地瓜烧烤时,地瓜状态随着烧烤总时间的变化而改变: [0, 3)生的、[3, 6)半生不熟、[6, 8)熟了、>=8烤糊了
5.输出地瓜信息时,可以显示地瓜的状态和烧烤的总时间

 

 

【分析方法】

面向对象设计的三步走策略:
  1.确定类:判断那段文件描述的哪个对象,描述的是哪个对象,就创建哪个对象的类;
  2.确定属性:根据文字描述,确定应该定义哪些属性
          对象有的东西,一定是属性;

   3.确定方法:根据文字描述,确定应该定义哪些方法
          对象能做的事情,一定是方法;
            根据文字描述,确定应该在方法中做什么事情。

 

【需求分析】

 1.确定类:描述的是哪个对象,就创建哪个对象的类;
              定义红薯类:SweetPotato

 2.确定属性:对象有的东西,一定是属性
              定义状态:state = "生的"
              定义烧烤总时间 total_time = 0
          
  3.确定方法:对象能做的事情,一定是方法
             __init__(self)方法: 添加属性
             cook(self,time)方法:
                     1)、累计总时间
                     2)、修改状态
             __str__(self)方法:打印对象时,返回状态和总时间

 

 【代码实现】

"""
1.确定类:描述的是哪个对象,就创建哪个对象的类;
              定义红薯类:SweetPotato

2.确定属性:对象有的东西,一定是属性
              定义状态:state = "生的"
              定义烧烤总时间 total_time = 0
      
3.确定方法:对象能做的事情,一定是方法
             __init__(self)方法: 添加属性
             cook(self,time)方法:
                     1)、累计总时间
                     2)、修改状态
             __str__(self)方法:打印对象时,返回状态和总时间
"""


class SweetPotato:

    def __init__(self):
        self.state = "生的"
        self.total_time = 0

    def cook(self, time):
        """
        烧烤的方法
        :param time: 本次烧烤的时间
        """
        # 1.累加烧烤的总时间
        self.total_time += time
        # 2.根据总时间修改状态
        if 0 <= self.total_time < 3:
            self.state = "生的"
        elif 3 <= self.total_time < 6:
            self.state = "半生不熟"
        elif 6 <= self.total_time < 8:
            self.state = "熟了"
        elif self.total_time >= 8:
            self.state = "糊了"
        else:
            print("微波炉坏了...")

    def __str__(self):
        if self.total_time > 0:
            return f"总时间为:{self.total_time},状态为{self.state}"
        else:
            return f"总时间为:{self.total_time},状态为生的"


# 创建红薯对象
sp = SweetPotato()

# 烤红薯
sp.cook(2)
print(sp)

sp.cook(2)
print(sp)

sp.cook(2)
print(sp)

sp.cook(2)
print(sp)

sp.cook(-10)
print(sp)
View Code

 

 

【往期精彩】

▷【Python基础编程196 ● 读取文件的4种方式】
▷【Python基础编程197 ● 读取文件的4种方式】
▷【Python基础编程198 ● 读取文件的4种方式】
▷【Python基础编程199 ● Python怎么读/写很大的文件】
▷【Python基础编程200 ● 读取文件的4种方式】
▷【Python基础编程201 ● 读取文件的4种方式】
▷【Python基础编程202 ● 读取文件的4种方式】
▷【Python基础编程203 ● 读取文件的4种方式】

 

【加群交流】



posted @ 2020-07-31 17:56  AI菌  阅读(287)  评论(0编辑  收藏  举报