外部設計
先ほど列挙した機能(要求仕様)を実現するために、どんなインターフェイスがいるのかを考えます。これを外部設計と呼びます。
これから要求仕様で定めた個々の機能要件から必要なコントロールと概観を決めていきます。
機能(1)について
この機能を実現するには、現在の値を表示するためのコントロールと、値を指定するためのコントロールの2つが必要です。
数値を表示するコントロールは、Labelを使用し、名前は結果を表すResultLabelにしました。
値を入力するためのコントロールは、TextBoxを使用し、名前はValueBoxにしました。
機能(2)について
この機能を実現するには、レジスタを選択するコントロールが、計算値の指定用と保存場所の指定用の計2つ必要です。
両コントロールは選択させるためのものなのでComboBoxとしました。名前は、計算値指定用のコントロールはRegisterCombo、保存場所指定用のコントロールはValueComboとしました。
なお、各ComboBoxのItemsのプロパティの値に、EAX・EBX・ECX・EDXの4個のレジスタを指定しました。
機能(3)について
この機能を実現するため、先ほど決定したValueComboのItemsのプロパティの値に「即値」を追加しました。
以上のコントロールを配置すると下図のようになります。
機能(4)について
この機能は、何進数で数値を表示するかを意味します。より具体的に言えば「2、8、10、16進のうちどれか一つを選んで数値を表示する」ということです。
Windowsで何かを選択する場合に使用するコントロールは、複数のRadioButtonとGruopBoxです。各コントロールの名前は、複数のGroupBoxはNumberGroup、16進数を指定するRadioButtonはHexOption、10進数を指定するRadioButtonはDecimalOption、8進数を指定するRadioButtonはOctOption、2進数を指定するRadioButtonはBinaryOption、にしました。
以上のコントロールを配置すると下図のようになります。
機能(5)について
機械語で四則演算を行うには、それを指示するボタンが必要です。つまり、4個のButtonコントロールを配置する必要があります。
各コントロールの名前とTextプロパティは、加算演算のボタンの名前はAddButton、TextはADD、減算演算のボタンの名前はSubButton、TextはSUB、乗算演算のボタンの名前はMulButton、TextはMUL、除算演算のボタンの名前はDivButton、TextはDIV、にしました。
あと、数値を指定するためのボタンも必要となります。これらのボタンについては、名前はNumberButton + 数値、Textは数値にしました。
機能(6)について
インクリメント、デクリメント、Movについても、それらを指示するボタンが必要で、計3個のButtonコントロールを配置する必要があります。
各コントロールの名前とTextプロパティは、インクリメント命令のボタンの名前はIncButton、TextはINC、デクリメント命令のボタンの名前はDecButton、TextはDEC、Movのボタンの名前はMovButton、TextはMOV、にしました。
以上のコントロールを配置すると下図のようになります。
機能(7)について
この機能については、指示した機械語を並べて表示するためにListBoxにしました。名前は命令のリストなのでCommandListとしました。
機能(8)について
この機能を実現するには、先ほど決定したCommandListのアイテムの並びを変えるためのボタンが必要となります。そこで筆者は、選択しているアイテムを一つ上にするためのUpButtonと、その逆の動作をするDownButtonを配置しました。下記の図のようになります。
機能(9)について
この機能を実現するコントロールはメニューがよいと筆者は判断しました。理由は、命令する方法は頻繁に変えないと考えたからです。機能(4)と同じく、RadioButtonとして配置しても実現できますが、その方法ではCommandListの表示領域が減ってしまいます。それに、頻繁に変更しないものを常に表示しておくのは無駄だと感じました。これは一つの方針ですが、操作する人の作業に絶対必要なことは表示しておき、オプション的なものはメニューにしてしまうとよいでしょう。
各メニューの名前は次の通りです。指示する旅に実行を指示するメニューはStepExeMenu、実行する範囲を選択して実行を指示するメニューはRegionMenu、全命令の実行を指示するメニューはExecuteMenu。
なお、各メニューは、どの実行形式を指示しているのかを分かりやすくするために、Checkedプロパティを使用します。以上のコントロールを配置すると下図のようになります。
機能(10)と(11)について
この2つの機能は、テキストエディタによくある機能で、通常メニューで実装されています。一般的なインタフェースと異なった実装をあえて行うメリットはないので、このアプリケーションでもメニューとして配置することにします。
各メニューの名前は次の通りです。「新規作成」メニューはOpenMenu、「開く」メニューはNewMenu、「閉じる」メニューはCloseMenu、「上書き保存」メニューはSaveMenu、「名前をつけて保存」メニューはNamedSaveMenu。
以上のコントロールを配置すると下図のようになります。
これで外部設計は終了です。完成画面は下図のようになります。
次項では内部設計に入ります。
