zoukankan      html  css  js  c++  java
  • 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)
     
     
     
     
     
     
     
  • 相关阅读:
    C加加学习之路 1——开始
    哈夫曼树C++实现详解
    Linux常用命令
    Accp第二章:基础知识
    第一章Accp 8.0
    泛型集合
    深入C#数据类型
    初始wondows系统
    深入.NET框架
    二至十五章总结
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14969282.html
Copyright © 2011-2022 走看看