# 7.4. Parking lot > Design a parking lot using object-oriented principles ```java public class ParkingLot { private final int NUMSPOTS = 1000; private final int NORMALHFEE = 0.25; private final Time OPENINGH = new Time(800); private final Time CLOSINGH = new Time(2000); protected ArrayList allCars = new ArrayList(); private int carsInParking = 0; public int hiCar(Time comingtime) { if (carsInParking < NUMSPOTS) { if (comingtime < OPENINGH || comingtime > CLOSINGH) { allCars.push(new Car(comingtime)); carsInParking++; } return 1; } return null; } /* The car can only be retrieved during 8:00 and 20:00, but many days later. */ private int calculateCost(Car myCar) { return (myCar.DEPARTUREH - myCar.ARRIVALH) * NORMALHFEE; } public int byeCar(Car myCar, Time goingtime) { if (carsInParking < 0) { return -1; } if (!allCars.contains(myCar)) { return -1; } if (goingtime < myCar.ARRIVALH) { return -1; } myCar.setDepTime(goingtime); allCars.pop(myCar); carsInParking--; Car.setCost(calculateCost(myCar)); return 1; } } public class Car { private Time ARRIVALH = null; private Time DEPARTUREH = null; private int cost; protected Car(Time arrivaltime) { ARRIVALH = arrivaltime; } public void setDepTime(Time goingtime) { DEPARTUREH = goingtime; } public void setCost(int parkingcost) { cost = parkingcost; } } ``` ## Solution Think about types of vehicles, and spots for these vehicles.