Track
/
PHP
PHP
/
Esercizi
/
Sistema a finestre
Sistema a finestre

Sistema a finestre

Esercizio di apprendimento

Introduzione

Classi

Le classi sono un'unità di organizzazione del codice in PHP. Il codice che rappresenta il comportamento di un elemento, o il comportamento di un processo, può essere raggruppato in una classe. Le funzioni assegnate a una classe vengono chiamate methods per convenzione.

<?php

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

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

Le classi si istanziano con la parola chiave new: questo alloca la memoria per l'istanza della classe e chiama il metodo costruttore della classe. Le classi istanziate possono essere assegnate a una variabile. Per invocare i metodi di un'istanza di una classe, possiamo usare l'operatore di accesso ->.

<?php

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

Una classe istanziata può riferirsi alla propria istanza usando la variabile speciale $this. Le classi possono anche avere proprietà: queste si comportano come variabili legate all'istanza dell'oggetto classe. A queste proprietà si può fare riferimento dall'interno o dall'esterno.

<?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

Istruzioni

In questo esercizio simulerai un sistema informatico basato su finestre. Creerai alcune finestre che possono essere spostate e ridimensionate. L'immagine che segue è rappresentativa dei valori con cui lavorerai qui sotto.

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

1. Definisci le proprietà della finestra del programma

Usando lo scaffold di classe fornito, fornisci le proprietà per i valori y, x, height e width.

<?php

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

2. Definisci i valori iniziali della finestra del programma

Definisci un costruttore per ProgramWindow. Non deve accettare argomenti, ma durante l'esecuzione del costruttore imposta i valori predefiniti delle sue proprietà. Deve impostare i valori iniziali di y e x a 0. Deve impostare height e width iniziali a una dimensione dello schermo di 600x800.

<?php

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

3. Definisci una funzione per ridimensionare la finestra

Definisci una nuova classe in Size.php per una classe Size. Deve accettare argomenti del costruttore per impostare le proprietà height e width. Inoltre ProgramWindow richiede una funzione di ridimensionamento, che riceve l'istanza dell'oggetto Size e aggiorna le proprie proprietà.

<?php 

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

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

4. Definisci una funzione per spostare la finestra

Definisci una nuova classe in Position.php per una classe Position. Deve accettare argomenti del costruttore per impostare le proprietà y e x. Inoltre ProgramWindow richiede una funzione di spostamento, che riceve l'istanza dell'oggetto Position e aggiorna le proprie proprietà.

<?php 

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

$window->y;
// => 80
$window->x;
// => 313
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
PHP Exercism

Vuoi iniziare Sistema a finestre?

Iscriviti a Exercism per imparare e padroneggiare PHP con 11 concetti122 esercizi e il mentoring di persone reali, tutto gratis.