Статические методы против виртуальных методов
Состав работы
|
|
|
|
Необходимые программы
Работа представляет собой zip архив с файлами (распаковать онлайн), которые открываются в программах:
- Microsoft Word
Описание
Это весьма непростой и спорный вопрос. В "чистых" язы-
ках, использующих подход OOP, статические методы не существу-
ют; все методы являются виртуальными. И сторонник "чистого"
подхода OOP мог бы сказать, что все методы в нашей иерархии
объектов должны быть виртуальными именно по той причине, что
виртуальные методы стоят на первом месте. Такой аргумент мож-
но было бы признать справедливым, но еще больше истины в том,
что делать все методы только виртуальными просто непрактично
- по крайней мере, тогда, когда Вы программируете на Turbo
Pascal.
На наш взгляд, имеются два убедительных довода в пользу
того, чтобы везде, где это только возможно, использовать ста-
тические методы. Во-первых, интеллектуальный компоновщик
Turbo Pascal не может отменять неиспользуемые виртуальные ме-
тоды, а только неиспользуемые статические методы; простой акт
ввода объекта данного типа приводит к тому, что в программу
должны быть скомпонованы все виртуальные методы этого объек-
та. И во-вторых, чем больше виртуальных методов имеет объект,
тем обширнее его таблица виртуальных методов VMT: объект,
имеющий 100 виртуальных методов, использовал бы более 400
байт пространства в сегменте данных. В системе Object
Professional нет ни одного объекта, который бы имел так много
виртуальных методов, но если бы все методы были виртуальными,
в ней бы имелся не один такой объект.
Полагая, что из практических соображений невозможно во
всех случаях применять только одни виртуальные методы, мы
стоим на тех позициях, что целесообразно создавать виртуаль-
ные методы только в следующих трех случаях:
а) если мы знаем, что он должен быть отменен объек-
том-потомком,
б) если метод предназначен для того, чтобы быть отменен-
ным, и для этой цели и существует,
в) если в самой природе метода заложена возможность то-
го, что желательно его отменить в объекте-потомке.
Указатели процедур против производных типов.
Еще один концептуально спорный вопрос. Рассмотрим слу-
чай, когда для некоторого объекта необходимо обеспечить
средство, позволяющее программисту передавать такую информа-
цию для объекта, которая не всегда бывает известна на момент
компилирования. Наглядным примером такого объекта является
"PickList" ("Список_Подбора") в модуле OPPICK: он должен
обеспечить средство, которое предоставит Вам возможность "со-
общить" ему, какие элементы имеются в списке подбора.
Сторонник "чистого" метода мог бы сказать, что для реше-
ния этой проблемы следует обеспечить фиктивный виртуальный
метод, который, как предполагается, будет возвращать необхо-
димую информацию, и пусть потом программист создает производ-
ный тип, который отменяет этот метод. Но такой подход порож-
дает две проблемы. Первая заключается в том, что было бы
досадно, если бы КАЖДЫЙ раз, когда возникает потребность ис-
пользовать, например, объект PickList, пришлось создавать
производный тип, особенно в том случае, если все, что Вам
действительно требуется - это написать функцию для восстанов-
ления строки на основе номера элемента. Вторая проблема сос-
тоит в том, что при этом в большинстве случаев исключается
возможность использования одного и того же объекта PickList
ках, использующих подход OOP, статические методы не существу-
ют; все методы являются виртуальными. И сторонник "чистого"
подхода OOP мог бы сказать, что все методы в нашей иерархии
объектов должны быть виртуальными именно по той причине, что
виртуальные методы стоят на первом месте. Такой аргумент мож-
но было бы признать справедливым, но еще больше истины в том,
что делать все методы только виртуальными просто непрактично
- по крайней мере, тогда, когда Вы программируете на Turbo
Pascal.
На наш взгляд, имеются два убедительных довода в пользу
того, чтобы везде, где это только возможно, использовать ста-
тические методы. Во-первых, интеллектуальный компоновщик
Turbo Pascal не может отменять неиспользуемые виртуальные ме-
тоды, а только неиспользуемые статические методы; простой акт
ввода объекта данного типа приводит к тому, что в программу
должны быть скомпонованы все виртуальные методы этого объек-
та. И во-вторых, чем больше виртуальных методов имеет объект,
тем обширнее его таблица виртуальных методов VMT: объект,
имеющий 100 виртуальных методов, использовал бы более 400
байт пространства в сегменте данных. В системе Object
Professional нет ни одного объекта, который бы имел так много
виртуальных методов, но если бы все методы были виртуальными,
в ней бы имелся не один такой объект.
Полагая, что из практических соображений невозможно во
всех случаях применять только одни виртуальные методы, мы
стоим на тех позициях, что целесообразно создавать виртуаль-
ные методы только в следующих трех случаях:
а) если мы знаем, что он должен быть отменен объек-
том-потомком,
б) если метод предназначен для того, чтобы быть отменен-
ным, и для этой цели и существует,
в) если в самой природе метода заложена возможность то-
го, что желательно его отменить в объекте-потомке.
Указатели процедур против производных типов.
Еще один концептуально спорный вопрос. Рассмотрим слу-
чай, когда для некоторого объекта необходимо обеспечить
средство, позволяющее программисту передавать такую информа-
цию для объекта, которая не всегда бывает известна на момент
компилирования. Наглядным примером такого объекта является
"PickList" ("Список_Подбора") в модуле OPPICK: он должен
обеспечить средство, которое предоставит Вам возможность "со-
общить" ему, какие элементы имеются в списке подбора.
Сторонник "чистого" метода мог бы сказать, что для реше-
ния этой проблемы следует обеспечить фиктивный виртуальный
метод, который, как предполагается, будет возвращать необхо-
димую информацию, и пусть потом программист создает производ-
ный тип, который отменяет этот метод. Но такой подход порож-
дает две проблемы. Первая заключается в том, что было бы
досадно, если бы КАЖДЫЙ раз, когда возникает потребность ис-
пользовать, например, объект PickList, пришлось создавать
производный тип, особенно в том случае, если все, что Вам
действительно требуется - это написать функцию для восстанов-
ления строки на основе номера элемента. Вторая проблема сос-
тоит в том, что при этом в большинстве случаев исключается
возможность использования одного и того же объекта PickList
Другие работы
Экзаменационная работа. Представление графической информации. Билет № 5
Багдат
: 26 февраля 2018
Билет 5
1. Источники и коды. Энтропия. Марковские и Бернуллиевские источники Условная вероятность и условная энтропия.
2. Построить код Хаффмена для источника со следующими вероятностями символов: P(0)=1/8; P(1)=3/4; P(2)=1/16; P(3)=1/16. Подсчитать среднюю длину кодового слова.
139 руб.
Автоматизация промышленных печей
GnobYTEL
: 5 сентября 2012
Автоматизация технологического процесса — совокупность методов и средств, предназначенная для реализации системы или систем, позволяющих осуществлять управление самим технологическим процессом без непосредственного участия человека, либо оставления за человеком права принятия наиболее ответственных решений.
Как правило, в результате автоматизации технологического процесса, создаётся АСУ ТП
Цели автоматизации
Основными целями автоматизации технологического процесса являются:
Повышение эффективнос
20 руб.
Онлайн Тест 2 по дисциплине: Визуальное программирование и человеко-машинное взаимодействие.
IT-STUDHELP
: 3 ноября 2022
Вопрос №1
Из чего состоит модель GOMS:
из набора репрезентативных задач
из описания методов, необходимых для достижения заданных целей
из правил выбора элементарных операций
из списка проблем по каждому действию
Вопрос №2
Время какой операции в анализе GOMS может быть разным в зависимости от величины перемещения и других сопутствующих деталей:
P
R
D
M
Вопрос №3
Какое правило нарушено в данном фрагменте интерфейса:
будьте последовательны
минимизируйте загрузку памяти польз
500 руб.
П.Л. Шиллинг и Б.С. Якоби. Их вклад в развитие телеграфной связи.
vovanik
: 16 февраля 2012
Реферат
По дисциплине: Основы инфокоммуникационных технологий
1. Ведение 3
2. Виды и типы электросвязи 4
3. П.Л. Шиллинг и Б.С. Якоби. Их вклад в развитие телеграфной связи. 8
4. Заключение 20
5. Литература
150 руб.