視窗系統


故事

在這個練習中,你會模擬一個以視窗為基礎的電腦系統。你會建立一些視窗,這些視窗可以移動、調整大小,並顯示自己的內容。下圖呈現了你在下方會用到的這些值。

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

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

任務

這些範例任務契合為作業系統實作簡化視窗系統的故事:

  • 定義一個 Size 結構
  • 定義一個 Position 結構
  • 定義一個 Window 類別
  • 新增一個方法來調整視窗大小
  • 新增一個方法來移動視窗
  • 新增方法來更新視窗文字,並顯示視窗資訊
  • 建立一個新的 Window

術語

以下是說明中(包括 stub 中的註解)反覆出現的術語的建議,而非規則:

  • screenSize指的是整個螢幕的尺寸。
  • size指的是螢幕上這些視窗的尺寸。
  • position指的是每個視窗左上角相對於螢幕左上角的位置。

實作

參考資料