Статические методы против виртуальных методов.  : Информатика - на REFLIST.RU

Статические методы против виртуальных методов. : Информатика - на REFLIST.RU

Система поиска www.RefList.ru позволяет искать по собственной базе из 9 тысяч рефератов, курсовых, дипломов, а также по другим рефератным и студенческим сайтам.
Общее число документов более 50 тысяч .

рефераты, курсовые, дипломы главная
рефераты, курсовые, дипломы поиск
запомнить сайт
добавить в избранное
книжная витрина
пишите нам
  Ссылки:
Мальта из Челябинска
Список категорий документа Информатика
Статические методы против виртуальных методов.

Статические методы против виртуальных методов.

ООП, инкапсуляция, комп-ры, ООП инкапсуляция полиморфизм наследование, методы, против, полиморфизм, Статические, Программирование и комп-ры, Программирование, Статические методы против виртуальных методов., наследование, методов., виртуальных Ключевые слова
страницы: 1  2  3 
Текущая страница: 1


     Соглашения и руководящие принципы.

     Статические методы против виртуальных методов.

     Это весьма  непростой и спорный вопрос.  В "чистых" язы-
ках, использующих подход OOP, статические методы не существу-
ют;  все методы являются виртуальными.  И сторонник "чистого"
подхода OOP мог бы сказать,  что все методы в нашей  иерархии
объектов  должны быть виртуальными именно по той причине, что
виртуальные методы стоят на первом месте. Такой аргумент мож-
но было бы признать справедливым, но еще больше истины в том,
что делать все методы только виртуальными  просто непрактично
-  по крайней мере,  тогда,  когда Вы программируете на Turbo
Pascal.
     На наш взгляд,  имеются два убедительных довода в пользу
того, чтобы везде, где это только возможно, использовать ста-
тические  методы.  Во-первых,  интеллектуальный   компоновщик
Turbo Pascal не может отменять неиспользуемые виртуальные ме-
тоды, а только неиспользуемые статические методы; простой акт
ввода  объекта данного типа приводит к тому,  что в программу
должны быть скомпонованы все виртуальные методы этого  объек-
та. И во-вторых, чем больше виртуальных методов имеет объект,
тем обширнее его таблица  виртуальных  методов  VMT:  объект,
имеющий  100  виртуальных  методов,  использовал бы более 400
байт  пространства  в  сегменте  данных.  В  системе   Object
Professional нет ни одного объекта, который бы имел так много
виртуальных методов, но если бы все методы были виртуальными,
в ней бы имелся не один такой объект.
     Полагая, что  из  практических соображений невозможно во
всех случаях применять только  одни  виртуальные  методы,  мы
стоим на тех позициях,  что целесообразно создавать виртуаль-
ные методы только в следующих трех случаях:
     а) если  мы  знаем,  что  он  должен быть отменен объек-
том-потомком,
     б) если метод предназначен для того, чтобы быть отменен-
ным, и для этой цели и существует,
     в) если  в самой природе метода заложена возможность то-
го, что желательно его отменить в объекте-потомке.

     Указатели процедур против производных типов.

     Еще один концептуально спорный вопрос.  Рассмотрим  слу-
чай,  когда  для  некоторого  объекта  необходимо  обеспечить
средство,  позволяющее программисту передавать такую информа-
цию для объекта,  которая не всегда бывает известна на момент
компилирования.  Наглядным примером такого  объекта  является
"PickList"  ("Список_Подбора")  в  модуле  OPPICK:  он должен
обеспечить средство, которое предоставит Вам возможность "со-
общить" ему, какие элементы имеются в списке подбора.
     Сторонник "чистого" метода мог бы сказать, что для реше-
ния этой проблемы следует  обеспечить  фиктивный  виртуальный
метод,  который, как предполагается, будет возвращать необхо-
димую информацию, и пусть потом программист создает производ-
ный тип,  который отменяет этот метод. Но такой подход порож-
дает две проблемы.  Первая заключается в  том,  что  было  бы
досадно,  если бы КАЖДЫЙ раз, когда возникает потребность ис-
пользовать,  например,  объект PickList,  пришлось  создавать
производный  тип,  особенно в том случае,  если все,  что Вам
действительно требуется - это написать функцию для восстанов-
ления строки на основе номера элемента.  Вторая проблема сос-
тоит в том,  что при этом в большинстве  случаев  исключается
возможность  использования  одного и того же объекта PickList
для отображения на экране различных списков.
     Мы предпочитаем принять компромиссное решение.  В подоб-
ных случаях действительно имеются виртуальные методы, которые
Вы можете отменить, если захотите. Но помимо этого существуют
такие средства,  которые с помощью указателя процедуры задают
ту подпрограмму,  написанную пользователем, которая нужна для
выполнения операции.  Реализация виртуального метода по умол-
чанию просто использует этот указатель процедуры,  чтобы выз-
вать Вашу подпрограмму.

     Конструкторы и деструкторы.

     В системе  Object Professional в соответствии с соглаше-
ниями фирмы Borland принято  для  конструкторов  использовать
имя  "Init"  ("Начальный"),  а  для деструкторов - имя "Done"
("Законченный"). Большинство объектов также имеет конструктор
с  именем "Load" ("Загрузка"),  который используется для заг-
рузки объекта из потока (еще больше на потоках  через  момент
?) - в соответствии с другим соглашением фирмы Borland.
     Для обеспечения унификации каждый объект в иерархии име-
ет деструктор с именем Done,  даже если он и не нужен,  и эти
деструкторы никогда не принимают никаких параметров.  Что ка-
сается конструкторов,  однако,  то здесь существуют некоторые
варианты.
     Конструктор Init  всегда  принимает  столько параметров,
сколько возможно.  Если в определенных обстоятельствах  жела-
тельно  передать  больше параметров,  существует второй конс-
труктор с именем "InitCustom" ("Начальная_Настройка"),  кото-
рый   их   принимает  (дополнительно  к  параметрам,  которые
переданы ok
$u



Текущая страница: 1

страницы: 1  2  3 
Список предметов Предмет: Информатика
Статические методы против виртуальных методов. Тема: Статические методы против виртуальных методов.
ООП, инкапсуляция, комп-ры, ООП инкапсуляция полиморфизм наследование, методы, против, полиморфизм, Статические, Программирование и комп-ры, Программирование, Статические методы против виртуальных методов., наследование, методов., виртуальных Ключевые слова: ООП, инкапсуляция, комп-ры, ООП инкапсуляция полиморфизм наследование, методы, против, полиморфизм, Статические, Программирование и комп-ры, Программирование, Статические методы против виртуальных методов., наследование, методов., виртуальных
   Книги:


Copyright c 2003 REFLIST.RU
All right reserved. liveinternet.ru

поиск рефератов запомнить сайт добавить в избранное пишите нам