Скачиваний:
11
Добавлен:
30.09.2018
Размер:
31.35 Кб
Скачать

8 8. Лекция: Элементы работы с классами. Кратко об отладке программ: версия для печати и PDA

Представлена практическая работа, позволяющая получить представление о создании классов. С использование практической работы 13 "Процедуры Property" можно существенно расширить представление о возможностях классов. Во второй части лекции кратко изложены вопросы отладки программ. Элементы объектно-ориентированного программирования Изменение характера разработок привело к необходимости создания новых языков программирования.

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

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

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

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

полиморфизм - способность объектов (могущих обладать свойствами/методами с одинаковыми названиями) выбирать метод/свойство на основе сообщений; каждый объект реагирует по своему на одно и то же сообщение.

  Классы Шестая версия Visual Basic является событийно-управляемым объектно-базирующимся языком, не доходящим до уровня объектно-ориентированного. Объектно-ориентированным делает язык сильно развитые составляющие - наследование и полиморфизм.

  Класс содержит компоненты - свойства, поля, методы и события; класс есть шаблон объекта и можно создавать объекты - экземпляры класса. С использованием модуля класса объекту передаeтся структура класса. С помощью свойств, полей, методов и событий объект реагирует на действия системы, пользователя, приложения. Модуль класса можно ввести в проект командой: меню Проект Добавить модуль класса/соответствующей кнопкой панели инструментов/с использованием контекстного меню Окна проекта.

  С помощью процедур Property можно cоздавать свойства класса; их можно присваивать (Let) и считывать (Get). Если использовать для создания процедур Property окно Инструменты Добавить процедуру, то создаются инструкции описания обеих процедур (Property Let и Get).

  Методы - это процедуры, содержащиеся в классе и действующие на объект. Метод может быть создан и с помощью Мастера классов.

  События служат для обеспечения реакции объекта на внешние воздействия. Cобытие может быть создано аналогично созданию процедур Sub, Function, Property.

  После создания компонентов класса его можно использовать. В проектах используются объекты, созданные на основе класса; способы создания:

  Dim оbject As New Class1 ' создание объекта класса Class1 или: Dim оbject As Class1 Set оbject = New Class1 Проект с классом должен включать две процедуры Class_Initialize () для подготовительных действий и Class_Terminate () для завершающих действий. Для удаления ссылки на объект после выполнения процедур (удаление объекта из памяти) используется ключевое слово Nothing: Set object = Nothing

  Объекты могут объединяться в логические единицы. На набор таких элементов - объект Сollection можно ссылаться как на единое целое. Свойство Count определяет число элементов, метод Add служит для добавления объектов, метод Remove - для удаления. Семейства можно создавать также с помощью Мастера классов.

  Классы можно создавать с помощью Мастера классов следующим образом:

  создать новый проект Standard.EXE,

в меню Добавления выбрать Add-In Manager,

в выведенном диалоговом окне маркировать строку VB 6 Class Builder Utility, сделать щелчок на флажке Loaded, затем - щелчок на кнопке ОК,

в меню Добавления появляется новая команда - Class Builder Utility, мастер классов стартует после щелчка на этой команде. Другой способ старта мастера: меню Проект Добавить модуль класса в выведенном диалоговом окне выбрать VB Class Builder,

 

выводится диалоговое окно Class Builder, с его помощью создаeтся класс: меню File New Class в поле Name ввести имя создаваемого класса OK,

cоздать свойства класса: File New Property в соответствующих полях вводить названия свойств (Name), - тип данных (Data Type), использовать поле Daclaration, OK,

cоздать методы класса: File New Method Method Builder в соответствующих полях вводить данные. Аналогично создаются события (в этом случае используется Event Builder),

 

обновить проект: меню File Update Project. После обновления проекта дальнейшие изменения с помощью диалога Мастера далее невозможны; дальнейшие изменения можно сделать только путeм редактирования кода класса,

