Sistema de ventanas


Historia

En este ejercicio vas a simular un sistema informático basado en ventanas. Vas a crear ventanas que se pueden mover y redimensionar, y que muestran su contenido. La siguiente imagen es representativa de los valores con los que vas a trabajar a continuación.

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

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

Tareas

Estas son tareas de ejemplo que encajan con la historia de implementar un sistema de ventanas simplificado para un sistema operativo:

  • Define un struct Size
  • Define un struct Position
  • Define una clase Window
  • Agrega un método para redimensionar ventanas
  • Agrega un método para mover ventanas
  • Agrega métodos para actualizar el texto de la ventana y mostrar la información de la ventana
  • Crea una nueva Window

Terminología

Estas son recomendaciones, no reglas, para la terminología recurrente en las instrucciones (incluidos los comentarios del stub)

  • screenSize se refiere al tamaño de la pantalla completa
  • size se refiere al tamaño de las ventanas que aparecen en la pantalla
  • position se refiere a la posición de la esquina superior izquierda de cada ventana con respecto a la esquina superior izquierda de la pantalla.

Implementaciones

Referencia