Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2020

Просмотров: 7889

Скачиваний: 25

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Stream и освобождения

 для него фрагмента памяти — если

бы в составе класса была реализована процедура

 то в

этот момент она была бы автоматически вызвана.

Примите к сведению: существует объект ActiveX под названием Script-

ing.

 воспользоваться им в прикладной

программе, необходимо

 переменную и

вызвать

 CreateObject. Другой

 следует добавить

ссылку на библиотеку Microsoft Scripting Runtime Library и создать
экземпляр объекта FileSystemObject с помощью ключевого слова New.

Примеры использования объекта Scripting. FileSystemObject вы

найдете в оперативной справочной системе Microsoft Visual Basic, задав в
качестве ключевого слова поиска строку

 FileSystemObject.

Класс

 рассмотренный в этом разделе, достаточно полезен

и эффективен. Но существует также и более развитый и гибкий
стандартный класс —

 Это весьма удачная

альтернатива, если в недалеком будущем ваши потребности превзойдут
уровень возможностей, предоставляемых классом FileStream.

Мощь объектно-ориентированного подхода к программированию заключается, в

частности, в том, что он позволяет сосредоточить внимание на целостной проблеме.

Код класса обладает высокой степенью переносимости (поскольку размещается в от-

дельном модуле и решает задачу комплексно) и управляемости — вы можете, напри-

мер, легко исправлять внутренний интерфейс класса, не повредив внешний код.

Тестирование класса

Создаваемые классы следует обязательно тестировать. В этой ситуации вполне

применимы все методы и приемы, рассмотренные ранее в главах "17-й час. Отладка
кода" и "18-й час. Обработка ошибок во время выполнения программы". По завер-
шении

 класса постройте тестовую процедуру, которая позволит

"прощупать" все его методы и свойства — если класс протестирован, смело создавайте

его объекты, не боясь ошибок.

Расширение возможностей существующих

Один из важных аспектов объектно-ориентированного программирования связан с

возможностью агрегации классов (т.е. создания новых классов, расширяющих потен-
циал существующих). Под

 агрегацией

 в данном случае понимается включение класса в

состав атрибутов нового класса.

Глава "22-й час. Совершенствование типов данных" содержит примеры расшире-

ния набора функциональных средств класса за счет агрегации кода.

Создание экземпляра класса

Приемы построения экземпляров стандартных и пользовательских классов абсо-

лютно одинаковы. Следующая строка кода демонстрирует команду создания объекта

Stream класса FileStream:
Dim Stream As New FileStream

 час. Основы программирования классов

395


background image

Процесс создания объекта путем добавления ссылки с применением

ключевого слова New называется

 ранним связыванием

 (на этапе

компиляции). Вызов CreateObject с присвоением значения перемен-
ной типа Variant называется

 динамическим связыванием.

При использовании раннего связывания редактор Visual Basic пред-

лагает список свойств и методов объекта, поскольку тип объекта

известен уже на этапе разработки. Для динамически связанных

объектов такого рода

 редактор не располагает.

Объекты ActiveX требуют применения функции CreateObject с передачей ей

строки наименования класса. Листинг 21.9 содержит пример создания ActiveX-объекта

Excel. (Предварительно включите библиотеку Microsoft Excel 10.0 Object Library в со-

став проекта — для этого выберите в строке меню окна редактора VBA команду

 и в одноименном диалоговом окне установите соответствующий

флажок.)

Листинг 21.9. Пример создания ActiveX-объекта Excel

1: Sub

 )

 Dim Excel As Object

3: Set Excel =
4:

 = True

5:
6: Set Excel = Nothing

7 : End Sub

 )

