سیستم پنجره‌بندی


داستان

در این تمرین، یک سیستم رایانه‌ای مبتنی بر پنجره‌بندی را شبیه‌سازی می‌کنید. چند پنجره می‌سازید که می‌توانند جابه‌جا شوند، اندازه‌شان تغییر کند و محتویاتشان را نمایش دهند. تصویر زیر نمونه‌ای از مقادیری است که در ادامه با آن‌ها کار خواهید کرد.

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

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

وظایف

این‌ها کارهای نمونه‌ای هستند که با داستان پیاده‌سازی یک سیستم پنجره‌بندی ساده‌شده برای یک سیستم‌عامل همخوانی دارند:

  • یک ساختار Size تعریف کنید
  • یک ساختار Position تعریف کنید
  • یک کلاس Window تعریف کنید
  • متدی برای تغییر اندازه‌ی پنجره‌ها اضافه کنید
  • متدی برای جابه‌جایی پنجره‌ها اضافه کنید
  • متدهایی برای به‌روزرسانی متن پنجره و نمایش اطلاعات پنجره اضافه کنید
  • یک Window جدید بسازید

اصطلاحات

این‌ها توصیه‌هایی هستند، نه قانون، برای اصطلاحات تکرارشونده در دستورالعمل‌ها (از جمله توضیحات استاب)

  • screenSize به اندازه‌ی کل نمایشگر اشاره دارد
  • size به اندازه‌ی پنجره‌هایی اشاره دارد که روی نمایشگر ظاهر می‌شوند
  • position به موقعیت گوشه‌ی بالا سمت چپ هر پنجره نسبت به گوشه‌ی بالا سمت چپ نمایشگر اشاره دارد.

پیاده‌سازی‌ها

منابع