Sistema de janelas


História

Neste exercício, vais simular um sistema informático baseado em janelas. Vais criar algumas janelas que podem ser movidas e redimensionadas e que mostram o seu conteúdo. A imagem seguinte é representativa dos valores com que vais trabalhar abaixo.

                  <--------------------- 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 enquadram na história de implementar um sistema de janelas simplificado para um sistema operativo:

  • Define uma struct Size
  • Define uma struct Position
  • Define uma classe Window
  • Adiciona um método para redimensionar janelas
  • Adiciona um método para mover janelas
  • Adiciona métodos para atualizar o texto da janela e mostrar informação da janela
  • Cria uma nova Window

Terminologia

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

  • screenSize refere-se ao tamanho do ecrã completo
  • size refere-se ao tamanho das janelas que aparecem no ecrã
  • position refere-se à posição do canto superior esquerdo de cada janela em relação ao canto superior esquerdo do ecrã.

Implementações

Referências