-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHouse.py
More file actions
68 lines (54 loc) · 1.77 KB
/
Copy pathHouse.py
File metadata and controls
68 lines (54 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""Design and implement a complex object like a House using a step-by-step Builder
pattern, allowing different representations of the house (wooden, brick, etc.). """
class House:
def __init__(self):
self.address = None
self.size = None
self.material = None
self.numBedrooms = None
self.numBathrooms = None
def __str__(self):
return f"House at {self.address}, size: {self.size} sqft,material:{self.material}"
class WoodenHouse(House):
def __init__(self):
super().__init__()
self.material = "wood"
class BrickHouse(House):
def __init__(self):
super().__init__()
self.material = "brick"
class HouseBuilder:
def __init__(self):
self.house = None
def create_house(self, house_type):
if house_type == "wood":
self.house = WoodenHouse()
elif house_type == "brick":
self.house = BrickHouse()
else:
raise ValueError("Invalid house type")
def set_address(self, address):
self.house.address = address
def set_size(self, size):
self.house.size = size
def set_num_bedrooms(self, num_bedrooms):
self.house.numBedrooms = num_bedrooms
def set_num_bathrooms(self, num_bathrooms):
self.house.numBathrooms = num_bathrooms
def get_house(self):
return self.house
builder = HouseBuilder()
builder.create_house("wood")
builder.set_address("123 Main St")
builder.set_size(2000)
builder.set_num_bedrooms(3)
builder.set_num_bathrooms(2)
wooden_house = builder.get_house()
print(wooden_house)
builder.create_house("brick")
builder.set_address("456 Elm St")
builder.set_size(2500)
builder.set_num_bedrooms(4)
builder.set_num_bathrooms(3)
brick_house = builder.get_house()
print(brick_house)