面向对象的案例(摆放家具)

需求
1.房子(House)有户型、总面积和家具名称列表
新房子没有任何的家具

2.家具(HouseItem)有名字和占地面积,其中
席梦思(bed)占地4平米
衣柜(chest)占地2平米
餐桌(table)占地1.5平米

3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表

HouseItem
naem、area
_ init_(self,name,area):、 _str _(self):
HouseItem
house_type、area、free_area、item_list
_ init_(self,house_type,area):、 _str _(self):、 add_item(self,item)

剩余面积
1、在创建房子对象时,定义一个 剩余面积的属性、初始值和总面积相等
2、当调用 add_item() 方法,向房间添加家具时,让剩余面积 -= 家具面积

思考应该先开发哪一类?
应该先家具类
1.家具简单
2.房子要使用到家具,被使用的类,通常应该先开发

class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area
    def __str__(self):
        return "[%s] 占地 %.2f" % (self.name,self.area)


class House:

    def __init__(self, house_type, area):
        self.house_type = house_type
        self.area = area

        #剩余面积
        self.free_area = area

        #家具名称列表
        self.item_list = []

    def __str__(self):
        #Python 能够自动的将一对括号内部的代码连接在一起
        return ("户型:%s\n总面积:%.2f[剩余:%2.f]\n家具:%s"
                %(self.house_type,self.area,
                  self.free_area,self.item_list))

    def add_item(self,item):
        print("要添加 %s" % item)
        #1.判断家具的面积
        if item.area > self.free_area:
            print("%s 的面积太大了,无法添加" % item.name)

            return

        #2.将家具的名称添加到列表中
        self.item_list.append(item.name)

        #3.计算剩余面积
        self.free_area -= item.area



#1.创建家具
bed = HouseItem("席梦思",40)
chest =HouseItem("衣柜",2)
table = HouseItem("餐桌",4)

print(bed)
print(chest)
print(table)

#2.创建房子对象
my_home = House("两室一厅", 60)

my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)

运行结果


面向对象的案例(摆放家具)_第1张图片
image.png

你可能感兴趣的:(面向对象的案例(摆放家具))