после того, как Мастер классов сгенерирует код, он будет сразу же продемонстрирован в окне кода. Код содержит комментарии.

 

  Практическая работа 49. Работа с классом Создание компонентов класса, создание экземпляра класса рассматривается на примере проекта, дающего справку (минимальные данные, служащие для демонстрации) желающим провести отпуск за границей. Пользователь должен сделать щелчок на соответствующем элементе массива OptionButton, если он хочет быть в отпуске за границей; далее в списке ComboBox выбрать страну, после чего выводится список городов, где можно провести отпуск и соответствующая стоимость, рис. 8.1.

  В данном случае создаeтся класс с 4 свойствами и 3 методами. Далее на основе класса создаeтся объект:

  Dim object As Class1 Set object = New Class1 Созданный объект нужно после работы удалить из памяти: см. код процедуры Form_Unload().

  Последовательность действий:

  в стандартный проект добавить модуль класса: контекстное меню Окна проекта Добавить Модуль класса,

ввести код в область модуля класса, см. ниже; пояснения даны под комментариями. Инициализация свойств класса проводится в процедуре Class_Initialize (),

создать методы класса. Три метода создаются в процедурах: Public Function Met1(), Public Function Met2() и Public Function Met3 (). Ввести этот код, пояснения даны под комментариями к коду,

создать требуемые объекты на форме (см. код и рис. 8.1), ввести код в область (General) (Declarations) формы, код процедуры Form_Load () и код процедуры Command1_Click (), стартовать проект, проверить его работу.

  Область модуля класса ' описание переменной, используемой при принятии решения, ' хочет ли пользователь ехать за границу Public Urlaub As Boolean Public STAAT As String ' страна, выбранная пользователем Public Ort As String ' город, имеющийся в списке стран Public Kosten As String ' стоимость поездки Private Sub Class_Initialize() ' инициализация свойств класса Urlaub = False: STAAT = "" : Ort = "": Kosten = "" End Sub Public Function Met1() As Boolean ' если пользователь нажал кнопку OptionButton (Ja), то ' выполнить процедуры Met2 и Met3, результатом ' работы которых является вывод данных: город и ' стоимость, иначе Met1 = False и выводится ' сообщение "Hier gibt man Auskunft ueber Urlaub im ' Ausland" - "Справки выдаются желающим ' отдыхать за границей" If Urlaub = True Then Ort = Met2() Kosten = Met3() Met1 = True Else Met1 = False End If End Function ' после щелчка на кнопке Ja/Nein (массив переключателей), ' рис. 8.1 и выбора страны в списке ComboBox ' (Name = STAAT, слева надпись: "Staat auswaehlen!") ' вывести место отдыха Public Function Met2() As String Select Case STAAT Case "SPANIEN": Met2 = "MADRID" Case "ENGLAND": Met2 = "LONDON" Case "SCHWITZERLAND": Met2 = "GENF" End Select End Function Public Function Met3() As String ' вывести стоимость Select Case STAAT Case "SPANIEN": Met3 = "500 $" Case "ENGLAND": Met3 = "800 $" Case "SCHWITZERLAND": Met3 = "1000 $" End Select End Function Область формы Dim url As Class1 ' описать объект Private Sub Form_Load() ' создать объект Set url = New Class1 ' заполнить список ComboBox названиями трeх стран STAAT.AddItem "SPANIEN": STAAT.AddItem "ENGLAND" STAAT.AddItem "SCHWITZERLAND" End Sub Private Sub Command1_Click() ' вывести справочные данные Dim stri As String ' описание аргумента функции MsgBox ' значение свойства STAAT объекта url взять из списка поля ' ComboBox url.STAAT = STAAT.Text ' значени свойства Urlaub объекта url взять из поля массива ' OptionButton url.Urlaub = Option1(0).Value If url.Met1 = True Then ' вывод справочных данных stri = CStr(url.Ort) & vbCrLf: stri = stri & CStr(url.Kosten) MsgBox stri Else stri = "Hier gibt man Auskunft ueber Ublaub im Ausland" MsgBox stri End If End Sub ' удалить объект из памяти Private Sub Form_Unload(Cancel As Integer) Set url = Nothing End Sub  

увеличить изображение

Рис. 8.1.  Работа с классом  

  Кратко об отладке программ Общие сведения Рассматриваются следующие группы ошибок:

  синтаксические, при обнаружении которых выводится пояснение. При выводе кода строка с синтаксической ошибкой выделяется красным цветом. Проверку синтаксиса можно включать/отключать следующим образом: меню Инструменты Параметры Editor Auto Syntex Check. Эффективно использование контекстной подсказки QuickInfo с полным синтаксисом вводимых оператора, функции, метода, процедуры. При необходимости ее можно отключить: меню Инструменты Параметры Editor AutoQuickInfo,

