Руководство по actionscript. часть 1, стр. 114

Ключевым преимуществом динамического связывания и полиморфизма является возможность локализации изменений кода. Полиморфизм позволяет одной части приложения оставаться неизменной даже при изменении другой части. Например, рассмотрим, каким образом мы могли бы нарисовать фигуры, если бы полиморфизм не существовал. Во-первых, нам бы пришлось использовать уникальные имена для каждой версии метода draw ( ):

public class Circle extends Shape { public function drawCircle ( ) {

// Код для отрисовки окружности на экране не показан…

}

}

public class Rectangle extends Shape { public function drawRectangle ( ) { // Код для отрисовки прямоугольника на экране не показан…

}

}

public class Triangle extends Shape { public function drawTriangle ( ) { // Код для отрисовки треугольника на экране не показан…

}

}

Далее внутри метода addShape ( ) класса DrawingApp нам бы пришлось использовать оператор is, чтобы вручную определять класс каждой новой фигуры и вызывать подходящий метод для отрисовки, как показано в следующем коде. Оператор is возвращает значение true в том случае, если указанное выражение принадлежит заданному типу данных; в противном случае возвращается значение false. Типы данных и оператор is будут рассмотрены в гл. 8.

public function addShape (newShape) { if (newShape is Circle) {

newShape. drawCircle( ); } else if (newShape is Rectangle) {

newShape. drawRectangle( ); } else if (newShape is Triangle) {

newShape. drawTriangle( );

}

// Оставшаяся часть метода (код не показан) занималась бы добавлением // новой фигуры во внутренний список фигур, отображаемых на экране

}

Уже сейчас очевидны трудности выбранного подхода. Теперь представьте, что произойдет, если мы добавим 20 новых типов фигур. Для каждого нового типа нам придется вносить изменения в метод addShape( ). В мире, где существует полиморфизм, нам не пришлось бы изменять код, вызывающий метод draw ( ) над каждым экземпляром класса Shape. Поскольку каждый подкласс класса Shape предоставляет собственное подходящее описание метода draw ( ), наше приложение будет «просто работать» без необходимости внесения других изменений.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.170
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.54
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.22
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 121
  • 25.02.2011">Руководство по actionscript. часть 6, стр. 086
  • 04.09.2011">MapleSim 5 – инструмент, позволяющий физически моделировать объекты
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.60
  • 20.03.2011">Руководство по actionscript. часть 2, стр. 080
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 135
  • 06.04.2010">Интересные заметки за январь
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.63
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.43
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 061
  • 16.11.2011">ОбзоркорпусаCarbideSeries 500R
  • 02.03.2011">Руководство по actionscript. часть 5, стр. 102
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...