[解決済み] オブジェクト指向分析・設計によるエレベータのモデル化 [終了しました]
2022-06-01 07:43:01
質問
オブジェクト指向の設計と分析に関して、面接や授業でよく使われるような質問があります。これはそのうちの 1 つです。残念ながら、大学時代の私の OOP 教授は実際にそれに対する答えを与えなかったので、私は不思議に思っていました。
問題は次のとおりです。エレベーターバンクをシミュレートするために使用されるオブジェクト/メソッドの基本セットを設計してください。オブジェクトとその属性/メソッドは何でしょうか。
議論のために、私たちのビルが20階建てであると仮定します。最下層はロビーで、2階は駐車場に接続しています(したがって、人々は最下層または2階のどちらかでビルに出入りすることになります)。エレベーターバンクには3つのエレベーターシャフトがあり、シャフトごとに1台のエレベーターがあります。
オブジェクト指向モデルでこれをモデル化する正しい方法は何でしょうか?
どのように解決するのですか?
まず、エレベータクラスがあります。これは、方向(上、下、立ち、メンテナンス)、現在の階、方向でソートされた階要求のリストを持っています。このエレベータからリクエストを受け取ります。
次に、銀行があります。これは、エレベーターを含み、フロアからの要求を受け取ります。これらは、すべてのアクティブなエレベーター(メンテナンス中ではない)にスケジュールされます。
というようなスケジューリングになります。
- 利用可能であれば、このフロアのために立っているエレベータを選ぶ。
- else このフロアに移動するエレベータを選びます。
- else 他の階で立っているエレベータを選ぶ。
- else 最も負荷の低いエレベータを選びます。
各エレベータは状態のセットを持っています。
- メンテナンス:エレベーターは外部からの信号には反応しません(自分自身の信号のみ)。
- スタンド:エレベーターはフロアに固定されている。呼び出しを受けた場合。そして、エレベーターがその階にいれば、扉が開く。他の階にいる場合は、その方向に移動します。
- 上:エレベーターは上へ移動します。ある階に到達するたびに、停止する必要があるかどうかをチェックする。停止する必要がある場合は停止し、ドアを開ける。そして、一定時間待って、ドアを閉じます(何か動いていない限り)。次に、その階をリクエストリストから削除し、別のリクエストがあるかどうかをチェックします。もしあれば、エレベーターは再び動き出します。そうでない場合は、スタンド状態になります。
- 下:上と同じですが、逆方向です。
追加の信号があります。
- アラームが鳴ります。エレベーターが停止します。そして、ある階であればドアが開き、リクエストリストがクリアされ、リクエストがバンクに戻されます。
- ドアオープン エレベーターがある階にあり、移動していない場合、ドアを開きます。
-
ドアを閉じます。ドアが開いている場合は閉じます。
EDIT 特に高層ビルの場合、最下層/1階から出発しないエレベーターがあります。
min_floor & max_floor は、エレベーターの2つの追加属性です。
関連
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
-
[解決済み] インターフェースとベースクラス
-
[解決済み] コヒーシ ョンとカップリングの違い
-
[解決済み】依存関係逆転の原則とは何ですか、なぜそれが重要なのですか?
-
[解決済み] ProxyパターンとDecoratorパターンの違い
-
[解決済み] プライベートとプロテクト-ビジビリティ・グッド・プラクティスの懸念点【終了しました
-
[解決済み] 窓から猫を放り投げる
-
[解決済み] Dependency InjectionはEncapsulationを犠牲にしなければならないのか?
-
[解決済み] オブジェクト指向プログラミングにおける「インターフェイス」の定義とは?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Inversion of Controlとは?
-
[解決済み] インターフェースとベースクラス
-
[解決済み] Java のコア・ライブラリにおける GoF デザイン・パターンの例
-
[解決済み] ポリモーフィズムとは何か、何のためにあり、どのように使われるのか?
-
[解決済み] 抽象クラスの代わりにインターフェイスを使用する場合とその逆は?
-
[解決済み] 実装ではなくインターフェースにプログラムする」とはどういう意味ですか?
-
[解決済み] プライベートとプロテクト-ビジビリティ・グッド・プラクティスの懸念点【終了しました
-
[解決済み] 継承と集計の比較【終了しました
-
[解決済み] オブジェクト指向分析・設計によるエレベータのモデル化 [終了しました]
-
[解決済み] Dependency InjectionはEncapsulationを犠牲にしなければならないのか?