python 面向对象专题(18):基础(9)面向对象应用

五. 综合应⽤

5.1 烤地⽠
5.1.1 需求
需求主线:
1. 被烤的时间和对应的地⽠状态:
0-3分钟:⽣的
3-5分钟:半⽣不熟
5-8分钟:熟的
超过8分钟:烤糊了
2. 添加的调料:
⽤户可以按⾃⼰的意愿添加调料
5.1.2 步骤分析
需求涉及⼀个事物: 地⽠,故案例涉及⼀个类:地⽠类。
5.1.2.1 定义类
地⽠的属性
被烤的时间
地⽠的状态
添加的调料
地⽠的⽅法
被烤
⽤户根据意愿设定每次烤地⽠的时间
判断地⽠被烤的总时间是在哪个区间,修改地⽠状态
添加调料
⽤户根据意愿设定添加的调料
将⽤户添加的调料存储
显示对象信息
5.1.2.2 创建对象,调⽤相关实例⽅法
# 1. 定义类:初始化属性、被烤和添加调料的方法、显示对象信息的str
class SweetPotato():
    def __init__(self):
        # 被烤的时间
        self.cook_time = 0
        # 烤的状态
        self.cook_state = '生的'
        # 调料列表
        self.condiments = []

    def cook(self, time):
        """烤地瓜方法"""
        # 1. 先计算地瓜整体烤过的时间
        self.cook_time += time
        # 2. 用整体烤过的时间再判断地瓜的状态
        if 0 <= self.cook_time < 3:
            # 生的
            self.cook_state = '生的'
        elif 3 <= self.cook_time < 5:
            # 半生不熟
            self.cook_state = '半生不熟'
        elif 5 <= self.cook_time < 8:
            # 熟了
            self.cook_state = '熟了'
        elif self.cook_time >= 8:
            # 烤糊了
            self.cook_state = '烤糊了'

    def add_condiments(self, condiment):
        # 用户意愿的调料追加到调料列表
        self.condiments.append(condiment)

    def __str__(self):
        return f'这个地瓜的被烤过的时间是{self.cook_time}, 状态是{self.cook_state}, 调料有{self.condiments}'


# 2. 创建对象并调用对应的实例方法
digua1 = SweetPotato()

print(digua1)

digua1.cook(2)
digua1.add_condiments('辣椒面儿')
print(digua1)

digua1.cook(2)
digua1.add_condiments('酱油')
print(digua1)
5.2 搬家具
5.2.1 需求
将⼩于房⼦剩余⾯积的家具摆放到房⼦中
5.2.2 步骤分析
需求涉及两个事物:房⼦ 和 家具,故被案例涉及两个类:房⼦类 和 家具类。
5.2.2.1 定义类
房⼦类
实例属性
房⼦地理位置
房⼦占地⾯积
房⼦剩余⾯积
房⼦内家具列表
实例⽅法
容纳家具
显示房屋信息
家具类
家具名称
家具占地⾯积
5.2.2.2 创建对象并调⽤相关⽅法
class Furniture():
    def __init__(self, name, area):
        self.name = name
        self.area = area


class Home():
    def __init__(self, address, area):
        # 地理位置
        self.address = address
        # 房屋面积
        self.area = area
        # 剩余面积
        self.free_area = area
        # 家具列表
        self.furniture = []

    def __str__(self):
        return f'房子地理位置在{self.address}, 房屋面积是{self.area}, 剩余面积{self.free_area}, 家具有{self.furniture}'

    def add_furniture(self, item):
        """容纳家具"""
        # 如果 家具占地面积 <= 房子剩余面积:可以搬入(家具列表添加家具名字数据并房子剩余面积更新:
        # 房屋剩余面积 - 该家具的占地面积
        # 否则:提示用户家具太大,剩余面积不足,无法容纳
        # )
        if item.area <= self.free_area:
            self.furniture.append(item.name)
            self.free_area -= item.area
        else:
            print('家具太大,剩余面积不足,无法容纳')


# 双人床, 6
bed = Furniture('双人床', 6)
sofa = Furniture('沙发', 10)

# 房子1: 北京, 1000
jia1 = Home('北京', 1000)
print(jia1)

jia1.add_furniture(bed)
print(jia1)

ball = Furniture('篮球场', 2000)
jia1.add_furniture(ball)

print(jia1)

 

 
 
 
 
 
 
 
posted @ 2021-07-04 16:38  秋华  阅读(78)  评论(0编辑  收藏  举报