Офисные задачи в Outlook 2002

         

Программа 20.26. Открытие документа



Программа 20.26. Открытие документа

Sub DocOpen1 ()

Dim docObj As Object

Set docObj = CreateObject ("Word.Application")

docObj.Visible = True

docObj.Documents. Add

БлокОператоров

docObj.Quit End Sub

Sub DocOpen2 ()

Dim docObj As Object

Set docObj = GetObject("d:\of200l\62\62.doc") End Sub

Выше мы рассмотрели вопросы объявления класса и использования его объектов вообще. Теперь же перейдем к изучению внутреннего устройства и организации класса более детально, а именно рассмотрим виды процедур класса и их работу со свойствами класса.

В VBA все процедуры класса делятся на три группы:



1. Процедуры-методы.

2. Процедуры-свойства.

3. Процедуры — реакции на событие.

Синтаксис объявления процедур-методов не отличается от стандартного, за исключением возможного использования ключевого слова Friend, о котором говорилось в разделе 20.4 "Структура программы". Настала пора детально рассмотреть возможность его употребления. Ключевое слово Friend, как и ключевые слова Private и Public, предназначено для ограничения области видимости метода. Если Private делает метод видимым только внутри модуля, a Public — для всех модулей всех проектов, то Friend занимает промежуточную позицию между ними, он делает видимым метод только в том проекте, где был описан класс.

Как известно, определение класса в VBA состоит из двух разделов: реализации и интерфейса. Одна из наиболее трудных задач для программистов-новичков в ООП заключается в определении того, какие члены класса делать закрытыми (включать в раздел реализации), а какие, наоборот, открытыми (включать в раздел интерфейса). Общим правилом можно считать, что

чем меньше программе известно о реализации класса, тем лучше. То есть желательно скрыть посредством ключевого слова Private как можно большее количество свойств класса в разделе реализации, а доступ к свойствам осуществлять через специальные открытые методы (Public), организующие интерфейс класса.

Замечание
Замечание 1

Сокрытие информации — это сокрытие деталей реализации функций, класса или даже программы. В условиях сокрытия информации программист работает с функциями и классами, как с черными ящиками. Другими словами, передавая функции некоторое значение в форме входного параметра, программист знает лишь результат, который будет получен на выходе этой функции. Сокрытие информации в реализационную часть класса и доступ к ней через функциональный интерфейс повышают надежность программы.

Например, предположим, что свойство birthday класса Person может принимать значения только в диапазоне от 1900 до 2000. Если это свойство объявлено как Public, то ему можно присвоить недопустимые значения: writer.birthday = #31/12/1899#. Ограничение видимости свойства и использование метода Public дает возможность проверки присваиваемых значений:

Public Sub InitBirthday( bthday As Date)

If bthday > #l/l/1900# and bthday < fl/1/20001 Then

birthday = bthday Else

MsgBox ("You date is out of range") End If End Sub

Таким образом, употребление ключевого слова Public при объявлении свойства name в классе Person также оказывается некорректным. Но, если отменить глобальную видимость, то станет невозможным употребление функций, напрямую связанных с глобальными свойствами. Например, метод bkPrint класса Book окажется некорректным, т. к. уже нет доступа через author.name. Как же быть? Как тогда получить значение этого свойства?

В VBA предусмотрены специальные процедуры-свойства, которые предназначены для чтения и записи закрытых свойств:

Property Let

Процедура записи позволяет присваивать свойству новые значения

Property Set

Процедура записи позволяет присваивать свойству и свойству-ссылке новые значения. Отдельная процедура нужна, поскольку свойство-ссылка'указыва-ет на объект, а присваивание объектам отличается от присваивания переменным простых типов.

Property Get

Процедура чтения (а точнее функция) позволяет считывать значение свойства. Эта процедура применима как к простым свойствам, так и к свойствам-ссылкам.

Приведем синтаксис каждой из них:

[{Public | Private | Friend}] [Static] Property Let имяПроцедурыСвойства

([списокПараметров] значение)

[блокОператоров 1}

[Exit Property]

[блокОператоров2]

End Property

Синтаксис прост и понятен. Сначала идут операторы объявления видимости процедуры-свойства и необязательное ключевое слово static. Кстати, хотя использование ключевого слова private допустимо, его присутствие сводит на нет смысл процедуры-свойства.

ИмяПроцедурыСвойства — это имя процедуры, изменяющей свойство.



Содержание раздела