[解決済み] Amazonインタビューの質問です。OO駐車場の設計【終了しました
質問内容
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 になるように名前を変更することが可能です。
関連
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] Java のコア・ライブラリにおける GoF デザイン・パターンの例
-
[解決済み] ポリモーフィズムとは何か、何のためにあり、どのように使われるのか?
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
-
[解決済み】コンストラクターとファクトリーメソッドの比較【終了しました
-
[解決済み] ミュータブルとイミュータブルのオブジェクト
-
[解決済み] 継承と集計の比較【終了しました
-
[解決済み] オブジェクト指向分析・設計によるエレベータのモデル化 [終了しました]
-
[解決済み] カプセル化と抽象化の違い
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] リスコフ置換原理の例として、どのようなものがありますか?
-
[解決済み] ポリモーフィズムとは何か、何のためにあり、どのように使われるのか?
-
[解決済み】「結合度が低く、結合度が高い」とはどういう意味ですか?
-
[解決済み】依存関係逆転の原則とは何ですか、なぜそれが重要なのですか?
-
[解決済み] プライベートとプロテクト-ビジビリティ・グッド・プラクティスの懸念点【終了しました
-
[解決済み] 継承と集計の比較【終了しました
-
[解決済み] nullを返すのは設計ミス?[クローズド]
-
[解決済み] Laravelにおけるリレーションシップの管理、リポジトリパターンへの準拠