рабочая тетрадь(3)
.pdfЛабораторная работа 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(); |
