Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Полиморфизм и его особенности 
:(
    Опции темы
Golovastik
Дата 7.12.2010, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 19.7.2009

Репутация: нет
Всего: 0



Скажите в двух словах, какой главный смысл полиморфизма(читал что 1 интерфейс и множество реализаций), и приведенный код нже демонстрирует ли полиморфизм?

Код

<?php header('content-type: text/html;charset=utf-8'); ?>
<?
    // Класс Фигуры (какой фигуры - неизвестно. просто фигуры)
    abstract class Figure {
        abstract public function Draw(); // абстрактный метод «Нарисовать фигуру»
    }

    // Класс Треугольника
    class Triangle extends Figure {
        public function Draw() {  // метод «Нарисовать треугольник»
            echo 'рисуем треугольник '.'<br/>';
         }
    }

    // Класс Эллипса
    class Ellipse extends Figure {
        public function Draw() {  // метод «Нарисовать эллипс»
            echo 'рисуем эллипс '.'<br/>';
        }
    }
    
    // Класс Круга
    class Circle {
        public function Draw() {  // метод «Нарисовать круг»
            echo 'рисуем круг '.'<br/>';
        }
    }

    // Класс Прямоугольника
    class Rectangle extends Figure {
        public function Draw() {  // метод «Нарисовать прямоугольник»
            echo 'рисуем прямоугольник '.'<br/>';
        }
    }



    // обыкновенная функция рисования фигуры
    function drawFigure($fig) {
        if ($fig instanceof Figure) {
            $fig->Draw(); // тут мы на этапе написания этой функции не знаем,
                          // какая именно фигура будет рисоваться, а интерпретатор
                          // php это знает только на этапе выполнения скрипта
        } else {
            echo 'Неизвестная фигура';
        }
    }


    // создадим фигуры
    $triangle  = new Triangle();  // треугольник
    $ellipse   = new Ellipse();   // эллипс
    $rectangle = new Rectangle(); // прямоугольник
    $circle    = new Circle();    // круг
    
    // нарисуем прямоугольник
    drawFigure($rectangle);
    
    // нарисуем эллипс
    drawFigure($ellipse);
    
    // попытаемся нарисовать круг
    drawFigure($circle);
?>


НЕ понятно вот это место:
Код

//Скажите $fig в этот параметр передаются объекты в качестве параметра
//и вот эта переменная $fig превращается в объект?
     function drawFigure($fig) { 
        if ($fig instanceof Figure) {     //А здесь сравнивается является ли объект под названием  $fig
//объектом класса под названием Figure?
     $fig->Draw(); 
                         } else {
            echo 'Неизвестная фигура';
        }
    }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0423 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.