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

Полиморфизм не только упрощает взаимодействие между программистами, но и позволяет применять и расширять библиотеки, не требуя при этом доступа к их исходному коду. Некоторые разработчики утверждают, что полиморфизм — это величайший вклад объектно-ориентированного программирования в компьютерную науку.

Наследование в сравнении с композицией

Композиция, представляющая альтернативный вид отношений между объектами, зачастую соперничает с наследованием в качестве методики объектно-ориентиро-

ванного дизайна. В композиции один класс (внешний) хранит экземпляр другого класса (внутреннего) в переменной экземпляра. Внешний класс поручает работу внутреннему классу, вызывая методы над этим экземпляром. Вот базовый подход, представленный обобщенным кодом:

// Внутренний класс является аналогом суперкласса в наследовании public class BackEnd {

public function doSomething ( ) {

}

}

// Внешний класс является аналогом подкласса в наследовании public class FrontEnd {

// Экземпляр внутреннего класса сохраняется в закрытой переменной

// экземпляра, в данном случае в закрытой пременной be

private var be;

// Конструктор создает экземпляр внутреннего класса public function FrontEnd ( ) { be = new BackEnd( );

}

// Этот метод поручает работу методу doSomething( ) класса BackEnd public function doSomething ( ) { be. doSomething( );

}

}

Обратите внимание, что класс FrontEnd не расширяет класс BackEnd. Композиция не требует использования собственного особого синтаксиса, как это происходит с наследованием. Более того, внешний класс может использовать подмножество методов внутреннего класса, все методы или добавлять собственные несвязанные методы. Имена методов во внешнем классе могут полностью совпадать с именами методов во внутреннем классе или совершенно отличаться. Внешний класс может ограничивать, расширять или переопределять возможности внутреннего класса, играя такую же роль, как подкласс в наследовании.

Ранее в этой главе было описано, как с помощью наследования класс Square может ограничивать поведение класса Rectangle. В листинге 6.2 показано, как одно и то же отношение между классами может быть реализовано с использованием композиции вместо наследования. В предлагаемом коде класс Rectangle остался неизмененным. Однако на этот раз класс Square не расширяет Rectangle. Вместо этого в классе Square описана переменная г, содержащая экземпляр класса Rectangle. Фильтрация всех операций над экземпляром, хранящимся в переменной г, происходит через public-методы класса Square. Класс Square переадресует, или делегирует, вызовы методов экземпляру, хранящемуся в переменной г. Обратите внимание, что, поскольку метод setSize ( ) класса Square не перекрывает метод setSize ( ) класса Rectangle, сигнатура метода setSize ( ) класса Square не обязана совпадать с сигнатурой метода setSize ( ) класса Rectangle. В методе setSize ( ) класса Square можно определить один-единственный параметр, в отличие от метода setSize ( ) класса Rectangle, в котором определено два параметра.

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

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

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

Полезные ссылки
Случайные записи
  • 21.03.2011">Руководство по actionscript. часть 2, стр. 030
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 012
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 035
  • 24.02.2011">Руководство по actionscript. часть 7, стр. 011
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 138
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.94
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 037
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.61
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 069
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 019
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 052
  • 05.03.2011">Руководство по actionscript. часть 5, стр. 007
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.122
  • 29.10.2011">Мозаичный текст
  • 22.03.2011">Руководство по actionscript. часть 2, стр. 007
Опрос

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

View Results

Loading ... Loading ...