Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.12.2010, 14:39
Аватар для Golovastik
Профессор
Отправить личное сообщение для Golovastik Посмотреть профиль Найти все сообщения от Golovastik
 
Регистрация: 12.08.2010
Сообщений: 221

Полиморфизм и его особенности
Скажите в двух словах, какой главный смысл полиморфизма(читал что 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 'Неизвестная фигура';
        }
    }
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2010, 15:30
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 15:23.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
случайно (из заданого) менять текст и его цвет по событию Mousemove hankmoody Events/DOM/Window 7 12.11.2010 14:23
Массивы удаление элемента и вставка на его место другого mycoding Общие вопросы Javascript 1 19.04.2010 22:30
как обратиться к childNode по его id в div-е, через id родителя kichSman Events/DOM/Window 5 28.10.2009 02:16
Поиск элемента по куску его Id gregOlsener Events/DOM/Window 1 25.08.2008 22:04
Как сделать окошко с возможностью изменения его содержимого? nolka Элементы интерфейса 2 10.07.2008 08:22