class WinDoor:
"""Класс для окон и дверей"""
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
class Room:
"""Класс комнаты, включающий в себя объекты проемов (композиция)"""
def __init__(self, length, width, height):
self.length = length
self.width = width
self.height = height
self.openings = [] # Композиция: список объектов WinDoor
def add_opening(self, width, height):
"""Добавление окна или двери"""
self.openings.append(WinDoor(width, height))
def full_wall_area(self):
"""Полная площадь 4-х стен без вычета окон и дверей"""
return 2 * (self.length + self.width) * self.height
def wallpaper_area(self):
"""Итоговая площадь под оклейку обоями"""
total_openings_area = sum(op.area() for op in self.openings)
return self.full_wall_area() - total_openings_area
# Пример использования:
# Комната: длина 6 м, ширина 4 м, высота 2.7 м
my_room = Room(length=6, width=4, height=2.7)
# Добавляем одно окно (1.5 x 1.4 м) и одну дверь (0.9 x 2.0 м)
my_room.add_opening(1.5, 1.4)
my_room.add_opening(0.9, 2.0)
print(f"Полная площадь стен: {my_room.full_wall_area()} кв. м")
print(f"Площадь для оклейки обоями: {my_room.wallpaper_area()} кв. м")