Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

рабочая тетрадь(3)

.pdf
Скачиваний:
42
Добавлен:
10.02.2016
Размер:
5.34 Mб
Скачать

Лабораторная работа 1.6

Создание абстрактного класса и интерфейса

Упражнение 1: Создание и использование абстрактного класса

В текстовом редакторе откройте файл oop\users.php

Создайте и опишите абстрактный класс AUser

В классе AUser объявите абстрактный метод showInfo()

Обновите класс User, унаследовав его от абстрактного класса AUser

Если требуется, внесите в класс User необходимые изменения

Сохраните файл oop\users.php

Запустите браузер

Наберите в адресной строке браузера http://mysite.local/oop/users.php

Проверьте работу скрипта. Если есть ошибки, найдите их и исправьте

Упражнение 2: Создание и использование интерфейса

В текстовом редакторе откройте файл oop\users.php

Создайте и опишите интерфейс ISuperUser

В интерфейсе ISuperUser объявите метод getInfo()

Обновите класс SuperUser, унаследовав его от интерфейса ISuperUser

Создайте и опишите метод getInfo() в классе SuperUser

Метод getInfo() должен возвращать ассоциативный массив, в котором именами элементов массива являются имена свойств объекта, а значениями элементов - значения свойств объекта

Вызовите метод getInfo() для экземпляра класса SuperUser

Используйте функцию var_dump() для просмотра данных, полученных с помощью метода getInfo()

Сохраните файл oop\users.php

Запустите браузер

Наберите в адресной строке браузера http://mysite.local/oop/users.php

Проверьте работу скрипта. Если есть ошибки, найдите их и исправьте

class Mathematics {

final function countSum($a, $b) { echo 'Сумма: ' . $a + $b;

}

}

class Algebra extends Mathematics {

// Возникнет ошибка! function countSum($a, $b) {

= $a + $b;

echo "Сумма: $a и $b = $c";

}

}

final class Breakfast {

function eatFood($food) { echo 'Съели ' . $food;

}

}

// Возникнет ошибка!

class McBreakfast extends Breakfast {

// Описание класса

}

class CookieLover {

public static $loversCount = 0;

function __construct() { ++self::$loversCount;

}

static function welcome() {

echo 'Добро пожаловать в клуб любителей булочек!';

}

}

$vasyaPupkin = new CookieLover(); $frosyaBurlakova = new CookieLover();

echo 'Текущее количество любителей булочек: ' . CookieLover::$loversCount;

echo CookieLover::welcome();

class Helper {

public static function foo() { echo __METHOD__;

}

}

$class = "Helper";

$method = "foo";

$class::$method();

Лабораторная работа 1.7

Использование статических свойств класса

Упражнение 1: Создание статических свойств классов

Задача: посчитать количество созданных экземпляров классов User и SuperUser

В текстовом редакторе откройте файл oop\users.php

Создайте в классах User и SuperUser статические свойства для подсчета количества созданных объектов. Отдельно для каждого класса

Присвойте этим свойствам начальное значение 0

В конструкторах классов инкрементируйте значения данных свойств

В нижней части кода, после создания экземпляров классов, выведите в браузер количество тех и других объектов примерно так:

Всего обычных пользователей: [количество_экземпляров_класса_User] Всего супер-пользователей: [количество_экземпляров_класса_SuperUser]

Сохраните файл oop\users.php

Упражнение 2: Проверка работы скрипта

Запустите браузер

Наберите в адресной строке браузера http://mysite.local/oop/users.php

Проверьте работу скрипта. Если есть ошибки, найдите их и исправьте

Было (проблема)

class A {

public static function whoAmI() { echo __CLASS__;

}

public static function identity() { self::whoAmI();

}

}

class B extends A {

public static function whoAmI() { echo __CLASS__;

}

}

B::identity(); // A

Стало (PHP 5.3)

class A {

public static function whoAmI() { echo __CLASS__;

}

public static function identity() { static::whoAmI();

}

}

class B extends A {

public static function whoAmI() { echo __CLASS__;

}

}

B::identity(); // B

class Human {} $myBoss = new Human();

if($myBoss instanceOf Human) { echo 'Мой босс – человек!';

}

class Woman extends Human {} $englishQueen = new Woman(); if($englishQueen instanceOf Human) {

echo 'Английская королева – тоже человек!';

}

interface LotsOfMoney {}

class ReachPeople implements LotsOfMoney {} $billGates = new ReachPeople(); if($billGates instanceOf LotsOfMoney) {

echo 'У Билла Гейтса много денег!';

}

function __autoload($class_name) { require $class_name . '.php';

}

$obj =

new

MyClass1();

$obj2 =

new

MyClass2();

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]