Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2020
Просмотров: 7909
Скачиваний: 25

час
Основы
программирования классов
Вам наверняка уже доводилось видеть и слышать много разной информации об
объектно-ориентированном программировании (нет, не только на страницах нашей
До сих пор мы пользовались классами, которые были созданы другими
людьми. Класс — это расширенный пользовательский тип данных. Экземпляр класса
называют объектом. Класс — это базовое, краеугольное понятие парадигмы объектно-
ориентированного программирования; не будь классов, термин
объектно-
ориентированный
лишился бы своей главной части —
Впрочем, несмотря
на зловещее название, которое не обещает новичку спокойной жизни, за этой терми-
нологией не скрывается ничего чрезмерно сложного и недоступного для понимания.
Очень скоро (думаем, к концу этого занятия) вы определенно научитесь создавать
собственные классы — более того, вы, по существу, узнаете, как писать объектно-
ориентированные программы.
Понятие объекта основывается на реалиях окружающей жизни. В самом деле, объекты
настолько
что создатели большинства языков программирования уже обеспечили
их средствами поддержки объектно-ориентированной парадигмы либо настойчиво к этому
стремятся. Даже дедушка COBOL — и тот, прихрамывая на обе ноги, желает поспеть за
своими молодыми и более резвыми конкурентами. Объектно-ориентированный стиль дает
в руки программистов мощные орудия, позволяющие справляться с задачами, сложность
которых — в угоду требованиям эпохи — неуклонно возрастает.
Объектно-ориентированное программирование далеко не так страшно, как кажет-
ся. Просто оно требует некоторой подготовки — частично по той причине, что чело-
веку приходится отвыкать от стереотипов. Если же вы ранее вообще не занимались
программированием, считайте, что вам крупно повезло, поскольку переучиваться и
ломать привычный ход мыслей попросту незачем.
Основные темы занятия.
• Почему объектный подход так важен и ценен.
• Еще раз о терминах объектно-ориентированного программирования.
• Создание новых классов и расширение возможностей существующих.
• Отладка объектного кода в среде Access 2002.

В чем состоит важность объектного
подхода
Прежде чем привести аргументы в пользу важности объектно-ориентированной
парадигмы, начнем с того, как развивалась область программирования.
До возникновения "объектных" идей в индустрии программирования господство-
вал так называемый
структурный
подход, который был обязан своим появлением (так
же, как и его будущий преемник) все возрастающей сложности прикладных задач, ка-
кую он и призван был Преодолеть. В центре внимания "структурных" программистов
находился
процесс.
Решая задачу, программист определял множество данных и про-
цессов их обработки.
Процедуры и данные никак не соотносились друг с другом — кроме, пожалуй, тех
ситуаций, когда процедура и порция данных в какой-то момент времени выполнения
программы "соприкасались" для осуществления конкретной операции. После опреде-
ления множества процессов и круга необходимых данных создавались процедуры,
поддерживавшие выполнение отдельных процессов. Затем строилась "главная" проце-
дура, из которой вызывались вспомогательные, решавшие частные задачи в рамках
общей проблемы. Все это именовалось
потоком вычислений.
Структурное программирование поддерживалось средствами структурного проек-
тирования. На этапе структурного проектирования предполагалось построение
блок-
в которых с помощью специальных символов отображался каждый конкретный
процесс с учетом его места в общем потоке вычислений.
Сторонники структурного подхода столкнулись с трудностями, порожденными
чрезвычайной сложностью задач, которые предстояло решать. Крупное приложение
могло содержать в своем составе тысячи процедур и функций, а языки структурного
программирования, такие как С и Basic (предшественники Visual Basic), не поддержи-
вали развитых средств агрегации кода. (Помните, мы как-то говорили о любви? Нет,
конечно, о любви всегда приятно поразмышлять, но тогда речь шла, простите за про-
зу, об агрегации понятий.)
Впрочем, еще до появления объектно-ориентированных систем программисты
осознали необходимость агрегации данных в более крупные структуры — типы, опре-
деляемые пользователем. Агрегатный тип позволяет связать в единую целостную сущ-
ность несколько разнородных порций данных. Программисты, кроме того, уяснили
(что в настоящее время для нас совершенно естественно) и полезность агрегации
строк кода в именованные блоки-процедуры, позволяющие упростить структуру про-
граммы и уменьшить ее объем. Агрегатные типы данных и процедуры (функции) со-
ставили основу структурного подхода к программированию, но некоторые принципи-
альные моменты все равно остались за пределами изучения.
Программирование все более тяготело к решению задач, настолько же сложных, как и
мир, который нас окружает. Физический мир состоит из "вещей". Каждая "вещь" харак-
теризуется определенными атрибутами, описывающими ее структуру и особенности пове-
дения. Человек — это, в известном смысле, одна из
физического мира. Челове-
ку свойственны определенные способности — скажем, речь и движение. Каждый человек
отличается внешними характеристиками — цветом волос, ростом, весом и т.п. Это спра-
ведливо и в отношении других "вещей" физического мира: все они обладают некоторыми
функциональными возможностями и ощутимыми, поддающимися оценке свойствами.
Однако отдельно взятые процедуры и данные не в состоянии обеспечить полно-
ценных средств описания вещей. Ученые-естествоиспытатели доказали, что физиче-
ский мир (вероятно, самая сложная из всех сущностей) не может быть описан набо-
ром процессов — мир состоит из взаимодействующих между собою вещей. Это об-
стоятельство заставило задуматься и математиков, которые вполне обоснованно реши-
382 Часть VIII. Объектно-ориентированное программирование в Access

ли, что языки программирования должны поддерживать средства создания абстрак-
ций, описываемых множествами свойств и способных к
Подобные
системы программирования получили название
Развитие компьютерной науки и индустрии доказало правоту кибернетиков-
первопроходцев. Сложная программа становится более управляемой, если написана в
объектно-ориентированном стиле. Впрочем, плохие образцы объектного кода — как и
любая другая плохо выполненная работа — не станут лучше от того, что мы назовем
их модным словечком.
Не все программисты работают сейчас в объектном стиле, но подавляющее боль-
шинство новых проектов создается на языках, в которых поддерживаются средства
объектно-ориентированного программирования. Пока еще отдельные компании (по
крайней мере, так было в
году) еще не могут оценить всех достоинств новых
технологий. Что ж, это их воля. Объектно-ориентированный подход к программиро-
ванию остается в силе, он может развиваться, изменяться, но уже не будет отброшен,
и компьютерная индустрия никогда не повернет вспять, к прошлому.
Уделите особое внимание этой главе — пользу гарантируем. Прежде чем продол-
жить, несколько советов. Избегайте построения объектов просто так, без особой
то
нужды. Сосредоточьте внимание на сущности проблемы, а не на количестве классов,
которые вы построили или, наоборот, не построили. Примите к сведению, что хоро-
ший объектно-ориентированный "блин" редко удается с первого раза уберечь от пре-
вращения в "ком". Качественные результаты достигаются только в процессе практи-
ки — непрерывной и, может быть, даже утомительной.
В первый раз — первый класс
Работа с модулем класса ничем не отличается от привычных приемов использова-
ния обычных модулей. Единственная особенность состоит в том, что законченные
фрагменты кода обычных модулей независимы, а содержимое модуля класса трактует-
ся Access как единое целое. Чтобы использовать класс в программе, необходимо по-
строить экземпляр (объект) класса.
Вы уже осведомлены о том, как создаются объекты классов. Еще раз воспроизве-
дем пример из главы "13-й час. Коллекции данных":
Dim Strings As New Collection
В приведенной строке кода объявляется и создается экземпляр класса Collection под
названием strings. Это и есть объект класса. Вводя код в модуле класса, вы определяете
структуру класса. Чтобы построить простой класс, выполните следующие действия.
Создайте новую или откройте существующую базу данных.
2. Выберите элемент Модули (Modules) в списке Объекты (Objects) окна База данных
(Database) и щелкните на кнопке Создать (New) панели инструментов.
3. Введите текст листинга
в окне нового модуля.
4. Сохраните модуль под именем Test.
5. Не закрывая окна редактора, выберите в строке меню команду
Module,
чтобы создать новый модуль класса и добавить его в базу данных.
6. Введите текст листинга 21.2 в окне нового модуля класса.
7. Сохраните модуль под именем FirstClass.
8. Выберите в строке меню окна редактора команду
чтобы перейти к
окну модуля Test.
9. Выполните процедуру
— откроется окно, содержащее сообще-
ние В первый раз
21-й час. Основы программирования классов 383

Листинг
Процедура для тестирования класса, описанного в листинге 21.2
Option Compare Database
Sub
Dim MyFirstClass As New FirstClass
Set MyFirstClass = Nothing
End Sub
Анализ
I Листинг
содержит текст простой процедуры, в строке 3 которой соз-
| дается объект MyFirstClass класса FirstClass, а далее, в строке 4, вы-
зывается метод Greetings этого класса. Директива строки 5 освобождает
фрагмент памяти, выделенный для хранения объекта. Обратите внима-
ние, что имя объекта (MyFirstClass) отделяется от названия его метода
(Greetings) оператором точки
Листинг 21.2 демонстрирует содержимое модуля класса.
Листинг 21.2. Содержимое модуля класса
Option Compare Database
2 : Sub
)
MsgBox "В первый раз — первый
End Sub
В VBA все члены класса содержатся в одном модуле. Модуль класса
создается при выборе в строке меню окна редактора команды
Class Module.
| Листинг 21.2 представляет код класса FirstClass. Любой код, содержа-
щийся в модуле класса, становится неотъемлемой частью класса. Постро-
енный нами класс FirstClass весьма прост: он содержит единственный
метод — процедуру Greetings.
Несмотря на то, что первый класс, FirstClass, нельзя назвать особенно полезным с
практической точки зрения, формально он верен и может использоваться в качестве ру-
ководства по построению других, более реальных и сложных классов. Чтобы приступить
к созданию нового класса, достаточно обратиться к окну редактора Microsoft Visual Basic
и выбрать в строке меню команду
Module, которая приводит к открытию
окна нового модуля. Теперь, работая в окне модуля класса, вы можете действовать в той
же манере, как и при написании обычного — не объектно-ориентированного — кода.
Наиболее существенное различие подходов состоит в том, что, намереваясь включить
определенный код в состав класса, вы должны поместить его в соответствующий мо-
дуль — и код станет естественной частью интерфейса класса.
Прежде чем перейти к вопросам создания более сложных классов, необходимо
кратко осветить проблему обеспечения доступа к членам классов.
Сокрытие
Слыхали ли вы когда-нибудь фразу:
Слишком много
Да, временами
бывает, что излишек информации определенно вреден. Вообразите на мгновение, что
для обеспечения жизнедеятельности своего организма вы должны будете отдавать
мысленные приказы типа "Желудок, дружище, займись-ка перевариванием передан-
384
Часть VIII. Объектно-ориентированное программирование в Access