1. ホーム
  2. oop

[解決済み] Amazonインタビューの質問です。OO駐車場の設計【終了しました

2022-08-30 06:32:41

質問内容

OO駐車場を設計しなさい。どのようなクラスと機能を持つのでしょうか。満車、空車、そしてバレットパーキングのためのスポットを見つけることができるようにします。駐車場には3種類の駐車場があります:普通、障害者、コンパクト。

ありがとうございます。

どのように解決するのですか?

歯車を回転させるためのクイックスタートです...

ParkingLotはクラスです。

ParkingSpaceはクラスです。

ParkingSpaceはEntranceを持ちます。

Entranceは位置、より具体的にはEntranceからの距離を持ちます。

ParkingLotSignはクラスです。

ParkingLotはParkingLotSignを持ちます。

ParkingLotは有限の数のParkingSpacesを持っています。

HandicappedParkingSpaceはParkingSpaceのサブクラスです。

RegularParkingSpaceはParkingSpaceのサブクラスです。

CompactParkingSpaceはParkingSpaceのサブクラスです。

ParkingLotはParkingSpaceの配列と、入口から距離のある順に空いたParkingSpaceの配列を保持しています。

ParkingLotSignは.Full()、.Empty()、.Normal()を呼び出すことで、quot;full"、またはquot;empty"、またはblank/normal/Partially occupied"を表示できるよう伝えることが可能です。

Parkerはクラスです。

ParkerはPark()することができます。

パーカーはUnpark()することができます。

ValetはParkerのサブクラスで、ParkingLot.FindVacantSpaceNearestEntrance()を呼び出して、ParkingSpaceを返すことができます。

ParkerはParkingSpaceを持っています。

パーカーはParkingSpace.Take()とParkingSpace.Vacate()を呼び出すことができます。

パーカーはEntrance.Entering()とEntrance.Exiting()を呼び出し、ParkingSpaceはParkingLotが満車かどうかを判断できるように、撮影または明け渡されたときにParkingLotを通知します。 新しく満員になったか、新しく空になったか、新しく満員でないか、空でない場合は、ParkLotSign.Full() か ParkingLotSign.Empty() か ParkingLotSign.Normal() を変更する必要があります。

HandicappedParker は Parker のサブクラスであり、CompactParker は Parker のサブクラス、RegularParker は Parker のサブクラスである可能性があります。(実際はやりすぎかもしれませんが)。

この解決策では、Parker が Car になるように名前を変更することが可能です。