エレベーターシステムの設計
6月9日。 2018 – 6 min read
エレベーターシステムのソフトウェア設計
開発者のほとんどは、キャリアを通じていくつかのモジュールに携わってきました。 しかし、私は誰もが学ぶことができると信じています。
Note: For iOS interview Questions , check this link – Top iOS Interview Questions You Must Prepare In 2018
Panel.Of iOS interview Questions , for iOS interview Questions , check this link – Top iOS Interview Questions You Must Prepare In 2018
Panel: エレベータシステムの設計を教えてください
You: これはかなり広い質問です。
アプリケーション開発者の観点から、我々は、クラスとその関係、クラス図&シーケンスフローを伝える必要があります。
一般的な観点では、パネルがバックエンド設計に興味を持っている可能性があるので、彼らがあなたに何を期待しているのか、彼と明確にする必要があります。
エレベーター制御システムのスナップショット
私たちのエレベーターは、すべてのエレベーター システムが持っている基本機能、たとえば、上下に移動、ドアの開閉、そしてもちろん、乗客をピックアップすることです。 各階に対応したかご(Lift)呼び出しボタンがかごの中にあります。 最上階とロビーを除く各階には、乗客が上り下りのために呼び出すためのホール呼び出しボタンが2つあります。 最上階には下りホールの呼び出しボタンが1つ、ロビーには上りホールの呼び出しボタンが1つだけあります。 各階に停車するとドアが開き、現在進行している方向を示す行灯が点灯し、乗客は現在の進行方向を知ることができる。 フロア間の移動は速いが、早めに減速して目的のフロアに停車できるようにする。 8529>
すべてのシステムは、何らかの目的でシステムを使用する人間または自動化された行為者と相互作用し、人間も行為者もシステムが予測可能な方法で動作することを期待している。
エレベーターシステムの現在の要件に基づいて、図1に示すように7つのユースケースがある:
- Process Car/Lift Calls.(英語)。 このユースケースには、いくつかのシナリオが含まれており、それはこの論文の後のセクションで詳しく説明します。 これらのシナリオは、エレベーターが乗客からリフト/カーコールを受信し、リフト/カーコールボタンのライトをオンまたはオフにし、システム制御部に格納されているリフト/カーコールの記録を更新するなど、
- ホールコールを処理することです。 リフト/カーコール処理と同様に、このユースケースは、エレベーターが乗客からホールコールを受信し、ホールコールボタンのライトをオンまたはオフにし、システム制御部品、等
- カードを移動/停止することを含んでいます。 エレベーターの主な機能は、駆動速度の変更、停止の決定を行う方法、およびカーの駆動方向が含まれます
- 移動方向を示す。 エレベーターは、乗客が車両に入るかどうかを決定することができるように、車両の現在の移動方向を知らせるために、このメカニズムを持っている必要があります”
- 車の位置を示す。 同様に、エレベーターは、乗客がカーを残すことを決定することができるように彼/彼女の目的の階に到達したかどうかを知ることができる必要があります.
- オープン/クローズドア。
- ドアの開閉:エレベータは、乗客が乗り降りするために、ドアを開閉することができなければなりません。 このユースケースの機能領域は、ドアが閉まり乗客が乗り込もうとするときに、乗客がドアの反転を行えるようにする必要があります。
- 緊急ブレーキを作動させる。
エレベーター システムの理解のこの多くで、私たちは、システムを設計するために必要なクラスの識別を開始できます。 エレベーターシステムにおける中央制御オブジェクト。 ElevatorControlは、システム内の他のすべてのオブジェクトと通信し、制御します。 システム内の2つのドアがあり、「神」オブジェクト – ElevatorControl – 開閉するためにドアを命ずる。
Controllerクラスに命令する。
- DoorControlは、DoorMotorの動作を制御する。 500>
- DriveControlはエレベーターのDriveを制御し、メイン・モーターとしてカーを上下させ、必要に応じて階で停止させます。 HallButtonControlは、ホールコールボタンの押下制御を受け付けるだけでなく、ホールコールライトにフィードバックを与えます。
- CarButtonControlは、各フロアに1つあり、すべてリフト/カーに配置されます。 500>
- CarPositionIndicatorは、乗客がリフト/カーの現在の位置を知ることができるように、CarPositionIndicatorに値を与えます。 各リフト/カーのために1つのディスパッチャがあり、その主な機能はリフト/カーの目標移動方向と目的地を計算し、またドアのための開時間を維持することである。 ディスパッチャーはランタンコントロール以外のシステム内のほぼすべての制御オブジェクトと相互作用します。
ここまでですべてがうまくいっていると思いますが、シーケンス図ですべてを理解しましょう。
シーケンス フロー
口頭で説明するのは難しいかもしれませんが、どのように動作するかを明確に理解していれば、いくつかのシーケンス図を描いて、並行していくつかの例で流れを説明してみることができます。
1.1 エレベーターが乗客の目的地と同じ方向に移動している場合
1.2 エレベーターが乗客の目的地と反対方向に移動している場合
2.エレベータを利用する。 車を動かす/止める:
3. 移動方向の指示:
4. 非常ブレーキの発動:この使用例では、5種類のシナリオがあります:
1. 車が停止するように命令されたが、希望の階で停止しない場合、非常ブレーキが作動する。
2. 車が移動するように命令されたが、移動しない場合、非常ブレーキが作動する。
3. 階で停止しているときにドアを開けるように指令されたが、ドアが開かない場合、非常ブレーキが作動する。
4. 車が動いているときにドアが開く場合、非常ブレーキが作動する。
5.
5の場合、シーケンス図を1枚だけ掲載します。
I expects of most things become picture in your mind and easy to remember as well as explain.The case 6: 非常ブレーキ-エレベーターの昇降が限界に達した場合
I expects of the most things are becoming picture in your mind and easy to remember and as well as explain.The case 6: 非常ブレーキは、昇降が限界に達した場合
説明が気に入ることを祈っています。 また、設計に関する質問がありましたら、フォローをお願いします
。