轨道
/
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,借助 11 个概念122 个练习 和真人导师指导,学习并掌握 PHP,全部免费。