Tracks
/
PHP
PHP
/
Ejercicios
/
Sistema de ventanas
Sistema de ventanas

Sistema de ventanas

Ejercicio de aprendizaje

Introducción

Clases

Las clases son una unidad de organización del código en PHP. El código que representa el comportamiento de un elemento o el comportamiento de un proceso se puede agrupar en una clase. Las funciones que se asignan a una clase se llaman methods por convención.

<?php

class Door
{
    function lock()
    {
        // ...
    }

    function unlock()
    {
        // ...
    }
}

Las clases se instancian con la palabra clave new, lo que asigna memoria para la instancia de la clase y llama al método constructor de la clase. Las clases instanciadas se pueden asignar a una variable. Para invocar los métodos de una instancia de clase, podemos usar el operador de acceso ->.

<?php

$a_door = new Door();
$a_door->lock();
$a_door->unlock();

Una clase instanciada puede referirse a su propia instancia usando la variable especial $this. Las clases también pueden tener propiedades, que actúan como variables ligadas a la instancia del objeto de la clase. Se puede hacer referencia a estas propiedades de forma interna o externa.

<?php

class Car
{
    public $color;

    function __construct($color)
    {
        $this->color = $color;
    }

    function getColor()
    {
        return $this->color;
    }
}

$a_car = new Car("red");
$a_car->color; // => "red" by accessing the property
$a_car->getColor(); // => "red" by invoking the instance method

Instrucciones

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

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

1. Define las propiedades de ProgramWindow

Usando el esqueleto de clase que se proporciona, proporciona las propiedades para los valores y, x, height y width.

<?php

$window = new ProgramWindow();
$window->y; // => null
$window->x; // => null
$window->height; // => null
$window->width; // => null

2. Define los valores iniciales de la ventana del programa

Define una función constructora para ProgramWindow. No debe recibir argumentos, pero durante la ejecución del constructor establece los valores predeterminados de sus propiedades. Debe establecer los valores iniciales de y y x en 0. Debe establecer los valores iniciales de height y width en un tamaño de pantalla de 600x800.

<?php

$window = new ProgramWindow();
$window->y; // => 0 
$window->x; // => 0
$window->height; // => 600
$window->width; // => 800

3. Define una función para cambiar el tamaño de la ventana

Define una clase nueva en Size.php para una clase Size. Debe recibir argumentos del constructor para establecer las propiedades height y width. Además, ProgramWindow requiere una función de cambio de tamaño, que recibe la instancia del objeto Size y actualiza sus propias propiedades.

<?php 

$window = new ProgramWindow();
$size = new Size(764, 1080);
$window->resize($size)

$window->height;
// => 764
$window->width;
// => 1080

4. Define una función para mover la ventana

Define una clase nueva en Position.php para una clase Position. Debe recibir argumentos del constructor para establecer las propiedades y y x. Además, ProgramWindow requiere una función de movimiento, que recibe la instancia del objeto Position y actualiza sus propias propiedades.

<?php 

$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)

$window->y;
// => 80
$window->x;
// => 313
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
PHP Exercism

¿Todo listo para empezar Sistema de ventanas?

Regístrate en Exercism para aprender y dominar PHP con 11 conceptos122 ejercicios y mentoría humana real, todo gratis.