Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sranaya_informatika.doc
Скачиваний:
24
Добавлен:
12.04.2015
Размер:
2.48 Mб
Скачать

Переопределение (перегрузка) методов

    Скажу несколько слов о такой "полезной вещи" как перегрузка (переопределение) методов (methods overloading) - в русскоязычной литературе принят дословный перевод - перегрузка, но лично я предпочитаю говорить - переопределение, что снимает множество вопросов новичков. Что это такое? Это возможность создать несколько вариантов одного и того же метода, отличающихся набором параметров. В качестве примера используем конструктор нашего любимого класса "Черный ящик".     Например в одном случае мы хотим сразу же при создании нового экземпляра класса (черного ящика) вырезать название и поместить в него содержимое, а в другом случае мы хотим только вырезать при создании ящика его название, а содержимое поместить потом. В данном случае, какой путь вы изберете, не принципиально, а зависит только от вашего желания и удобства в каждом конкретном случае.

Public Sub New(ByVal NewName As String)

mBoxName = NewName

End Sub

Public Sub New(ByVal NewName As String, ByVal NewContent As String)

mBoxName = NewName

mBoxContent = NewContent

End Sub

    Теперь при создании экземпляра класса можно использовать любой из двух конструкторов.

Dim myBlackBox As BlackBox = New BlackBox("Мой персональный черный ящик")

MessageBox.Show(myBlackBox.Name)

Dim myBlackBox As BlackBox = New BlackBox("Мой персональный черный ящик", "Прошлогодние газеты")

MessageBox.Show(myBlackBox.Name)

    Это справедливо для любого метода (Function или Sub), при этом возвращаемое значение тоже может быть разным.

Public Function OpenBox(ByVal DropContent As Boolean) As Boolean

Dim isSomethingThere As Boolean

...

Return isSomethingThere

End Function

Public Function OpenBox() As Boolean

Dim isSomethingThere As Boolean

...

Return isSomethingThere

End Function

Public Function OpenBox(ByVal WhatToAdd As String) As String

...

Return BoxContent

End Function

    Но, учтите, что функции должны отличаться параметрами, только тогда переопределение происходит, иначе компилятор выдаст ошибку, если вы определите для одинаковые функции отличающиеся лишь типом возвращаемого значения. На практике этого и не нужно, так как значение можно преобразовать.     Также, я должен сказать, что существует способ визуально выделить перегруженные (перегружаемые) методы, добавив к определению каждого ключевое слово Overloads.

Public Overloads Function OpenBox(ByVal DropContent As Boolean) As Boolean

Dim isSomethingThere As Boolean

...

Return isSomethingThere

End Function

Public Overloads Function OpenBox() As Boolean

Dim isSomethingThere As Boolean

...

Return isSomethingThere

End Function

Public Overloads Function OpenBox(ByVal WhatToAdd As String) As String

...

Return BoxContent

End Function

    Если вы используете ключевое слово Overloads хотя бы в одном определении функции, то вы должны использовать его во всех остальных. Зато, просматривая код в будущем, вы сразу же найдете перегруженные (переопределенные) методы.

Наследование

    Так, хорошо, теперь у нас есть готовый класс. Что же еще интересного нам позволяет сделать концепция ООП? Например, мы можем создать новый класс основываясь на этом, как бы унаследовав все его свойства и методы. Таким образом, чтобы написать новый класс нам не придется заново писать код всех методов и свойств, достаточно только внести некоторые изменения в существующий. Но, прежде чем наследовать новые классы, нужно сделать несколько изменений в существующем классе и определить, какие методы могут быть изменены (переопределены, опять!) в производном классе (derived). Пожалуй, хватит мучить наш "Черный ящик", пусть он немного отдохнет, а мы создадим новые классы, один назовем родителем (Parent), а другим дочерним (Child).     Для наследования используется ключевое слово Inherits, а для того, чтобы пометить методы как переопределяемые, используется ключевое слово Overridable.

Public Class Parent

Public Function Method() As String

Return "Parent -> Method"

End Function

Public Overridable Function OverridableMethod() As String

Return "Parent -> OverridableMethod"

End Function

End Class

Public Class Child

Inherits Parent

Public Overrides Function OverridableMethod() As String

Return "Child -> OverridableMethod"

End Function

End Class

    Кстати, в Visual Studio, послетого как вы создадите наследованный класс, вам не придется заново набирать определение переопределяемых методов в производном классе - достаточно выбрать метод из выпадающего списка Overrides методов (в окне редактирования кода).     Посмотрим как работают созданные нами классы, заодно убедившись в правоте всех вышесказанных слов.

Dim myParent As Parent = New Parent()

Dim myChild As Parent = New Child()

MessageBox.Show(myParent.Method()) ' отобразит Parent - > Method

MessageBox.Show(myChild.Method()) ' отобразит Parent - > Method

MessageBox.Show(myParent.OverridableMethod()) ' отобразит Parent - > OverridableMethod

MessageBox.Show(myChild.OverridableMethod()) ' отобразит Child - > OverridableMethod

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

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

 

!

Форма – это объект, представляющий собой окно на экране, в котором размещаются элементы управления.

 

