Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Объектно-ориентированное программирование.PDF
Скачиваний:
208
Добавлен:
01.05.2014
Размер:
3.64 Mб
Скачать

converted to PDF by BoJIoc

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

7.5.7. Маскировка информации

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

Таким образом уменьшается необходимость внутренних связей между программными системами. Мы ранее указывали на «зацепляющийся» характер традиционных программных продуктов как на одну из причин их сложности.

7.6. Издержки наследования

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

7.6.1. Скорость выполнения

Редко программные инструменты общего назначения являются столь же быстрыми, как и аккуратно, «вручную» разработанные специальные системы. Таким образом, унаследованные методы, способные иметь дело с произвольными подклассами, часто медленнее специального кода.

И все же заботы об эффективности часто бывают не к месту 1 . Во-первых, разница не слишком велика. Во-вторых, снижение скорости выполнения может компенсироваться повышением скорости разработки программного обеспечения. И наконец, большинство программистов на самом деле мало знают о том, как распределены временные затраты в их программах. Гораздо лучше создать работающую систему, произвести замеры времени, чтобы обнаружить, на что же, собственно, оно тратится, и улучшить эти части, чем затратить уйму времени, заботясь об эффективности на ранних стадиях проекта.

7.6.2. Размер программ

Использование любой программной библиотеки часто приводит к увеличению размера программ. Этого не происходит в специально разработанных системах. Хотя такие затраты могут быть существенными, по мере уменьшения стоимости памяти размер программы перестает быть критичным. Снизить затраты на разработку и быстро выдать

высококачественный и свободный от ошибок программный код значит сейчас гораздо больше, чем малый размер приложения 2 .

7.6.3. Накладные расходы на посылку сообщений

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

1 Следующая цитата из статьи Билла Вульфа предлагает удачное замечание по поводу важности эффективности: «Во имя эффективности (как правило, эфемерной) совершается больше программных ошибок, чем по какой-либо другой причине, включая полную тупость» [Wulf 1972].