Опубликован: 31.08.2006 | Уровень: специалист | Доступ: платный
Лекция 18:

Наследование форм и создание базовых классов

< Лекция 17 || Лекция 18: 12345 || Лекция 19 >

Следующий шаг: наследование базового класса

У меня есть еще один прием, касающийся классов, определенных пользователем, и наследования. Сейчас мы к нему перейдем. Точно так же, как при наследовании классов форм, вы можете наследовать обычные классы, которые вы сами определяете с помощью команды Add Class (Добавить класс) и модуля класса. Механизм наследования базового (родительского) класса состоит в использовании оператора Inherits, который включает ранее определенный класс в новый класс. Затем вы можете добавить в производный (дочерний) класс новые свойства или методы, которые будут отличать его от базового класса.

В следующем упражнении вы измените проект My Person Class, добавив в модуль класса Person второй класс, определенный пользователем. Этот новый класс с именем Teacher будет наследовать от класса Person свойство FirstName, свойство LastName и метод Age, и будет добавлять свойство с именем Grade, в которое будет записываться уровень, на котором обучает новый учитель.

Использование ключевого слова Inherits

  1. Щелкните в Обозревателе решений на классе Person.vb, а затем щелкните на кнопке View Code (Просмотреть код).
  2. Прокрутите Редактор кода вниз так, что текстовый курсор окажется стоящим после оператора End Class. Как упоминалось выше, вы можете включить в модуль класса более одного класса, при условии, что каждый класс отделен от остальных операторами Public Class и End Class. Вы создадите в этом модуле класса новый класс с именем Teacher, а для встраивания в него методов и свойств, определенных вами в классе Person, будете использовать ключевое слово Inherits.
  3. Введите в Редактор кода следующее определение класса. (Введите операторы, выделенные ниже жирным шрифтом - 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.

  4. Отобразите процедуру события Button1_Click формы Form1. Вместо создания новой переменной для хранения класса Teacher, я просто использую имеющуюся переменную Employee - единственное различие будет в том, что теперь я могу установить свойство Grade нового сотрудника.

  5. Измените процедуру события 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 не используется, но я сделал это только для того, чтобы сократить до минимума информацию, выводимую в окне сообщения. Когда вы определяете свойства и методы класса, вам не требуется использовать их в коде программы.

  6. Чтобы запустить программу, щелкните на кнопке Start (Начать).

    Примечание. Готовая программа Class Inheritance лежит в папке c:\vbnet03sbs\Гл.17\class inheritance.

    На экране появится форма для ввода данных о новом сотруднике.

  7. Введите в текстовое поле Имя ваше имя, а в текстовое поле Фамилия - фамилию.
  8. Щелкните на объекте выбора даты и прокрутите его до вашего дня рождения.
  9. Щелкните на кнопке Отобразить запись. Ваша программа сохраняет значения имени и фамилии в свойствах, а затем отображает следующее окно ввода.


  10. Введите 3, а затем щелкните на OK, чтобы закрыть окно ввода. Приложение сохраняет число 3 в новом свойстве Grade и использует свойства FirstName, LastName и Grade для отображения информации о новом сотруднике в подтверждающем окне сообщения. Вы увидите такое сообщение.


  11. Если хотите, поэкспериментируйте еще с несколькими значениями, а затем щелкните на кнопке Закрыть формы. Программа остановится, и вернется среда разработки. Вы закончили работать с классами и наследованием в этой лекции.
Дальнейшие эксперименты с объектно-ориентированным программированием

Если вам понравился этот экскурс в методики написания объектно-ориентированных кодов, то в 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
< Лекция 17 || Лекция 18: 12345 || Лекция 19 >
Сайдахмад Зарипов
Сайдахмад Зарипов
Жанболат Шаймерден
Жанболат Шаймерден

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

Виталий Григорьев
Виталий Григорьев
Россия, москва, мгсги, 2011
Надежда Серекпаева
Надежда Серекпаева
Россия, Тюмень, Тюменский индустриальный институт, 1992