ウィンドウシステム


ストーリー

この演習では、ウィンドウベースのコンピューターシステムをシミュレーションします。移動したりサイズを変更したりできるウィンドウを作成し、その内容を表示します。次の図は、このあと扱う値のイメージを表しています。

                  <--------------------- screenSize.width --------------------->

       ^          ╔════════════════════════════════════════════════════════════╗
       |          ║                                                            ║
       |          ║          position.x,_                                      ║
       |          ║          position.y  \                                     ║
       |          ║                       \<----- size.width ----->            ║
       |          ║                 ^      *──────────────────────┐            ║
       |          ║                 |      │        title         │            ║
       |          ║                 |      ├──────────────────────┤            ║
screenSize.height ║                 |      │                      │            ║
       |          ║            size.height │                      │            ║
       |          ║                 |      │       contents       │            ║
       |          ║                 |      │                      │            ║
       |          ║                 |      │                      │            ║
       |          ║                 v      └──────────────────────┘            ║
       |          ║                                                            ║
       |          ║                                                            ║
       v          ╚════════════════════════════════════════════════════════════╝

タスク

以下は、オペレーティングシステム向けに簡易化したウィンドウシステムを実装するストーリーに合う、タスクの例です。

  • Size構造体を定義する
  • Position構造体を定義する
  • Windowクラスを定義する
  • ウィンドウのサイズを変更するメソッドを追加する
  • ウィンドウを移動するメソッドを追加する
  • ウィンドウのテキストを更新するメソッドと、ウィンドウの情報を表示するメソッドを追加する
  • 新しいウィンドウを作成する

用語

これらは、説明(スタブのコメントを含む)で繰り返し使われる用語についての推奨であり、規則ではありません。

  • screenSizeはディスプレイ全体のサイズを指します
  • sizeはディスプレイに表示されるウィンドウのサイズを指します
  • positionは、ディスプレイの左上隅を基準とした、各ウィンドウの左上隅の位置を指します。

実装

参考