Использование Package and Deployment Wizard
Вспомогательная программа Package and Deployment Wizard появилась в Visual Basic, начиная с версии 6. По своим возможностям она заметно превосходит программу Setup Wizard из предыдущих версий Visual Basic. Package and Deployment Wizard позволяет легко и быстро сгенерировать программу, облегчающую распространение и установку вашего приложения. При запуске Package and Deployment Wizard на экране появляется диалоговое окно с заставкой (рис. 14.4). Далее вы выбираете тип установки — стандартный вариант установки на жесткий или гибкий диск, подготовку приложения для пересылки по Интернету или создание сценария.
Рис. 14.4. Заставка Package and Deployment Wizard
Давайте создадим программу, предназначенную для распространения приложения VB Terminal:
1. Закройте Visual Basic, если он был запущен ранее, и запустите Package and Deployment Wizard.
2. Нажмите кнопку Browse, чтобы найти проект VBTerm.
3. Выберите файл VBTerm.vbp из каталога \MSDN\98VS\1033\Samples\VB98\MSComm. Откройте его кнопкой Open.
4. После выбора проекта нажмите кнопку Package, чтобы перейти к упаковке проекта.
5. Мастер просматривает содержимое проекта и затем предлагает выбрать тип упаковки (рис. 14.5).
Рис. 14.5. Выбор типа упаковки
6. Щелкните в строке Standard Setup Package (стандартная установка) списка Package Type.
ПРИМЕЧАНИЕЧтобы просмотреть список компонентов, необходимых для успешной установки, щелкните в строке Dependency File.
7. После выбора типа нажмите кнопку Next.
8. Как показано на рис. 14.6, мастер предлагает указать каталог для хранения программы установки. По умолчанию используется каталог проекта, но я не рекомендую оставлять его. Лучше создайте в каталоге проекта подкаталог Setup (или с другим именем по своему усмотрению), выберите его и нажмите кнопку Next.
В следующем окне мастера (рис. 14.7) перечислены файлы, которые мастер считает нужным включить в поставку приложения. С помощью кнопки Add к ним можно добавить дополнительные файлы — базы данных, справочные и текстовые файлы.
Рис. 14.6. Выбор каталога
Рис. 14.7. Файлы, включаемые в поставку
9. В нашем примере дополнительные файлы не нужны; нажмите кнопку Next, чтобы продолжить работу.
10. В диалоговом окне Cab Options (рис. 14.8) можно выбрать между созданием одного или нескольких САВ-файлов. Оставьте установленным переключатель по умолчанию (Single cab).
ПОДСКАЗКАЕсли вы собираетесь распространять свое приложение на гибких дисках, установите переключатель Multiple cabs и укажите размер диска. Для дисков повышенной емкости следует выбрать 1,44 Мбайт.
Рис. 14.8. Выбор количества САВ-файлов
11. Нажмите кнопку Next. В поле Installation Title следующего диалогового окна (рис. 14.9) указывается имя приложения, отображаемое в программе установки.
Рис. 14.9. Ввод имени для установочной программы
12. Введите текст Visual Basic Terminal в поле Installation и нажмите кнопку Next На рис. 14.10 показана одна из долгожданных возможностей, отсутствовавших в старом Setup Wizard. Package and Deployment Wizard позволяет добавить значок приложения в меню Пуск.
13. Щелкните в программной группе VBTERM, затем нажмите кнопку Properties. Когда откроется диалоговое окно Start Menu Group Properties (рис. 14.11), введите в поле Name строку Visual Basic Terminal. Подтвердите внесенные изменения кнопкой ОК.
Рис. 14.10. Диалоговое окно для создания значков в меню Пуск
Рис. 14.11. Переименование программной группы
ПОДСКАЗКАОбратите внимание на группу свойств, относящихся к Windows NT. При установке различных переключателей в этой группе Wizard создает программную группу только для пользователя, устанавливающего приложение, или общую для всех пользователей компьютера с Windows NT.
14. Щелкните на значке приложения VBTERM и нажмите кнопку Properties. Когда на экране появится диалоговое окно Start Menu Item Properties (рис. 14.12), введите в поле Name текст Visual Basic Terminal — тем самым вы изменяете надпись под значком приложения. Подтвердите внесенные изменения кнопкой ОК.
Рис. 14.12. Диалоговое меню Start Menu Item Properties
15. Мы присвоили программной группе и значку более понятные имена. Нажмите кнопку Next, чтобы перейти к следующему этапу.
На рис. 14.13 изображено диалоговое окно Install Locations. В нем можно задать исходные и итоговые каталоги для файлов, копируемых программой установки. В нашем примере эти параметры можно оставить без изменений.
Рис. 14.13. Диалоговое окно Install Locations
16. Нажмите кнопку Next, чтобы продолжить работу.
Package and Deployment Wizard позволяет установить файлы программы на пользовательский компьютер в качестве общих компонентов (рис. 14.14). Этот параметр пригодится для установки компонентов ActiveX, которые будут использоваться другими приложениями (не только вашим).
17. Наше приложение не предназначено для одновременного запуска несколькими пользователями — нажмите кнопку Next.
Мы подошли к последнему этапу работы мастера! В диалоговом окне на рис. 14.15 можно ввести имя сценария установки, в котором будут записаны все настроенные вами параметры. Не пренебрегайте этой возможностью, потому что Package and Deployment Wizard воспользуется этим сценарием при создании следующей программы установки и вам не придется заново вводить все значения параметров — хватит лишь тех параметров, которые были изменены.
Рис. 14.14. Выбор файлов, устанавливаемых в качестве общих компонентов
18. Введите в поле Script Name текст VBTerm Setup Script и нажмите кнопку Finish.
После нажатия кнопки Finish Package and Deployment Wizard берется за работу и объединяет все компоненты приложения в удобный пакет, который будет распространяться среди пользователей. Когда все будет готово, мастер выводит отчет (рис. 14.16) с кратким описанием проделанной работы и советами по возможной модификации программы установки. Вы можете сохранить отчет в файле или просто закрыть диалоговое окно.
После завершения работы мастер возвращается к главному диалоговому окну, в котором при необходимости можно создать дополнительные программы установки.
19. Закройте диалоговое окно Package and Deployment Wizard кнопкой Close.
Рис. 14.15. Сохранение сценария установки
Рис. 14.16. Отчет об упаковке
Поиск вирусов
Прежде чем распространять приложение среди пользователей, обязательно проверьте установочные диски на наличие вирусов. Это важное предупреждение, и к нему стоит прислушаться — никому не хочется получить зараженную установочную программу. Помните, что ваше приложение будет продублировано во множестве экземпляров. Если программа установки или само приложение будут заражены, вирус попадет на компьютеры пользователей. А если пользователи поделятся копией установочной программы с друзьями или коллегами, вирус распространится и дальше!
Готовую и проверенную программу необходимо протестировать на другом компьютере без Visual Basic 6. Если при подготовке установочной программы были допущены ошибки, исправьте их. Перед тем как распространять приложение, убедитесь в том, что абсолютно все работает нормально, — это избавит вас от многих проблем. Хотя в природе существует немало других программ такого рода, возможностей Package and Deployment Wizard вполне хватает для простейших случаев, к тому же за него не приходится платить. Лучший способ освоить Package and Deployment Wizard (как, впрочем, и все остальное) — практическая работа.
ВНИМАНИЕВсегда проверяйте приложение и все его компоненты перед тем, как включать их в программу установки. Затем проверьте готовую программу установки. Чистые и надежные программы предохранят вас от излишней критики и недоверия!
Распространение программы
Установочная программа готова, и перед вами открывается несколько путей распространения приложения. Если программа будет использоваться внутри компании, в которой установлена локальная сеть, вы можете воспользоваться Package and Deployment Wizard, чтобы скопировать прототипы дисков на центральный файловый сервер, доступный для всех пользователей. Любой служащий компании сможет запустить установочную программу прямо с сервера и скопировать приложение на свой жесткий диск.
Кроме того, программу можно распространять через Интернет. Package and Deployment Wizard обеспечивает и такую возможность. К сожалению, не все пользователи имеют доступ к Интернету или хотя бы Web-узлу или FТР-серверу, с которых распространяется приложение, поэтому я не стану описывать эту возможность. Тем не менее, если у вас имеется доступ к Web-серверу или FTP-серве-ру, попробуйте самостоятельно создать вариант поставки для Интернета. Наконец, прототипы можно скопировать на дискеты. Этот способ до сих пор остается наиболее традиционным. По возможности пользуйтесь им в своих установочных программах. Набор прототипов можно держать в одном архиве до тех пор, пока установочная программа вам снова не понадобится. Перед тем как архивировать прототипы, обязательно проверьте их на наличие вирусов.
Что нового мы узнали?
В этом уроке мы научились:
Задавать свойства приложения.
Отличать Р-код от машинного кода.
Компилировать приложения в Р-код или в машинный код.
Использовать встроенные номера версий и ревизий.
Включать в выполняемые файлы сведения об авторских правах и товарных знаках.
Пользоваться Package and Deployment Wizard для распространения приложений.
Искать вирусы в распространяемых программах.
15 УРОК
Объектно-ориентированное
Программирование (ООП)
Общие сведения об ООП
Для чего нужно ООП?
Наследование, инкапсуляция и полиморфизм
Многократное использование кода
Пример создания класса
Пример использования класса
Работа с окном просмотра объектов
Количество поклонников технологии объектно-ориентированного программирования неуклонно растет. ООП, некогда бывшее вотчиной C++ и SmallTalk, распространилось и на Visual Basic. В этом уроке рассматриваются основы ООП и исполь-эвания его фундаментальных концепций в программах, написанных на Visual Basic. Вскоре вы поймете, почему ООП имеет для вас такое большое значение
Общие сведения об ООП
Объектно-ориентированное программирование, или ООП, представляет собой методику анализа, проектирования и написания приложений с помощью объектов. «Что такое объекты?» — спросите вы. Объектом называется фрагмент кода, обладающий свойствами и методами. Объекты создаются на базе так называемых классов и могут моделировать правила обработки данных, различные ситуации и даже физические предметы.
Люди привыкли мыслить категориями объектов. Скажем, бейсбольный матч можно представить как совокупность объектов бит, мячей, перчаток и игроков. Используя ООП, вы моделируете в своем приложении материальные явления реального мира. Но на этом возможности ООП отнюдь не исчерпываются. Вы можете использовать в программировании те же принципы, которыми руководствуетесь в реальной жизни!
ООП упрощает процесс разработки программ, поскольку свойства и методы объектов подчиняются простейшей модели безопасности. Эта модель определяется ключевыми словами Private, Public и Friend. Если вы хотите, чтобы приложение могло свободно обращаться к вашему объекту, организуйте доступ к нему через открытые (Public) свойство или метод. Закрытые свойства и методы используются только самим объектом; за его пределами они не видны и не могут использоваться в других процедурах.
Самым фундаментальным объектом Visual Basic является объект формы. Без него ваши приложения вряд ли можно было назвать «визуальными» (visual). Формы обладают множеством свойств, среди которых Appearance, BorderStyle, Caption, Name и WindowState. Все эти свойства являются открытыми и могут свободно изменяться вашими программами. Формы также обладают множеством методов, в число которых входят Load, Unload, Show и Hide.
Добавляя новую форму в проект, вы создаете «потомка» класса формы. Его свойства и методы совпадают со свойствами и методами родительской формы. По мере того, как вы изменяете их, ваша форма становится все более самостоятельной. Некоторые ее функции могут совпадать с функциями родительской формы, но это и не обязательно — все зависит от того, как вы запрограммируете данную форму. Вы можете создать любое количество форм (лишь бы программа с ними справилась) и настроить каждую отдельно от других.
Для чего нужно ООП?
Зачем программисты используют ООП в своей работе? Дело в том, что программист может распределить функции программы по нескольким независимым объек-
там. Такой подход упрощает проектирование и разработку программ. Оптимизация объектов снижает риск нежелательного взаимодействия фрагментов программы. В сущности, каждый объект моделирует ту или иную ситуацию реального мира. Представьте себе крупную компанию, состоящую из нескольких отделов. Она (назовем ее Корпорацией XYZ) включает администрацию, отдел кадров, отдел информационных технологий и бухгалтерию.
Администрация отвечает лишь за совместную работу отделов, в ходе которой достигаются цели, поставленные перед компанией. Работники администрации умеют работать с компьютерами, но для разработки корпоративной интрасети их познаний явно недостаточно. Администраторы в основном работают с менеджерами других отделов и практически не общаются с рядовыми сотрудниками Корпорации XYZ.
Отдел кадров отвечает за найм, увольнение и оценку персонала компании. Он работает с несколькими тысячами личных дел, содержание которых в других отделах считается конфиденциальным. Работники других отделов обычно не располагают свободным доступом к личных делам. Им приходится подавать заявку и получать официальное разрешение. Например, менеджер может ознакомиться с личным делом подчиненного и решить, заслуживает ли тот повышения.
Отдел информационных технологий следит за тем, чтобы все компьютеры компании работали нормально. Сотрудники отдела информационных технологий обслуживают все остальные отделы Корпорации XYZ и решают технические проблемы, возникающие в ходе работы.
Наконец, бухгалтерия ведет счета компании, производит учет имущества и сводит дебет с кредитом. Часть информации, проходящей через нее, относится к финансовому положению компании и считается строго конфиденциальной. Если эта информация попадет в чужие руки, конкуренты воспользуются ею в своих целях. Разумеется, совместная работа отделов подчиняется определенным правилам. Если отделы начнут работать с чужой информацией, в компании начнется хаос и дело может кончиться крахом Корпорации XYZ.
Итак, Корпорация XYZ установила правила, определяющие, кто и зачем может получать доступ к служебной информации. Только менеджерам разрешается просматривать личные дела сотрудников, но лишь тех, которые являются их подчиненными. Менеджеры не имеют доступа к личным делам сотрудников из других отделов, потому что излишняя осведомленность может плохо отразиться на делах Корпорации XYZ. Следовательно, такие ограничения необходимы для нормальной работы.
ООП основано на том же принципе — в нем тоже имеются ограничения, определяющие, какие фрагменты кода могут использоваться другими фрагментами. Объекты выполняют свои задачи и взаимодействуют с другими объектами, лишь когда это действительно необходимо.
Хотя ООП требует нового подхода к программированию, оно обладает несомненными удобствами для программистов. Одни и те же принципы, заключенные в программном фрагменте, применяются на всех стадиях — от анализа и проекта- рования до написания кода. ООП позволяет адекватно моделировать поведение реальных объектов.
Если они были хорошо спроектированы, открывается возможность многократного использования кода. Например, если в объекте реализован специальный алгоритм обработки данных, принятый в компании, им можно будет воспользоваться в другом приложении и обновленной версии той же программы — это не нарушит его работы.
Чтобы ООП работало действительно эффективно, вы должны научиться мыслить по-новому. Программа рассматривается как совокупность компонентов, причем каждый из них представляет собой объект. Визуальное программирование облегчает такой подход. Главное — помните, что вы можете понять суть ООП и уже умеете пользоваться объектами. Если вы дочитали книгу до этого места, то работа с готовыми объектами не представляет для вас особой сложности. Настало время узнать, как проектировать и создавать собственные объекты.
ПОДСКАЗКАСтарайтесь рассматривать программу как совокупность объектов. Если вы поймете основные принципы взаимодействия объектов, перед вами откроется новый способ разработки приложений.
Атрибуты объекта
Объект обладает атрибутами, определяющими его как самостоятельную сущность в мире программирования. У объектов, как и у любых компонентов Visual Basic, есть свойства, события и методы. Тем не менее они отличаются от процедур тем, что поддерживают три важных принципа: наследование, инкапсуляцию и полиморфизм.
В Visual Basic реализованы наследование и инкапсуляция, но не полиморфизм. Следовательно, с технической точки зрения Visual Basic не является объектно-ориентированным языком, но на его примере удобно изучать основы ООП. Давайте посмотрим, как устроен объект.
Свойства объекта
Как упоминалось в уроке 1, свойства описывают объект. Каждый объект, который вы используете или создаете в своей программе, обладает некоторым именем класса, по которому его можно отличить от других объектов. Мы воспользуемся свойствами для описания отдела кадров, о котором говорилось ранее в этом уроке. Прежде всего, с личными делами сотрудников могут работать только менеджеры, и это можно описать так:
Public IsManager As Boolean
Кроме того, менеджер имеет доступ к личным делам сотрудников только своего отдела. Следовательно, нам придется определить свойство для описания отдела:
Public Department As String
Наконец, мы должны указать чиновнику из отдела кадров имя интересующего нас сотрудника. Для этого мы создадим свойство EmployeelD:
Public EmployeelD As Long
На рис. 15.1 показано, как выглядит объект класса «отдел кадров». Обратите внимание на то, что имя и отдел сотрудника представлены соответствующими свойствами класса. Чтобы создать полезный объект, недостаточно наделить его свойствами — они должны использоваться методами того же объекта.
Рис. 15.1. Свойства класса «отдел кадров»
Методы объекта
Методами называются действия, выполняемые объектом. Например, объект-окно может отображать или скрывать себя на экране и даже изменять свои размеры. Какие же действия могут потребоваться от объекта «отдел кадров»? Самым простым будет чтение личного дела (рис. 15.2). Тем не менее, перед тем как объект обратится к личному делу, необходимо убедиться, что запрос поступил от менеджера соответствующего отдела. Метод может выглядеть так:
Public Function GetFileO As String
If IsManager and Department = "Администрация" Then
GetFile = "Джон Доу"
Else
GetFile = ""
End If
End Function
Данный метод сначала проверяет, имеет ли право запрашивающий просматривать требуемое личное дело. В нашем примере он должен быть менеджером из администрации. Для рядовых сотрудников и просто любопытствующих доступ к личным делам закрыт.
Рис. /5.2. Методы класса «отдел кадров»
Наследование
Наследованием называется способность объекта сохранять атрибуты класса-родителя. Например, созданный объект формы наследует свойства и методы своего класса-родителя. Он обладает такими свойствами, как Name, WindowState и BorderStyle, а также методами Load, Unload и Hide.
Чтобы создать экземпляр объекта в Visual Basic, следует указать на его принадлежность некоторому классу и затем воспользоваться ключевым словом New. Новый объект наследует свойства и методы родителя.
Сказанное можно пояснить на примере класса диалоговых окон из урока 10. Класс clsDialogs содержит методы YNBox, ErrMsg и LoginBox. Кроме того, в приложении-примере показано, как происходит создание нового диалогового окна. Прежде всего выделяется память для хранения объекта:
Dim dlg As clsDialog
Затем сам объект создается с помощью ключевого слова New:
Set dlg = New clsDialog
Новый объект, dlg, содержит три метода: YNBox, ErrMsg и LoginBox. Все они были созданы в исходном классе clsDialogs.
Эти же принципы относятся и к нашему классу. Ключевое слово New в Visual Basic выполняет ту же функцию, что и заполнение анкеты для отдела кадров с запросом на просмотр личного дела.
Инкапсуляция
Инкапсуляцией называется механизм, благодаря которому данные и методы объекта скрываются от внешнего мира. Программист изолируется от сложностей внутренней реализации объекта. Инкапсуляция составляет одну из самых сильных сторон ООП.
Именно инкапсуляция предотвращает посторонний доступ к личным делам. Каждый отдел работает с собственной информацией, которая может быть предоставлена только уполномоченным лицам при соблюдении определенных условий. Точно так же ведут себя и объекты.
Отдел кадров «инкапсулирует» личные дела, запирая их в шкафу. Чтобы получить к ним доступ, необходимо заполнить специальную анкету. В Visual Basic инкапсуляцию обеспечивает ключевое слово Private. Возможно, вы заметили, что большинство процедур в модулях кода объявляются с ключевым словом Private, — таким образом, запрещается доступ к этим методам со стороны других форм и модулей. Если некоторая процедура должна быть открытой, перед Sub или Function следует поставить ключевое слово Public:
Public Function Format_Disk(Drive As String)
ПРИМЕЧАНИЕПроектируя объект, старайтесь ограничиваться минимумом открытых свойств. Закрывайте все, с чем не должны работать внешние программы. Это предотвратит случайное внесение ошибок другими программистами.
Полиморфизм
Полиморфизм — способность объекта принимать различные формы. Вы знаете, что объекты могут быть производными от других объектов. Новый объект наследует методы и свойства объекта-родителя. Полиморфизм позволяет добавлять, видоизменять или даже удалять некоторые особенности поведения производного объекта.
Предположим, отдел информационных технологий решил открыть свой филиал отдела кадров. Филиал в основном следует тем же правилам, что и основной отдел, но при этом пользуется некоторыми возможностями, которые используются только в отделе информационных технологий. Например, отдел кадров хранит все документы на бумаге, а отдел информационных технологий предпочитает пользоваться компьютерами. Возможно, отдел информационных технологий собирается выписывать премии для программистов, соблюдающих рабочий график, или же ввести особые дисциплинарные меры, не входящие в компетенцию основного отдела кадров.
Отдел информационных технологий пользуется собственным вариантом анкеты, основанным на анкете отдела кадров. В ООП для этого следует создать экземпляр класса «отдел кадров» и изменить его с учетом специфики отдела информационных технологий. К счастью, в нашем случае все отличия сводятся к тому, что отдел хранит личные дела только своих сотрудников, причем не на бумаге, а в компьютере (рис. 15.3). В результате оба класса будут обладать одинаковыми свойствами и методами, но если вы запросите личное дело в отделе кадров, его достанут из шкафа. В отделе информационных технологий та же самая информация извлекается из компьютера. В ООП такой эффект достигается благодаря полиморфизму. Кроме того, рядовой служащий любого отдела точно знает, где в случае необходимости можно получить ту или иную форму.
Рис. 15.3. Полиморфизм