Borland Pascal. Руководство пользователя


Полиморфические объекты - часть 2


case FigureIDTag of Bee : DragBee; Butterfly : DragButterfly; Dragonfly : DragDragonfly; Mocquito : DragMocquito; . . .

Ну, размещение семнадцати маленьких чемоданчиков внутри од- ного большого является незначительным шагом вперед, но в чем же заключается проблема, ожидающая нас на этом пути?

Что случится, если пользователь инструментального средства определит несколько новых типов крылатых насекомых?

В самом деле, что? Что если пользователь захочет работать со среднеазиатскими фруктовыми мухами? В вашей программе нет типа Fruitfly, поэтому DragIt не содержит метки Fruitfly в операторе case и, следовательно, отвергнет перемещение нового рисунка Fruitfly. Будучи представленным процедуре DragIt, Fruitfly будет выпадать из оператора case в ветвь else этого оператора как "не- распознанное насекомое".

Откровенно говоря, создание для продажи инструментального средства без исходного кода страдает этой проблемой. Инструмен- тальное средство может работать только с типами данных, которые "известны" ему, т.е. которые определены разработчиком инструмен- тального средства. Пользователь инструментального средства оказы- вается бессильным перед расширением его функций в направлении, не предвиденном разработчиком. То, что пользователь купил, то он и получил. И точка.

Выходом из проблемы является использование правил расширен- ной совместимости типов Borland Pascal для объектов и разработка прикладных программ с использованием полиморфических методов. Ес- ли процедура DragIt инструментального средства установлена так, что может работать с полиморфическими объектами, то она будет ра- ботать с любыми объектами, определенными в инструментальном средстве, и с любыми дочерними объектами, которые вы определите сами. Если типы объектов инструментального средства используют виртуальные методы, то объекты и программы инструментального средства могут работать со сделанными вами графическими фигурами в собственных терминах самих фигур. Определенный вами сегодня виртуальный метод может вызываться файлом модуля (.TPU, .TPW или . TPP) инструментального средства, который был написан и оттранс- лирован год назад. Объектно-ориентированное программирование дает такую возможность, а виртуальные методы являются ключом к ней.

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




- Начало -  - Назад -  - Вперед -



Книжный магазин