Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вычисляемые свойства, свойства только для чтения

Процедуры Property можно использовать на уровне форм, стандартных модулей и модулей класса. То есть такие процедуры должны быть использованы вместо Public переменных, если требуется выполнить некоторые действия в тот момент, когда устанавливается значение этой переменной. В отличие от Public переменной Property процедуры могут иметь текст подсказки. Три варианта процедур обеспечивают следующее: Property Let – присваивание значения свойству, Property Get – возвращает значение свойства, Property Set устанавливает ссылку на объект.

Попытаемся разобраться, зачем они нужны. В объектно-ориентированном программировании достаточно тонка грань между методами и свойствами. Предполагается, что метод отражает некоторое действие. Но вдумайтесь, зачем пользователю Вашего объекта знать, что Вы написали программу, которая вычисляет значение некоторого свойства, а не храните это значение прямо в объекте? Рассмотрим пример. Пусть Вы описали объект "работник" и задали внешнее свойство "средняя заработная плата". Пользователь Вашего класса имеет возможность использовать это свойство. А Вы стоите перед выбором: то ли хранить его и пытаться поддерживать его актуальность, то ли вычислять при каждом обращении к нему. Вариант с периодическим перевычислением, состоящий в том, что, например, в начале каждого месяца запускается программа, которая пересчитывает среднюю зарплату для всех, не эффективен, поскольку, вероятно, никто не запросит среднюю зарплату для всех. Выполнять всегда пересчет при запросе тоже не очень хорошо при условии, что в течение месяца может быть неоднократное обращение к средней зарплаты некоторого работника, хотя последняя остается, очевидно, неизменной. Вероятно, наилучшим решением будет применение конструкции property get. Ваши вычисления будут скрыты от пользователя класса, к тому же вы сможете организовать дело наиболее эффективным способом.

Вставьте в проект модуль класса, назовите его worker (работник). В модуле класса опишите два скрытых от пользователя класса свойства и доступную процедуру.

Dim sr As Single, dt As Date

Public Property Get s_ZP() As Single

If Month(dt) < Month(Date) Then

‘здесь расчет средней з/п

dt = Date - (Day(Date) - 1)

End If

s_ZP = sr

End Property

В некоторой прикладной программе будет обращение к свойству s_ZP.

Dim ob As woker

MsgBox ob.s_ZP

Еще одна причина использования процедур Property: процедуры могут быть использованы для создания свойств "только для чтения". Подумайте, если вам требуется скрыть некоторое свойство объекта, вы его описываете как Private, если вы хотите предоставить пользователю класса некоторое свойство, вы его описываете как Public. Но при помощи этих описателей нет возможности создать видимое, но не изменяемое свойство. А с помощью процедур Property это сделать несложно: достаточно для некоторого свойства описать Property Get и не описывать процедуру Property Let! Впрочем, можно ее описать, но в ней вежливо уведомить пользователя о недопустимости изменения данного свойства.

<== предыдущая лекция | следующая лекция ==>
Доступ к внешним COM-серверам | Использование событий объекта Application
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 405; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.