SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

VB.NETで学ぶ機械語の基礎

VB.NETで仮想CPUを作ろう(12)
- 機械語駆動式 関数電卓を作ろう!

VB.NETで学ぶ機械語の基礎 第12回

ダウンロード VirtualCPU12.zip (384.9 KB)

外部設計

 先ほど列挙した機能(要求仕様)を実現するために、どんなインターフェイスがいるのかを考えます。これを外部設計と呼びます。

 これから要求仕様で定めた個々の機能要件から必要なコントロールと概観を決めていきます。

機能(1)について

 この機能を実現するには、現在の値を表示するためのコントロールと、値を指定するためのコントロールの2つが必要です。

 数値を表示するコントロールは、Labelを使用し、名前は結果を表すResultLabelにしました。

 値を入力するためのコントロールは、TextBoxを使用し、名前はValueBoxにしました。

機能(2)について

 この機能を実現するには、レジスタを選択するコントロールが、計算値の指定用と保存場所の指定用の計2つ必要です。

 両コントロールは選択させるためのものなのでComboBoxとしました。名前は、計算値指定用のコントロールはRegisterCombo、保存場所指定用のコントロールはValueComboとしました。

 なお、各ComboBoxのItemsのプロパティの値に、EAX・EBX・ECX・EDXの4個のレジスタを指定しました。

機能(3)について

 この機能を実現するため、先ほど決定したValueComboItemsのプロパティの値に「即値」を追加しました。

 以上のコントロールを配置すると下図のようになります。

値表示&指定の部分
値表示&指定の部分

機能(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プロパティは、加算演算のボタンの名前はAddButtonTextADD、減算演算のボタンの名前はSubButtonTextSUB、乗算演算のボタンの名前はMulButtonTextMUL、除算演算のボタンの名前はDivButtonTextDIV、にしました。

 あと、数値を指定するためのボタンも必要となります。これらのボタンについては、名前はNumberButton + 数値、Textは数値にしました。

機能(6)について

 インクリメント、デクリメント、Movについても、それらを指示するボタンが必要で、計3個のButtonコントロールを配置する必要があります。

各コントロールの名前とTextプロパティは、インクリメント命令のボタンの名前はIncButtonTextINC、デクリメント命令のボタンの名前はDecButtonTextDEC、Movのボタンの名前はMovButtonTextMOV、にしました。

 以上のコントロールを配置すると下図のようになります。

実行する命令を指定するボタン
実行する命令を指定するボタン

機能(7)について

 この機能については、指示した機械語を並べて表示するためにListBoxにしました。名前は命令のリストなのでCommandListとしました。

機能(8)について

 この機能を実現するには、先ほど決定したCommandListのアイテムの並びを変えるためのボタンが必要となります。そこで筆者は、選択しているアイテムを一つ上にするためのUpButtonと、その逆の動作をするDownButtonを配置しました。下記の図のようになります。

実行する命令を指定するボタン
実行する命令を指定するボタン

機能(9)について

 この機能を実現するコントロールはメニューがよいと筆者は判断しました。理由は、命令する方法は頻繁に変えないと考えたからです。機能(4)と同じく、RadioButtonとして配置しても実現できますが、その方法ではCommandListの表示領域が減ってしまいます。それに、頻繁に変更しないものを常に表示しておくのは無駄だと感じました。これは一つの方針ですが、操作する人の作業に絶対必要なことは表示しておき、オプション的なものはメニューにしてしまうとよいでしょう。

 各メニューの名前は次の通りです。指示する旅に実行を指示するメニューはStepExeMenu、実行する範囲を選択して実行を指示するメニューはRegionMenu、全命令の実行を指示するメニューはExecuteMenu

 なお、各メニューは、どの実行形式を指示しているのかを分かりやすくするために、Checkedプロパティを使用します。以上のコントロールを配置すると下図のようになります。

実行形式を指示するメニュー
実行形式を指示するメニュー

機能(10)と(11)について

 この2つの機能は、テキストエディタによくある機能で、通常メニューで実装されています。一般的なインタフェースと異なった実装をあえて行うメリットはないので、このアプリケーションでもメニューとして配置することにします。

 各メニューの名前は次の通りです。「新規作成」メニューはOpenMenu、「開く」メニューはNewMenu、「閉じる」メニューはCloseMenu、「上書き保存」メニューはSaveMenu、「名前をつけて保存」メニューはNamedSaveMenu

 以上のコントロールを配置すると下図のようになります。

ファイル関係のメニュー
ファイル関係のメニュー

 これで外部設計は終了です。完成画面は下図のようになります。

完成画面
完成画面

 次項では内部設計に入ります。

次のページ
内部設計

この記事は参考になりましたか?

VB.NETで学ぶ機械語の基礎連載記事一覧

もっと読む

この記事の著者

インドリ(インドリ)

分析・設計・実装なんでもありのフリーエンジニア。ブログ「無差別に技術をついばむ鳥(http://indori.blog32.fc2.com/)」の作者です。アドバイザーをしたり、システム開発したり、情報処理技術を研究したりと色々しています。座右の銘は温故知新で、新旧関係なく必要だと考えたものは全て学...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3320 2010/04/27 12:04

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー