Н. Г. Волченков Лекции по курсу «ООС» для потока Ф3 Лекция 1. «Введение. Создание Windows-приложений с помощью ООС» План. 1. 2. 3. 4. Цель курса «Высокоуровневые методы программирования» («ВМП»). Основные понятия. Система проектирования Visual Basic 6. Начало работы в IDE. Создание простейших проектов. 1. Цель курса «ВМП». Название курса является более общим, нежели его реальное содержание. Более конкретным было бы название «Объектно-ориентированные среды» («ООС») Так, кстати, данный курс назывался совсем недавно, 2 года назад. По определению, ООС — это комплексы инструментальных программных средств, предназначенных для создания новых или модификации старых Windows-приложений, в которых широко используются технологии объектно-ориентированного программирования (ООП). Цель данного курса — ознакомить слушателей с одной из самых популярных в настоящее время объектно-ориентированной средой — системой проектирования Windowsприложений самого широкого диапазона: системой проектирования и языком программирования Visual Basic 6. Есть, разумеется, и другие подобные среды, но мы ограничиваемся лишь этой. Надо заметить, что для разработки современных программных приложений для ПК наиболее популярными в настоящее время являются 3 системы, 3 технологии: на базе языка Паскаль — система Delphi, на базе языка СИ — система Visual C, на базе языка Бейсик — система Visual Basic. Здесь выбрана 3-я система по следующим причинам. 1. Сейчас на рынке ОС для ПК наиболее распространены разработки фирмы Microsoft. Это, прежде всего, система Windows разных поколений (95, 98, Me, NT, 2000, XP). Очень популярны разнообразные программы Microsoft Office. В большинстве этих программ присутствует особый механизм для создания пользователем устраивающих его маленьких (или даже весьма немаленьких) дополнительных средств обработки информации — так называемых макросов. Их можно создавать на языке VBA (Visual Basic for Applications), который очень близок к языку Visual Basic. Во всяком случае, освоив Visual Basic, можно легко переквалифицироваться в программиста на языке VBA. Пример А. При подготовке текста данной лекции в текстовом редакторе Word я, например, для удобства работы создал макрос для ввода часто встречающихся иностранных слов и словосочетаний. Это вылилось в то, что на линейке инструментов у меня теперь есть новая кнопка, щёлкая которую, я заставляю появляться небольшое окошко с полем списка, в 18.01.16 Стр. 1 Н. Г. Волченков Лекции по курсу «ООС» для потока Ф3 котором приведён интересующий меня перечень терминов. Щёлкая строку списка и закрывая данное окно, я получаю в тексте нужный мне термин. При создании макроса, выполняющего эту операцию, я использовал имеющуюся в редакторе MS Word 2002 (XP) среду VBA, в которой я создал соответствующую форму и 2 программы — для самого этого макроса: Public Ws As String Sub InsertSelWord() ' ' InsertSelWord Макрос ' Макрос создан 08.02.04 Николай ' UserForm1.Show Selection.TypeText Text:=Ws End Sub и для этой формы: Private Sub ListBox1_Click() NewMacros.Ws = ListBox1.Text End Sub Private Sub UserForm_Activate() ListBox1.AddItem " Visual Basic" ListBox1.AddItem " Microsoft" ListBox1.AddItem " Windows" ListBox1.AddItem " Word" ListBox1.AddItem " Microsoft Word" NewMacros.Ws = "" End Sub Пример Б. В качестве другого офисного приложения рассмотрим MS Excel. Пусть, например, на листе книги Excel представлена таблица футбольного чемпионата, в которую, в начале ее ведения, необходимо вписать имена 12 команд, участвующих в первенстве. Можно, конечно, вписывать эти имена непосредственно в ячейки таблицы B4 – B15, но можно создать и процедуру, обеспечивающую ввод посредством стандартных окон ввода системы Windows. Процедура эта следующая: Sub ВписатьИменаКомандВФутбольнуюТаблицу() For i% = 1 To 12 ИмяКоманды$ = InputBox("Введите имя команды № " & i, _ "Ввод имен команд", "Трактор") ActiveWorkbook.Worksheets("Л1").Range("B" & i + 3) = ИмяКоманды Next End Sub 18.01.16 Стр. 2 Н. Г. Волченков Лекции по курсу «ООС» для потока Ф3 2. Сейчас многие пользователи Интернета увлекаются изучением языка гипертекстовой разметки (HTML) для редактирования Web-страниц. Сам по себе, этот язык очень прост и ничего общего с Visual Basic не имеет. Но для достижения очень многих заманчивых целей при работе с такими страницами (в частности, для использования на них элементов управления самого разного назначения) можно использовать упрощённый диалект Visual Basic — язык VBScript. Это язык сценариев работы гипертекстовых страниц. (Многие используют альтернативный язык сценариев, — JavaScript. Он разработан фирмой Netscape. Но Visual Basic становится не менее популярным.) Если на Вашем компьютере есть страницы в формате HTML (например, скопированные из Сети), щёлкните правой кнопкой мыши данную страничку, в открывшемся меню выберете команду Просмотр в формате HTML, — и Вашему взору откроется текст на языке HTML, соответствующий этой странице1. Этот текст будет представлен в обычном Блокноте системы Windows. Отредактируйте его, — вставьте в каком-нибудь месте, например после следующих строк: <html> <head> <meta http-equiv="Content-Type"content="text/html; charset=windows-1251"> <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0"> <title> VB-проекты Николая Волченкова </title> </head> такой, например, фрагмент: <SCRIPT Language = "VBScript"> <!-MsgBox "Hi, User!" Dim BDate Dim ND BDate=Inputbox("Укажите дату Вашего рождения в виде: dd.mm.yyyy", "Ввод даты", "20.05.1969") ND=Mid(Date,7)-Mid(BDate,7) MsgBox "Вы прожили " & ND & " года (лет)." --> </SCRIPT> Забегая вперёд (в последующих лекциях об этом мы поговорим подробнее), я поясню, что здесь запрограммировано. Msgbox — появление Окна сообщения, Dim — объявление переменных, Inputbox — появление Окна ввода данных, Mid — выделение подстроки, в данном случае, года, — цифр после 6-го символа в дате. Сохраните этот изменённый текст и снова откройте (вернее, обновите) данную страничку. Вы убедитесь, что при её открытии появилось нечто новое — появление окон сообщений и ввода информации пользователем! Обычный язык HTML не позволил бы этого добиться. Зная язык Visual Basic, Вы без труда сможете вставлять в Ваши Web-страницы подобного рода «усовершенствования»! 2. Основные понятия. 1 После установки Windows XP я это делаю уже по-другому: открываю документ Web с помощью MS Internet Explorer, выбираю меню View, далее – команду Source, – открывается окно Блокнота, – редактирую текст HTML, сохраняю его, закрываю Блокнот и делаю Обновление Web-страницы. 18.01.16 Стр. 3 Н. Г. Волченков Лекции по курсу «ООС» для потока Ф3 Объект — это один из элементов (блоков, кирпичиков), из которых состоит программное приложение. Если оно, конечно, создавалось с помощью технологии объектноориентированного программирования. Объект должен рассматриваться как представитель определённого класса (множества) объектов. У класса объектов должно быть имя и набор свойств. Свойства конкретного объекта как представителя класса, наследуются у класса. Имя — это уникальное слово или выражение, которое отличает данный класс от других классов. Свойство — это качественная или количественная характеристика, определяющая внешний вид, размеры, поведение и ряд других особенностей объекта, принадлежащего данному классу. Например, рассмотрим класс с именем ТИГР. У этого класса есть свойства: дата рождения, масса, наличие клыков, наличие полосатой окраски шкуры, выкармливание детёнышей молоком, любовь к сырому мясу и т.д. У конкретного объекта, тигра по имени Шерхан, есть все указанные свойства и свои собственные свойства, например, хромая передняя левая нога, определённый возраст, определённая масса и т.д. У свойств объекта есть значения (например, ИСТИНА или ЛОЖЬ для свойства «наличие клыков», численное значение массы, численное значение возраста и т.д.). У тех же свойств не объекта, а класса значений может и не быть (например, у свойств «масса» и «возраст» класса ТИГР). Все объекты какого-нибудь класса могут обладать методами — определёнными алгоритмами своего поведения. И даже разные классы могут обладать одними и теми же методами. Например, и ТИГР, и ВОЛК (два разных класса) могут владеть одним и тем же алгоритмом охоты на мелких грызунов. Наконец, в объектно-ориентированных средах есть ещё одно важное понятие, связанное с объектами и классами объектов, — это событие. Событие — это либо сигнал, производимый самим объектом, либо сигнал «извне», воспринимаемый данным объектом, который вызывает некоторое действие, происходящее с данным объектом. Чтобы мой рассказ был более содержательным, я сразу от общих понятий перейду к их конкретному воплощению в системе визуализированного программирования, которой является система Visual Basic. Объектами в ней являются многочисленные элементы управления, находящиеся в «Окне» — экранной форме приложения. Это текстовые и графические поля, командные кнопки, полосы прокрутки, окна списков, окна общего диалога для установки шрифта и цвета, открытия и сохранения файла и т.д. Кроме того, объектами являются и такие, например, сущности, как буфер обмена, сама экранная форма, принтер и т.д. В системе Visual Basic объекты считаются экземплярами (представителями) классов этих объектов, для которых установлены вполне определённые наборы свойств, многие из которых не имеют конкретных значений. При проектировании будущего приложения программист (разработчик проекта) всегда имеет возможность обратиться к указанным наборам свойств. Имеет он также возможность создавать в неограниченном количестве конкретные объекты — экземпляры одного класса, например, несколько текстовых полей или несколько командных кнопок, несколько команд меню или несколько кнопок на линейке инструментов. У классов указанных объектов есть методы — созданные фирмой Microsoft стандартные программы — процедуры, которые программист (проектировщик) может использовать в своём программном коде. Из набора предлагаемых системой событий, которые могут произойти с конкретным объектом, программист может выбрать интересующее его событие. После чего написать программу, которая будет описывать те действия, которые должны, по мнению программи- 18.01.16 Стр. 4 Н. Г. Волченков Лекции по курсу «ООС» для потока Ф3 ста, происходить после возникновения этого события. Что же это за события? Их очень много. Например, — щелчок мышью (Click) командной кнопки, текстового или графического поля, строки в окне списка и т.д., загрузка (Load) новой формы, любое изменение (Change) на полосе прокрутки и т.д. Надо сказать, что в таких средах, как Visual Basic, воплощён один из главных принципов объектно-ориентированного программирования, — не программа создаёт события, а события управляют работой программы. Я должен коротко перечислить ещё несколько понятий, характерных для ООП. Это: Инкапсуляция. Это слово означает сокрытие информации. Объекты должны скрывать свою внутреннюю структуру от пользователя, проявляя себя только через свои свойства и методы. Это обеспечивает сохранность объектов в смысле неизменяемости их внутренней структуры. Наследование. Новый объект можно определить на основе уже существующих объектов, наследуя у существующих объектов значения многих свойств. Можно, например, по наследству передавать значение свойства «размер шрифта» от экранной формы, для которой это свойство «означено», другим объектам, находящимся на этой форме (кнопкам, меткам, текстовым полям и т.д.). Полиморфизм. Этот термин означает возможность использования одних и тех же методов разными классами объектов. Например, действие, обозначаемое как «+», может быть применено и к числам, и к строкам символов, и к компонентам, определяющим вид Окна сообщения (Msgbox). Но результат действия этих методов при этом может быть разным. А теперь от общих понятий перейдём к освоению конкретных инструментов, с помощью которых Вы будете создавать свои собственные приложения в графической среде Windows. 3. Система проектирования Visual Basic 6. Начало работы в IDE. Это система, которая может составлять предмет гордости фирмы Microsoft. Она входит в состав легко доступной в наше время системы Microsoft Visual Studio. Вы можете приобрести компакт диск с этой системой и установить её на своём домашнем компьютере (или на компьютере своей фирмы). Требования не слишком жёсткие по нынешним временам — ОП не менее 16 Мб, сотня Мб на винчестере. Справочную систему MSDN устанавливать вовсе не обязательно, лучше (это мой личный опыт) черпать справочную информацию из книг на русском языке. Благо, их сейчас очень много. В рекомендованной Вам литературе (Волченков-2000, книга 1, гл. 1-2, Приложения 1-2) Вы можете найти необходимые Вам сведения для первого знакомства с данной системой проектирования и для начала работы в Интегрированной среде разработки этой системы (IDE — Integrated Development Environment). 4. Создание простейших проектов. Примеры 1,2. (Простейшие.) 1. (Книга1, стр.25 — 27, — «Здравствуй, пользователь!») Private Sub Command1_Click() MsgBox “Hi, User!” End Sub 2. (Секундомер): 18.01.16 Стр. 5 Н. Г. Волченков Лекции по курсу «ООС» для потока Ф3 Command1 Label1 Timer1 Один из объектов — элемент управления Таймер. Значение его свойства Interval установлено равным 100 (0,1 секунды). Код программы следующий: Dim N As Double Private Sub Command1_Click() Timer1.Enabled = True End Sub ' Включение таймера Private Sub Timer1_Timer() N = N + 0.1 Label1.Caption = Round(N, 1) End Sub Можно слегка улучшить программу, — после щелчка кнопки надпись на ней должна измениться (вместо слова «Старт» должно появиться слово «Финиш»): Private Sub Command1_Click() If Command1.Caption = "Старт" Then Label1.Caption = 0 N=0 Command1.Caption = "Финиш" Timer1.Enabled = True ' Включение таймера Else Command1.Caption = "Старт" Timer1.Enabled = False ' Выключение таймера End If End Sub (Процедура Timer1_Timer не меняется.) Пример 3. (Книга1, стр. 32 — 57, — «Площадь стен комнаты») 18.01.16 Стр. 6 Н. Г. Волченков Лекции по курсу «ООС» для потока Ф3 Пример 4. (Более сложный.) 1. Мышкой выделяется фрагмент 1-го и затем, — фрагмент 2-го текста («ОЛЯ» и «АСЯ»). Щелчок 1-й кнопки посылает конкатенацию этих фрагментов в Буфер обмена. Щелчок 2-й кнопки вызывает появление этой строки в 3-м текстовом поле. 2. Щелчками самой формы мы сдвигаем её вправо и вниз (каждый раз на 100 твипов вправо и на 50 твипов вниз). Указатель мыши при этом каждый раз меняет свой вид. Dim nc As Long Private Sub Command1_Click() Clipboard.SetText Text1.SelText + Text2.SelText End Sub Private Sub Command2_Click() Text3.Text = Clipboard.GetText End Sub ‘ SetText — это метод! ‘ GetText — это тоже метод! Private Sub Form_Click() nc = nc + 1 If nc = 8 Then nc = 1 Screen.ActiveForm.Left = Screen.ActiveForm.Left + 100 Screen.ActiveForm.Top = Screen.ActiveForm.Top + 50 Screen.MousePointer = nc End Sub Как автор, рекомендую свой трёхтомник для начинающих: Волчёнков Н.Г. Программирование на Visual Basic 6. Учебное пособие. Часть 1, 2, 3. Москва, ИНФРАМ, 2002 г. (2-е издание, – с исправлениями и дополнениями.) КОНЕЦ ЛЕКЦИИ 18.01.16 Стр. 7