Наследование форм и создание базовых классов
Следующий шаг: наследование базового класса
У меня есть еще один прием, касающийся классов, определенных пользователем, и наследования. Сейчас мы к нему перейдем. Точно так же, как при наследовании классов форм, вы можете наследовать обычные классы, которые вы сами определяете с помощью команды Add Class (Добавить класс) и модуля класса. Механизм наследования базового (родительского) класса состоит в использовании оператора Inherits, который включает ранее определенный класс в новый класс. Затем вы можете добавить в производный (дочерний) класс новые свойства или методы, которые будут отличать его от базового класса.
В следующем упражнении вы измените проект My Person Class, добавив в модуль класса Person второй класс, определенный пользователем. Этот новый класс с именем Teacher будет наследовать от класса Person свойство FirstName, свойство LastName и метод Age, и будет добавлять свойство с именем Grade, в которое будет записываться уровень, на котором обучает новый учитель.
Использование ключевого слова Inherits
- Щелкните в Обозревателе решений на классе Person.vb, а затем щелкните на кнопке View Code (Просмотреть код).
- Прокрутите Редактор кода вниз так, что текстовый курсор окажется стоящим после оператора End Class. Как упоминалось выше, вы можете включить в модуль класса более одного класса, при условии, что каждый класс отделен от остальных операторами Public Class и End Class. Вы создадите в этом модуле класса новый класс с именем Teacher, а для встраивания в него методов и свойств, определенных вами в классе Person, будете использовать ключевое слово Inherits.
-
Введите в Редактор кода следующее определение класса. (Введите операторы, выделенные ниже жирным шрифтом - Visual Studio автоматически добавит остальные операторы.)
Public Class Teacher Inherits Person Private Level As Short Public Property Grade() As Short Get Return Level End Get Set(ByVal Value As Short) Level = Value End Set End Property End Class
Оператор Inherits связывает класс Person с этим новым классом, встраивая в него все свои переменные, свойства и методы. Если бы класс Person находился в отдельном модуле или проекте, вы могли бы указать его расположение задав пространство имен, точно так же, как вы указываете классы библиотеки .NET Framework с помощью оператора Imports. По существу я определил класс Teacher как специальный тип класса Person - в дополнение к свойствам FirstName и LastName класс Teacher имеет свойство Grade, которое хранит уровень студента, обучаемого учителем. Теперь вы будете использовать этот новый класс в процедуре события Button1_Click.
-
Отобразите процедуру события Button1_Click формы Form1. Вместо создания новой переменной для хранения класса Teacher, я просто использую имеющуюся переменную Employee - единственное различие будет в том, что теперь я могу установить свойство Grade нового сотрудника.
-
Измените процедуру события Button1_Click в соответствии со следующим кодом. (Вводимые вами строки выделены жирным шрифтом.)
Dim Employee As New Teacher Dim DOB As Date Employee.FirstName = TextBox1.Text Employee.LastName = TextBox2.Text DOB = DateTimePicker1.Value.Date Employee.Grade = InputBox("На каком уровне вы обучаете?") MsgBox(Employee.FirstName & ""& Employee.LastName _ & "обучает на уровне "& Employee.Grade)
В этом примере я удалил вычисление текущего возраста - метод Age не используется, но я сделал это только для того, чтобы сократить до минимума информацию, выводимую в окне сообщения. Когда вы определяете свойства и методы класса, вам не требуется использовать их в коде программы.
-
Чтобы запустить программу, щелкните на кнопке Start (Начать).
Примечание. Готовая программа Class Inheritance лежит в папке c:\vbnet03sbs\Гл.17\class inheritance.На экране появится форма для ввода данных о новом сотруднике.
- Введите в текстовое поле Имя ваше имя, а в текстовое поле Фамилия - фамилию.
- Щелкните на объекте выбора даты и прокрутите его до вашего дня рождения.
-
Щелкните на кнопке Отобразить запись. Ваша программа сохраняет значения имени и фамилии в свойствах, а затем отображает следующее окно ввода.
-
Введите 3, а затем щелкните на OK, чтобы закрыть окно ввода. Приложение сохраняет число 3 в новом свойстве Grade и использует свойства FirstName, LastName и Grade для отображения информации о новом сотруднике в подтверждающем окне сообщения. Вы увидите такое сообщение.
- Если хотите, поэкспериментируйте еще с несколькими значениями, а затем щелкните на кнопке Закрыть формы. Программа остановится, и вернется среда разработки. Вы закончили работать с классами и наследованием в этой лекции.
Дальнейшие эксперименты с объектно-ориентированным программированием
Если вам понравился этот экскурс в методики написания объектно-ориентированных кодов, то в Visual Basic .NET, который стал истинно объектно-ориентированным языком программирования, вас ожидает еще больше приятных моментов. В частности, вы можете добавить в ваше определение класса события, создать значения свойств по умолчанию и поэкспериментировать с новой функцией полиморфизма, которая называется перегрузкой методов. Эти и другие функции ООП можно изучить с помощью справочной системы Visual Basic или более продвинутых книг по программированию на Visual Basic .NET.
Краткая справка по лекции 17
Чтобы | Сделайте следующее |
---|---|
Наследовать интерфейс и функциональность существующей формы | Щелкните на команде Add Inherited Form (Добавить производную форму) в меню Project (Проект), укажите имя производной формы, а затем щелкните на Open (Открыть). Для выбора наследуемой формы используйте Inheritance Picker (Выбор наследования), а затем щелкните на OK. Чтобы наследование было возможно, базовая форма должна быть скомпилирована в .exe- или .dll-файл. Если вы хотите наследовать от формы, которая не является компонентой текущего проекта, форма должна быть скомпилирована в .dll-файл. |
Настроить производную форму | Добавьте в форму элементы управления Области элементов и установите свойства. Заметьте, что вы не можете установить свойства наследуемых объектов формы. Эти объекты могут быть обнаружены по маленьким значкам и будут неактивными. |
Создать собственные базовые классы | Щелкните на команде Add Class (Добавить класс) в меню Project (Проект), укажите имя класса, а затем щелкните на Open (Открыть). С помощью кода программы определите класс в модуле класса. |
Объявить переменные класса |
Используйте ключевое слово Private, чтобы сделать ваши переменные скрытыми при изучении класса. Например: Private Name1 As String |
Создать в классе новое свойство |
Определите в классе открытую процедуру свойства. Например: Public Property FirstName() As String Get Return Name1 End Get Set(ByVal Value As String) Name1 = Value End Set End Property |
Создать в классе новый метод |
Определите в классе процедуру Sub или Function. Например: Public Function Age(ByVal Birthday As Date) _ As Integer Return Int(Now.Subtract(Birthday).Days _ / 365.25) End Function |
Объявить переменную объекта для использования в классе |
Используйте в операторе программы ключевые слова Dim и New, имя переменной и класс, определенный пользователем. Например: Dim Employee As New Person |
Установить свойства для переменной объекта |
Используйте обычный синтаксис для установки свойств объекта. Например: Employee.FirstName = TextBox1.Text |
Наследовать базовый класс в новом классе |
Создайте новый класс и используйте ключевое слово Inherits для встраивания определений базового класса. Например: Public Class Teacher Inherits Person Private Level As Short Public Property Grade() As Short Get Return Level End Get Set(ByVal Value As Short) Level = Value End Set End Property End Class |