Статические методы против виртуальных методов
Состав работы
|
|
|
|
Работа представляет собой 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
Другие работы
Расчет и проектирование сетевого оборудования NGN/IMS. Вариант №13
catdog94
: 16 марта 2016
Исходные данные варианта 13
Для нечетных вариантов использование кодеков следующее:
• 20% вызовов – кодек G.711
• 20% вызовов – кодек G.723 I/r
• 30% вызовов – кодек G.723 h/r
• 30% вызовов – кодек G.729A.
n = 0,9.
Поправочные коэффициенты для нечетного варианта:
KPSTN=1.25; KISDN=1.75; KV5=2; KPBX=1.75; KSHM=1.9
400 руб.
Контрольная работа по дисциплине «Дискретная математика»
gorodeckij
: 14 ноября 2011
I. Задано универсальное множество и множества . Наитии результаты действий а)-д) и каждое действие проиллюстрировать с помощью диаграммы Эйлера-Венна.
II Ввести необходимые элементарные высказывания и записать логической формулой следующее предложение:
4. «Если дискриминант квадратного уравнения неотрицательный, то уравнение имеет один корень или оно имеет два корня»
III. Для булевой функции найти методом преобразования минимальную ДНФ. По таблице истинности построить СКНФ. По минимальной ДНФ по
25 руб.
Контроллинг в системе управленческого учета
Aronitue9
: 25 апреля 2012
Оглавление
Контроллинг в системе управленческого учета. 3
Введение. 3
Понятие и сущность контроллинга. 4
Функции и задачи контроллинга. 7
Объекты контроллинга. Цели задачи и инструменты контроллинга 12
Типы контроллинга. 17
Место контроллинга в системе управления. 19
Заключение. 23
ПРАКТИЧЕСКАЯ ЧАСТЬ КУРСОВОЙ РАБОТЫ 24
ЗАДАНИЕ 1. Определить, на какие группы подразделяются затраты в соответствии с представленными признаками классификации, дать им характеристику и привести пример затрат, относящих
20 руб.
Теплотехника 21.03.01 КубГТУ Задача 1 Вариант 22
Z24
: 24 января 2026
Сравнить мощность, затраченную на сжатие метана в одно- и двухступенчатом компрессоре в случае политропного сжатия с показателем политропы n, если объемный расход метана при параметрах всасывания – V1, начальные параметры p1 и t1, а конечное давление — рк.
Определить температуру метана на выходе из компрессора и количество теплоты, отводимое от цилиндров и промежуточного теплообменника. Изобразить (без масштаба) процессы одно- и двухступенчатого сжатия на рυ- , Ts — диаграммах.
200 руб.