[ Строка 2 листинга 21.9 содержит конструкцию объявления объекта с

I именем Excel. (Думается, это название достаточно подходяще.) В стро-

ке 3 вызывается функция CreateObject, которой в качестве аргумента
передается строка с наименованием

С помощью выражения строки 4, содержащего обращение к Property-

методу Visible, объект отображается на экране, а затем сеанс работы

Excel завершается (строка 5) и объект удаляется из памяти (строка 6).

Аналогичным образом можно создать в среде прикладной программы эк-

земпляры Word, Outlook и даже Access (!), поскольку функция CreateOb-

ject позволяет строить объекты любых серверов OLE Automation.

OLE Automation — одно из достижений протокола Component Object Model

(СОМ). Сервер OLE Automation представляет собой программу (построенную в соот-

ветствии с требованиями стандарта СОМ), которая может предоставить в общее поль-

зование часть своего интерфейса. Серверы OLE Automation обеспечивают сервис для

других программ или используются в качестве самостоятельных приложений.

Access 2002 — это полноценный сервер OLE Automation.

Резюме

Простота и сложность объектно-ориентированного подхода к программированию за-

ключается в огромных возможностях создания новых полезных типов данных. В отсут-

ствие классов не было бы

 и компонентов, задача создания графических интер-

фейсов оставалась бы чрезвычайно сложной и — куда уж страшнее! — не появился бы

язык программирования VBA. VBA — это дитя, плоть от плоти, объектной модели.

396

Часть VIII.

 программирование в Access


background image

На прошлых занятиях рассказывалось о том, как пользоваться готовыми классами.

Но теперь вы изучили способы создания собственных. Класс — это тип данных, опре-

деляемый пользователем-программистом. Код класса сохраняется в отдельном модуле.

Классы состоят из свойств и методов, в совокупности называемых атрибутами, или

членами. Свойства — это элементы данных, а методы — правила их обработки.

Уровень доступности атрибутов класса задается с помощью служебных слов-

 Public и Private. Члены класса, помеченные словом Private, дос-

тупны исключительно для методов этого же класса, и забота о них целиком возложена

на плечи автора-программиста. Атрибуты Public служат частью внешнего, общего

интерфейса класса.

Объектно-ориентированный подход предоставляет большое количество преиму-

ществ и целым коллективам программистов, работающих над серьезными проектами,

и даже любителям-одиночкам, позволяя концентрировать внимание на самых значи-

тельных частях общей задачи. Классы VBA предоставляют вам все необходимое.

Следующая глава, "22-й час. Совершенствование типов данных", посвящена рас-

смотрению ряда усовершенствованных возможностей объектно-ориентированного

подхода, причем в ходе ее изложения мы будем опираться на материал текущего заня-

тия. Не упустите случая закрепить свои "объектно-ориентированные" навыки и озна-

комьтесь с разделами "Вопросы и ответы" и "Задания", приведенными ниже.

Вопросы и ответы

Вопрос. Как только процедуры и функции становятся частью класса, их перестают

называть процедурами и функциями. Почему?

Ответ.

 Это не просто игра слов. Новые термины подразумевают расширенное тол-

кование. Методы — да, это процедуры и функции, но за ними стоит кое-что еще.

Property-методы можно трактовать и как данные. А свойства — это больше чем
обычные элементы информации. Новая терминология требует и нового осмысления.

Без нее мы не сможем понимать друг друга.

Вопрос. Так ли принципиален вопрос освоения способов объектно-ориентированного

программирования в контексте использования Access?

Ответ.

 И да, и нет. Практически все, с чем вы имеете дело, работая в Access, свя-

зано с теми или иными аспектами объектно-ориентированного программирования.

Разумеется, можно заниматься программированием для Access, ограничившись при-

менением существующих классов, — для решения многих задач этого достаточно. Но

наиболее эффективные результаты достигаются только тогда, когда вы способны ис-

пользовать для решения конкретной проблемы все имеющиеся возможности.

Вопрос. Должен ли я досконально овладеть всеми идиомами объектно-

ориентированного подхода, чтобы суметь построить собственный класс?

Ответ.

 Нет. На этом занятии были рассмотрены базовые понятия и приемы, и те-

перь вы вполне в состоянии создавать собственные классы, хотя в VBA существуют и

более сложные процессы. Важно понимать, что различные объектно-

ориентированные языки программирования далеко не равноценны. В Object Pascal

или C++, например, поддерживается множество других идиом, и поэтому каждый из

них гораздо более труден для изучения — разумеется, они более мощные. Access VBA

предлагает разумный компромисс между гибкостью и эффективностью, с одной сто-

роны, и простотой использования — с другой.

Вопрос. Как узнать, когда именно следует создавать класс?

Ответ.

 Хороший вопрос. Далеко не обязательно, чтобы весь код программы при-

надлежал классам. Если вы сталкиваетесь с повторяющейся задачей, охватывающей

21-й час. Основы программирования классов 397


background image

определенный круг данных и способов их обработки, соответствующая группа строк

кода становится подходящей "кандидатурой" для оформления в виде класса. Процесс

перехода структурного кода в объектно-ориентированный может происходить посте-

пенно. Наглядный пример — класс

 Работа с файлами предполагает на-

личие средств их открытия, чтения, записи и т.п. И со временем вполне естественно

возникает мысль об объединении всех требуемых элементов данных и процедур в

единое целое, класс.

Задания

Ниже приведены тестовые задания и упражнения, которые помогут вам самостоя-

тельно проверить уровень освоения материала, изложенного в этой главе. Ответы на

вопросы вы найдете в приложении.

Тесты

1. Тип и переменная находятся в такой же взаимосвязи, как класс и ... (вставьте про-

пущенный термин).

2. Класс может содержать свойства, для которых не определены методы Property.

Верно ли это?

3. Каким обобщенным термином обозначаются процедуры и функции-члены класса?
4. Перечислите действия, необходимые для создания нового модуля класса.
5. С помощью каких служебных слов обозначаются Property-методы, предназначен-

ные для чтения переменных и присвоения им значений?

1. Определите класс, содержащий переменные-свойства для хранения данных о теле-

фонных номерах и именах их владельцев.

2. Наберите код класса FileStream в окне редактора. Постройте тестовую процедуру,

которая в целях проверки корректности кода класса должна записывать в файл

строку текста, возвращать указатель в начало файла и считывать ту же строку.

3. Примените объект Scripting. FileSystemObject для чтения файла с данными,

сохраненными при выполнении предыдущего упражнения.

398 Часть VIII. Объектно-ориентированное программирование в Access


background image

22-й час

Совершенствование типов

Анализ в программировании — это процесс постижения проблемы. Синтез — ее

реализация. Примеры формального анализа возникают там, где аналитик, общаясь с

заказчиком или пользователем будущей программы, выясняет природу проблемы.

Неформальный подход к анализу проявляется в тех случаях, когда вы сами, совер-

шенно самостоятельно решаете, что для достижения результата должна быть написана

определенная программа. Подобные примеры характерны для ситуаций, когда коли-

чество участников рабочей группы не превышает двух-трех человек. В крупномас-

штабных проектах анализ может выполняться одними людьми, а практическая реали-

зация принятых решений —

 В настоящий момент вы будете выступать и в

роли аналитика, и в роли программиста.

Существует опасность бессистемного создания классов, а также бессмысленного их

наполнения. На этом занятии речь идет о том, как создать удачный класс и его объекты.

Основные темы занятия.

• Критерии "классового" подхода.
• Принципы объектно-ориентированного проектирования.
• Расширение возможностей существующих классов посредством агрегации.

• Использование новых классов.

Определение цели

На этом занятии основной причиной, побуждающей строить новый класс, будем

считать потребность в практической реализации ассоциативного массива.

 Ассоциатив-

ным

 называется массив, в котором каждому значению соответствует именованный

ключ. Об ассоциативном массиве можно говорить как о разновидности базы данных.

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

решении с помощью ассоциативных массивов. Знакомые всем файлы INI, предназна-