Python - 面向对象编程 - 小实战(3)

需求

  • 房子(House)有户型、总面积、家具名称列表;新房子没有任何的家具 
  • 家具(HouseItem)有名字、占地面积
  • 席梦思(bed) 占地 4 平米
  • 衣柜(bed) 占地 2 平米
  • 餐桌(bed) 占地 1.5 平米
  • 将以上三个家具添加到房子中
  • 打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表

需求分析

  • 家具有两个属性,房子表面上有三个属性
  • 新房子没有任何的家具,代表构造方法不需要给家具名称列表属性初始化赋值
  • 但房子其实还有一个特殊属性,剩余面积,它的初始值应该和总面积相同
  • 房子添加家具后,剩余面积应该减掉家具的占地面积
  • 席梦思、衣柜、餐桌都是一个具体的对象,都是家具类的实例对象

思考:房子、家具两个类应该先开发哪个类

  • 家具类
  • 因为家具类简单,只有两个方法,且没有行为
  • 房子要使用到家具,被依赖的类,通常应该先开发,可以避免在开发主类过程中,要中途插入开发被依赖的类

类图

实现代码

家具类

class HouseItem:# 构造方法def __init__(self, name, area):self.name = nameself.area = areadef __str__(self):return f"家具名称:{self.name} 占地面积:{self.area}"

房子类

class House:# 构造方法def __init__(self, type, area):self.house_type = typeself.area = area# 剩余面积self.free_area = self.area# 家具名称列表self.item_list = []# strdef __str__(self):return f"户型:{self.house_type}\n" \f"总面积:{self.area}\n" \f"剩余面积:{self.free_area}\n" \f"家具:{self.item_list}\n"# 添加家具def add_item(self, item):# 1、家具占地面积>剩余面积if item.area > self.free_area:print("剩余面积不足以添加 ", item.name)return# 2、添加家具名称self.item_list.append(item.name)# 3、计算剩余面积self.free_area -= item.area

执行代码

# 创建三个家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)# 创建房子实例对象
poloHouse = House("120平复试", 120)
# 添加家具
poloHouse.add_item(bed)
poloHouse.add_item(chest)
poloHouse.add_item(table)
# 打印房子信息
print(poloHouse)# 输出结果
户型:120平复试
总面积:120
剩余面积:112.5
家具:['席梦思', '衣柜', '餐桌']


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部