Problem Statement
Without clear class identification, the system becomes confusing and hard to maintain. Developers may mix responsibilities, causing bugs and making future changes risky and slow.
┌────────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ ParkingLot │──────▶│ Floor │──────▶│ Spot │ │ Vehicle │
└────────────┘ └───────────┘ └───────────┘ └───────────┘
│ │ │ │
│ │ │ │
└──────────────────────────────────────────────────────────┘This diagram shows the relationship between ParkingLot, Floor, Spot, and Vehicle classes. ParkingLot contains Floors; Floors contain Spots; Spots can be occupied by Vehicles.
### Before: No clear classes, everything mixed parking_data = { 'floors': 3, 'spots_per_floor': 10, 'occupied_spots': [(1, 5), (2, 3)], # floor, spot 'vehicles': ['car1', 'car2'] } ### After: Clear class identification class Vehicle: def __init__(self, license_plate): self.license_plate = license_plate class Spot: def __init__(self, spot_number): self.spot_number = spot_number self.vehicle = None def park_vehicle(self, vehicle): self.vehicle = vehicle def remove_vehicle(self): self.vehicle = None class Floor: def __init__(self, floor_number, spots_count): self.floor_number = floor_number self.spots = [Spot(i+1) for i in range(spots_count)] class ParkingLot: def __init__(self, floors_count, spots_per_floor): self.floors = [Floor(i+1, spots_per_floor) for i in range(floors_count)] def park(self, vehicle): for floor in self.floors: for spot in floor.spots: if spot.vehicle is None: spot.park_vehicle(vehicle) return (floor.floor_number, spot.spot_number) return None