Статические методы против виртуальных методов
Состав работы
|
|
|
|
Работа представляет собой 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
Другие работы
Контрольная работа по дисциплине "Экономика отрасли инфокоммуникаций". Вариант №10
naXer22
: 30 мая 2014
Вопрос: Классификация затрат на производство и реализацию услуг связи, калькуляция себестоимости.
Задача: Определите себестоимость 100 рублей доходов от реализации услуг в организации связи
Исходные данные:
1. Доходы от основной деятельности, тысяч рублей:
12000
2. Среднесписочная численность работников, человек:
100
3. Среднемесячная заработная плата, рублей:
7460
4. Удельный вес расходов на оплату труда, %:
30,0
90 руб.
По двум проекциям цилиндра с вырезом построить третью проекцию. Упражнение 26 - Вариант 1
.Инженер.
: 5 декабря 2025
Б.Г. Миронов, Р.С. Миронова, Д.А. Пяткина, А.А. Пузиков. Сборник заданий по инженерной графике с примерами выполнения чертежей на компьютере. Упражнение 26 - Вариант 1
По двум проекциям цилиндра с вырезом построить третью проекцию. Проставить размеры.
В состав работы входит:
Чертеж;
3D модель.
Выполнено в программе Компас + чертежи в PDF.
100 руб.
Операционные системы. Лабораторная работа №5. Вариант №4 (переделанная, сдавалась 1 раз)
tpogih
: 25 декабря 2014
1. Постановка задачи
Написать программу, которая будет работать с видеопамятью. Можно выполнить любое из приведенных ниже заданий. Независимо от конкретного задания программа должна работать резидентно. Текст, присутствовавший на экране до запуска программы, не должен портиться никаким образом.
В программе следует использовать два обработчика прерываний – прерываний таймера и прерываний клавиатуры. Прерывания таймера регламентируют скорость перемещения объекта, причем параметр, характеризующий
50 руб.
Турбобур шпиндельный 3ТСШ1-195, Полумуфта шпинделя, Средняя радиальная опора, Нижняя радиальная опора, Деталировка-Чертежи-Графическая часть-Оборудование для бурения нефтяных и газовых скважин-Курсовая работа-Дипломная работа
https://vk.com/aleksey.nakonechnyy27
: 18 мая 2016
Турбобур шпиндельный 3ТСШ1-195, Полумуфта шпинделя, Средняя радиальная опора, Нижняя радиальная опора, Деталировка-Чертежи-(Формат Компас-CDW, Autocad-DWG, Adobe-PDF, Picture-Jpeg)-Оборудование для бурения нефтяных и газовых скважин-Курсовая работа-Дипломная работа
994 руб.