Треки
/
PHP
PHP
/
Вправи
/
Віконна система
Віконна система

Віконна система

Навчальна вправа

Вступ

Класи

Класи є одиницею організації коду в PHP. Код, який описує поведінку предмета або поведінку процесу, можна згрупувати в клас. Функції, що належать класу, за домовленістю називають methods.

<?php

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

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

Класи створюють екземпляри за допомогою ключового слова new: воно виділяє памʼять під екземпляр класу і викликає метод-конструктор класу. Створений екземпляр класу можна присвоїти змінній. Щоб викликати методи екземпляра класу, можна скористатися оператором доступу ->.

<?php

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

Створений екземпляр класу може посилатися на себе самого за допомогою спеціальної змінної $this. Класи також можуть мати властивості: вони поводяться як змінні, привʼязані до екземпляра обʼєкта класу. До цих властивостей можна звертатися зсередини або ззовні.

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

Вказівки

У цій вправі ми будемо моделювати компʼютерну систему, засновану на вікнах. Ми створимо кілька вікон, які можна переміщати та змінювати їхній розмір. Наступне зображення показує значення, з якими ми працюватимемо нижче.

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

1. Визначте властивості вікна програми

Використовуючи наданий каркас класу, визначте властивості для значень y, x, height та width.

<?php

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

2. Визначте початкові значення для вікна програми

Визначте конструктор для ProgramWindow. Він не повинен приймати жодних аргументів, але під час виконання конструктора встановіть типові значення для його властивостей. Він повинен встановити початкові значення y та x у 0. Він повинен встановити початкові height і width відповідно до розміру екрана 600x800.

<?php

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

3. Визначте функцію для зміни розміру вікна

Визначте новий клас у Size.php для класу Size. Він повинен приймати аргументи конструктора, щоб встановити властивості height і width. Крім того, ProgramWindow потребує функції зміни розміру, яка приймає екземпляр обʼєкта Size і оновлює власні властивості.

<?php 

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

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

4. Визначте функцію для переміщення вікна

Визначте новий клас у Position.php для класу Position. Він повинен приймати аргументи конструктора, щоб встановити властивості y і x. Крім того, ProgramWindow потребує функції переміщення, яка приймає екземпляр обʼєкта Position і оновлює власні властивості.

<?php 

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

$window->y;
// => 80
$window->x;
// => 313
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
PHP Exercism

Час розпочати Віконна система?

Зареєструйтеся на Exercism, щоб вивчати й опановувати PHP, а також 11 концепцій122 вправи та справжнє наставництво від людей, і все це безкоштовно.