Sistema de janelas


História

Neste exercício, você vai simular um sistema de computador baseado em janelas. Você vai criar algumas janelas que podem ser movidas e redimensionadas e que exibem o próprio conteúdo. A imagem a seguir representa os valores com os quais você vai trabalhar.

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

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

Tarefas

Estas são tarefas de exemplo que se encaixam na história de implementar um sistema de janelas simplificado para um sistema operacional:

  • Defina uma struct Size
  • Defina uma struct Position
  • Defina uma classe Window
  • Adicione um método para redimensionar janelas
  • Adicione um método para mover janelas
  • Adicione métodos para atualizar o texto da janela e exibir as informações da janela
  • Crie uma nova janela

Terminologia

Estas são recomendações, não regras, para a terminologia recorrente nas instruções (incluindo os comentários do stub)

  • screenSize se refere ao tamanho da tela inteira
  • size se refere ao tamanho das janelas que aparecem na tela
  • position se refere à posição do canto superior esquerdo de cada janela em relação ao canto superior esquerdo da tela.

Implementações

Referência