ошибки в структуре программы. Они обнаруживаются при компиляции проекта: меню Запуск Start With Full Compile и при создании выполняемого файла: Файл Make*. EXE,

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

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

  Обработка ошибок времени выполнения Обработчик ошибок состоит из 3-х частей: оператор On Error GoTo в начале подпрограммы/функции, который сообщает, что следует предпринять при возникновении ошибки, код обработчика и оператор выхода из обработчика, указывающий, куда перейти после обработки ошибки; в этом отношении рассмативаются следующие варианты:

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

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

использование команды Resume (метка) для продолжения работы со строки с указанной меткой,

использование команды Exit Sub/Function для выхода из программы/функции.

  Практическая работа 50. Обработчики ошибок А. Структура обработчика ошибок Создать командную кнопку (Caption = Structure, Resume Next), рис. 8.2,

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

  Private Sub Command1_Click() ' в случае ошибки перейти к локальному обработчику ошибок On Error GoTo LocalHandler Dim x As Byte, str As String ' описание переменных ' задать значение х, не соответствующее описанному выше ' типу данных X = -7 GoTo LocalExit ' выйти из процедуры, если ошибки не было LocalHandler: ' простейший обработчик выводит номер ошибки и пояснения str = CStr(Err.Number) & " - " & Err.Description MsgBox str, vbCritical, " Command1" Resume Next ' продолжить выполнение со следующей строки LocalExit: End Sub В. Использование команды Resume. Использование команды Resume приводит к повторному выполнению строки, содержащей ошибку; команду целесообразно использовать, если есть уверенность, что ошибка исправима.

  Создать вторую командную кнопку (Caption = Resume), рис. 8.2,

ввести код, данный ниже; стартовать проект, в выведенное после старта проекта диалоговое окно InputBox ввести - 7; выводится сообщение об ошибке. Выполнение программы начинается с повторного ввода данных в диалоговое окно InputBox; ввести число 7 - ошибка исправлена.

  Private Sub Command2_Click() ' в случае ошибки перейти к локальному обработчику ошибок On Error GoTo LocalHandler Dim x As Byte, str As String ' описание переменных ' ввести число, не соответствующее описанному выше типу ' данных х = InputBox("Enter a Byte") GoTo LocalExit ' выйти из процедуры, если ошибки не было LocalHandler: ' обработчик выводит номер ошибки и пояснение str = CStr(Err.Number) & "-" & Err.Description MsgBox str, vbCritical, "Command2" ' продолжить выполнение cо строки, содержавшей ошибку Resume LocalExit: End Sub С. Использование команд Resume Next и Resume. Resume Next целесообразно использовать, если пользователь уверен, что программма будет эффективно работать после устранения ошибки.

  Создать третью командную кнопку (Caption = Resume Next, Resume), рис. 8.2,

ввести код, данный ниже; стартовать проект ввести в выводимое после старта проекта окно InputBox - 7; в выведенном диалоговом окне MsgBox сделать щелчок на кнопке "YES"; введeнное число (егo тип не соответствут описанию, данному в коде) будет заменено числом 25. Повторно сделать щелчок на третьей командной кнопке, ввести в окно InputBox - 7, сделать щелчок на кнопке "NO" (что означает "не заменять введeнное число - 7 на число 25") в выведенном диалоговом окне MsgBox; на экран повторно выводится диалоговое окно InputBox, ввести число (тип данных Byte): 7, рис. 8.2.

  Private Sub Command3_Click() On Error GoTo LocalHandler Dim x As Byte, str As String, mess As Long x = InputBox("Enter a Byte") MsgBox "x = " + CStr(x) GoTo LocalExit LocalHandler: If Err.Number = 6 Then str = "You have entered not Byte:" & vbCrLf str = str & "The program will now set 25." & vbCrLf ' выбрать YES, чтобы программно было установлено ' значение 25 str = str & "Select YES to set 25." & vbCrLf ' выбрать NO, чтобы вновь вернуться к вводу числа str = str & "NO - to return to enter a new value." mess = MsgBox(str, vbCritical + vbYesNo, "Command3") If mess = vbYes Then x = 25 Resume Next Else Resume End If End If LocalExit: End Sub  

