Parcours
/
PHP
PHP
/
Exercices
/
Système de fenêtrage
Système de fenêtrage

Système de fenêtrage

Exercice d'apprentissage

Introduction

Les classes

Les classes sont une unité d'organisation du code en PHP. Le code qui décrit le comportement d'un élément ou d'un processus peut être regroupé dans une classe. Les fonctions rattachées à une classe sont appelées methods par convention.

<?php

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

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

Les classes s'instancient avec le mot-clé new, ce qui alloue la mémoire nécessaire à l'instance de la classe et appelle la méthode constructeur de la classe. Une classe instanciée peut être affectée à une variable. Pour appeler les méthodes d'une instance de classe, on peut utiliser l'opérateur d'accès ->.

<?php

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

Une classe instanciée peut faire référence à sa propre instance grâce à la variable spéciale $this. Les classes peuvent aussi avoir des propriétés : celles-ci se comportent comme des variables liées à l'instance de l'objet de la classe. Ces propriétés peuvent être référencées depuis l'intérieur ou depuis l'extérieur de la classe.

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

Instructions

Dans cet exercice, on va simuler un système informatique à base de fenêtres. Tu vas créer des fenêtres que l'on peut déplacer et redimensionner. L'image suivante illustre les valeurs avec lesquelles tu vas travailler ci-dessous.

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

1. Définis les propriétés de la fenêtre de programme

À l'aide du squelette de classe fourni, définis les propriétés correspondant aux valeurs y, x, height et width.

<?php

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

2. Définis les valeurs initiales de la fenêtre de programme

Définis une fonction constructeur pour ProgramWindow. Elle ne doit prendre aucun argument, mais pendant l'exécution du constructeur, définis les valeurs par défaut de ses propriétés. Elle doit initialiser les valeurs y et x à 0. Elle doit initialiser height et width à une taille d'écran de 600x800.

<?php

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

3. Définis une fonction pour redimensionner la fenêtre

Définis une nouvelle classe dans Size.php pour une classe Size. Elle doit prendre des arguments de constructeur pour définir les propriétés height et width. De plus, ProgramWindow nécessite une fonction de redimensionnement, qui reçoit l'instance de l'objet Size et met à jour ses propres propriétés.

<?php 

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

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

4. Définis une fonction pour déplacer la fenêtre

Définis une nouvelle classe dans Position.php pour une classe Position. Elle doit prendre des arguments de constructeur pour définir les propriétés y et x. De plus, ProgramWindow nécessite une fonction de déplacement, qui reçoit l'instance de l'objet Position et met à jour ses propres propriétés.

<?php 

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

$window->y;
// => 80
$window->x;
// => 313
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
PHP Exercism

Prêt à commencer Système de fenêtrage ?

Inscris-toi sur Exercism pour apprendre et maîtriser PHP avec 11 concepts122 exercices, et un vrai mentorat humain, le tout gratuitement.