Oto szybki początek, aby włączyć biegi ...
ParkingLot to klasa.
ParkingSpace to klasa.
ParkingSpace ma wejście.
Wejście ma lokalizację, a dokładniej odległość od wejścia.
ParkingLotSign to klasa.
ParkingLot ma ParkingLotSign.
ParkingLot ma ograniczoną liczbę miejsc parkingowych.
HandicappedParkingSpace jest podklasą obiektu ParkingSpace.
RegularParkingSpace jest podklasą ParkingSpace.
CompactParkingSpace jest podklasą ParkingSpace.
ParkingLot przechowuje tablicę miejsc parkingowych i oddzielną tablicę wolnych miejsc parkingowych w kolejności odległości od wejścia.
ParkingLotSign można nakazać, aby wyświetlał „pełny”, „pusty” lub „pusty / normalny / częściowo zajęty”, wywołując funkcję .Full (), .Empty () lub .Normal ()
Parker to klasa.
Parker może parkować ().
Parker może odparkować ().
Valet jest podklasą Parkera, która może wywołać ParkingLot.FindVacantSpaceNearestEntrance (), która zwraca ParkingSpace.
Parker ma parking.
Parker może wywołać ParkingSpace.Take () i ParkingSpace.Vacate ().
Parker wywołuje Entrance.Entering () i Entrance.Exiting (), a ParkingSpace powiadamia ParkingLot o zajęciu lub zwolnieniu, aby ParkingLot mógł określić, czy jest pełny, czy nie. Jeśli jest nowo zapełniony lub nowo pusty, lub niedawno nie jest pełny lub pusty, powinien zmienić ParkingLotSign.Full () lub ParkingLotSign.Empty () lub ParkingLotSign.Normal ().
HandicappedParker może być podklasą Parker i CompactParker podklasą Parker i RegularParker podklasą Parkera. (właściwie może to być przesada.)
W tym rozwiązaniu istnieje możliwość zmiany nazwy Parkera na Car.