Рис. 8.2.  Обработчики ошибок  

  Инструменты и средства отладки Имеются три кнопки, используемые для выполнения программ: Запуск - Start, Прерывание - Break и Остановка - End, рис. 8.3. При отладке нужно установить, с какого предположительно места программа не работает, после этого нужно остановить выполнение программы щелчком на кнопке Break, затем перейти непосредственно к работе с самой программой - найти ту инструкцию, которая содержит ошибку. Стартовать приложение можно кнопкой Start, нажатием клавиши F5 или использовать команды меню Запуск (Запуск или Запуск с полной компиляцией). Переход в режим отладки проводится с использованием кнопки Break. Переход (вновь) в режим выполнения - повторным нажатием клавиши F5 или использованием кнопки Continue (Продолжить); в режиме отладки кнопка Start меняет название на Continue.

  Особенность режима отладки состоит в том, что выполнение программы приостанавливается в области возникновения ошибки, при этом сохраняются значения всех текущих переменных. Панель отладки изображена на рис. 8.3. Вывод панели проводится следующим образом: меню Вид Панели Отладить.

   

Рис. 8.3.  Панель Отладить  

  Ниже приведены названия кнопок панели:

  Запуск.

Прерывание.

Остановка.

Переключить Стопточку.

Вход в процедуру - Step Into.

Проход за процедуру - Step Over.

Выход из процедуры - Step Out

Окно локальных переменных - Locals Window.

Immediate Window.

Окно просмотра - Watch Window.

Наблюдатель.

Стек вызовов - Call Stack.

  Инструменты отладки используются в режиме отладки. Точка останова - Breakpoint это выделенная строка программы, на которой выполнение останавливается (переход в режим отладки). Установить/удалить Breakpoint можно следующим образом: меню Отладка Переключить Стопточку (на панели инструментов используют кнопку-Ладонь, используется также клавиша F9; строка окрашивается красным цветом). Удалять этот маркер следует тем же способом (меню Отладка Clear All Breakpoint).

  Visual Basic выделяет желтым цветом строку, которая должна выполняться - это полоса индикатора , рядом с ней выводится желтая стрелка. Если выполнение программы прерывается в точке останова, то две строки красная и жeлтая комбинируются. Клавиша F8 позволяет перемещать (пошагово) жeлтую полосу в режиме Продолжить. В режиме отладки программы выполняются пошагово.

  Кнопка Step Into (Вход в процедуру) и соответствующая команда меню Отладка обеспечивает последовательное выполнение команд; если проводится вызов процедуры/функции, то может быть осуществлeн переход в соответствующую процедуру/функцию.

  Кнопка Step Over (Переход за процедуру) (используйте также клавиши Shift+F8) и соответствующая команда меню Отладка позволяет "перескакивать подпрограммы без захода".

  Кнопка Step Out (Выход из процедуры) и соответствующая команда меню Отладка используется, если при выполнении процедуры произошeл ошибочный вход в вызываемую процедуру или если оставшуюся часть процедуры не нужно выполнять пошагово.

  Если при поиске ошибок нужно знать последовательность вызова процедур, то следует использовать окнo Call Stack. Здесь отображeн список имен всех выполняемых в данный момент процедур.

  Важной задачей является проверка значений выражений или переменных. Контроль возможен только в определенных местах (значение локальных переменных можно проверить только в процедуре, в которой она объявлена, иначе появится сообщение: "Out of context"). Для просмотра значений переменных и выражений с помощью окна Data Tips нужно установить курсор на соответствующем выражении, пример выведенного сообщения: Angle = 30.

  Всплывающая подсказка QickInfo отображает синтаксис функции, оператора, метода или процедуры, выбираемых в окне кода, пример выведенного сообщения: Local fSinus As Single.

  Всплывающее окно ParameterInfo даeт информацию о параметрах текущей функции, которая является параметром процедуры, пример выведенного сообщения: Sin(Number As Double) As Double.

  При использовании для просмотра значений выражений окна Quick Watch курсор должен находиться на имени контролируемой переменной. Добавить переменную для осуществления контроля в окно просмотра Add Watch можно из диалогового окна Quick Watch кнопкой Add. Можно использовать и окно Edit Watch для редактирования/удаления выражений.

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

Соседние файлы в папке INTUIT Лекции Visual Basic