Визуальное конструирование графического интерфейса проекта состоит в том, что на форму с помощью мыши помещаются и «рисуются» те или иные элементы управления.

Классы элементов управления имеют различное назначение в графическом интерфейсе проекта.  Текстовые полянадписи и списки обычно используются для ввода и вывода данных, графические окна  – для вывода графики, командные кнопкипереключатели и флажки для организации диалога и т.д.

На форму может быть помещено несколько экземпляров одного класса элементов управления. Например, несколько кнопок, каждая из которых обладает индивидуальными значениями свойств (надпись, размеры и др.).

 

!

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

 

Форма и элементы управления обладают определенными наборами свойств, методов и событий.

Событийные процедуры. Для каждого события можно запрограммировать отклик, т.е. реакцию объекта на произошедшее событие. Если пользователь производит какое-либо воздействие на элемент графического интерфейса (например, щелчок), в качестве отклика выполняется некоторая последовательность действий (событийная процедура).

Каждая событийная процедура представляет собой отдельный программный модуль, который реализует определенный алгоритм. Создание программного кода событийной процедуры производится с использованием алгоритмических структур различных типов (линейнаяветвление,выбор и цикл).

Имя процедуры включает в себя имя объекта и имя события.

Объект_Событие()

 

!

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

48 Алфавит языка Visual Basic

Алфавит - это полный набор букв, цифр и символов, принятых в языке для обозначения данных и действий над ними.

Алфавит языка Visual Basic включает следующий набор символов:

- прописные (A - Z) и строчные (а - z) буквы латинского алфавита;

- цифры от 0 до 9;

- знаки арифметических операций (в порядке возрастания приоритета): +, -, *, /, |, ^;

- знаки операций отношения: =, <, >.

- знаки препинания и разделители: ,  . : ; ( );

В алфавит языка входят также зарезервированные слова, которые не могут быть использованы в качестве имен переменных или процедур. Примеры зарезервированных слов: Dim, Sub, Integer и т.д. По умолчанию для выделения ключевых слов в окне редактирования кода Visual Basic используют шрифт синего цвета.

Данные

Данные - это возможные структуры языка, над которыми выполняются разрешенные действия (операции): константы, переменные и массивы. По способности к изменению все данные делятся на переменные и константы.

Переменная - это величина, которая может меняться при выполнении программы.

Константа - величина, не меняющаяся в процессе работы. Примером константы может быть число .

49 Типы переменных.

В Visual Basic различают переменные следующих типов.

Тип

Хранимая информация

Объем занимаемой памяти (байт)

Диапазон значений

Integer

Целые числа

2

От –32768 до 32767

Long

Целые числа

4

Приблизительно

Single

Десятичные числа

4

+/- 2.1Е9

Double

Десятичные числа

(двойной точности с плавающей точкой)

8

От – 3.402823Е38 до

- 1.401298Е-45 для отрицательных значений и от 1.401298Е-45 до 3.402823Е38 – для положительных

Currency

Числа, имеющие до 15 цифр перед десятичной точкой и до 4 цифр после нее

8

От –1.79769313486232Е308 до – 4.9406564584124Е-324 для отрицательных и от 4.9406564584124Е-324 до 1.79769313486232Е308 для положительных

String

Текстовая информация

1 на каждый символ

До 65 тыс. символов для строк фиксированной длины и до 2 млрд. символов для динамических строк

Byte

Целые числа

1

От 0 до 255

Boolean

Булевы значения

2

True(истина) или False(ложь)

Date

Информация о дате и времени

8

От 1-го января 100 года до 31-го декабря 9999 года

Object

Ссылки на рисунок или любой другой объект

4

Не определен

Variant

Значения любого из вышеперечисленных типов данных

16+1 на каждый символ

Не определен

В отличие от других языков программирования Visual Basic не требует объявлять переменные перед их использованием. В случае, если переменная не объявлена, Visual Basic использует тип данных, заданный по умолчанию Variant (произвольный).

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

– Dim VarName [As VarType] [,VarName 2[As VarType 2]]

– Private VarName [As VarType] [,VarName 2[As VarType 2]…]

– Static VarName [As VarType] [,VarName 2[As VarType 2]…]

– Public VarName [As VarType] [,VarName 2[As VarType 2]…],

где VarName – имя переменной,

VarType – тип переменной.

Определение: Переменные, доступные в любой процедуре, форме или модуле программы, называются глобальными.

Для создания глобальной переменой необходимо поместить оператор объявления переменной Public в раздел объявлений модуля.

Определение: Переменные, доступные только в пределах той процедуры, в которой они объявлены, называются локальными.

Константы

Visual Basic предлагает целый ряд констант. Существуют константы для определения цветовых наборов, типов доступа к данным, кодов клавиш и пр. Все константы в VB имеют префикс VB, например vbActiveTitleBar.

Чтобы узнать конкретное значение какой-либо из констант необходимо вызвать Object Browser при помощи кнопки на панели инструментов.

Кроме стандартных констант Visual Basic предоставляет возможность пользователю самому создать свои собственные константы:

Const name [As Type] = Value

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]