Tracks
/
PHP
PHP
/
Übungen
/
Fenstersystem
Fenstersystem

Fenstersystem

Lernübung

Einführung

Klassen

Klassen sind eine Einheit zur Organisation von Code in PHP. Code, der das Verhalten eines Gegenstands oder das Verhalten eines Prozesses beschreibt, kann in einer Klasse zusammengefasst werden. Funktionen, die einer Klasse zugeordnet sind, nennt man üblicherweise methods.

<?php

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

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

Klassen werden mit dem Schlüsselwort new instanziiert. Das weist Speicher für die Klasseninstanz zu und ruft die Konstruktormethode der Klasse auf. Instanziierte Klassen können einer Variable zugewiesen werden. Um die Methoden einer Klasseninstanz aufzurufen, verwenden wir den Zugriffsoperator ->.

<?php

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

Eine instanziierte Klasse kann über die spezielle Variable $this auf ihre eigene Instanz verweisen. Klassen können außerdem Eigenschaften haben. Sie wirken wie Variablen, die an die Instanz des Klassenobjekts gebunden sind. Auf diese Eigenschaften kann intern oder extern zugegriffen werden.

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

Anleitung

In dieser Übung simulierst du ein fensterbasiertes Computersystem. Du erstellst einige Fenster, die verschoben und in ihrer Größe geändert werden können. Das folgende Bild veranschaulicht die Werte, mit denen du unten arbeiten wirst.

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

1. Definiere die Eigenschaften des Programmfensters

Definiere mit dem vorgegebenen Klassengerüst die Eigenschaften für die Werte y, x, height und width.

<?php

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

2. Definiere die Anfangswerte für das Programmfenster

Definiere eine Konstruktorfunktion für ProgramWindow. Sie sollte keine Argumente entgegennehmen, aber während der Ausführung des Konstruktors die Standardwerte für ihre Eigenschaften setzen. Sie sollte die anfänglichen Werte für y und x auf 0 setzen. Sie sollte die anfängliche height und width auf eine Bildschirmgröße von 600x800 setzen.

<?php

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

3. Definiere eine Funktion zum Ändern der Fenstergröße

Definiere in Size.php eine neue Klasse für eine Size-Klasse. Ihre Konstruktorargumente sollten die Eigenschaften height und width setzen. Außerdem braucht ProgramWindow eine resize-Funktion, die die Instanz des Size-Objekts entgegennimmt und die eigenen Eigenschaften aktualisiert.

<?php 

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

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

4. Definiere eine Funktion zum Verschieben des Fensters

Definiere in Position.php eine neue Klasse für eine Position-Klasse. Ihre Konstruktorargumente sollten die Eigenschaften y und x setzen. Außerdem braucht ProgramWindow eine move-Funktion, die die Instanz des Position-Objekts entgegennimmt und die eigenen Eigenschaften aktualisiert.

<?php 

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

$window->y;
// => 80
$window->x;
// => 313
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
PHP Exercism

Bereit, mit Fenstersystem zu starten?

Melde dich bei Exercism an, um PHP mit 11 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.