Создаем классы и объекты
Философия. Ну вот, свершилось! Пришла пора создавать классы. Класс – это фундамент современного объектного программирования. С классами мы имели дело на протяжении всей книги. Но то были классы, предоставляемые нам в готовом виде библиотекой классов .NET Framework. Сейчас мы будем создавать собственные классы в составе проекта. Выгоду от собственных классов вы почувствуете в следующей главе, а сейчас нам важно понять, как они создаются и взаимодействуют с другими модулями проекта.
Перед прочтением этого раздела полезно перечитать 6.1.
Классами библиотеки классов .NET Framework мы пользовались двояко: без создания объекта и с созданием объекта. В первом случае, чтобы воспользоваться возможностями класса, мы просто писали имя класса, точку и имя нужного нам свойства или метода этого класса. Так мы пользовались математическими функциями класса Math пространства имен System. Во втором случае, чтобы воспользоваться возможностями класса, мы должны были сначала создать объект – экземпляр этого класса, а уж затем писать имя объекта (а не класса), точку и так далее. Так мы пользовались перьями – объектами класса Pen. Мы не могли воспользоваться возможностями класса Pen, пока не создали объект класса Pen:
Dim Перо As New Pen(Color.Red, 20) 'Объявляем и создаем объект
При создании собственного класса вы сможете указывать, каким из двух способов данный класс будет использоваться. В этой главе мы будем рассматривать только второй способ.
Создаем класс. Создается класс совершенно аналогично стандартному модулю. Ваши действия: Создайте новый проект ® Project ® Add New Item ® в возникшем окне Add New Item (Рис. 21.1) выбираем Class ® Open. Вы видите, что в окне Solution Explorer появился значок Class1.vb, а в проект добавилось окно Class1.vb, явно предназначенное для ввода кода:
Public Class Class1
End Class
Перед вами класс, ваш собственный класс.
Переименуем в окне кода этот класс на Класс (просто чтобы показать, что это можно делать) и запишем в него такой код:
Public Class Класс
Public
C1 As Integer = 2281
Public
Sub Процедура()
Debug.WriteLine(2004)
End Sub
End Class
При объявлении переменной C1 вместо слова Dim я употребил слово
Public. Это означает, что переменная C1 будет видна не только в своем классе, но и из всех модулей проекта. Это же слово с тем же смыслом употреблено и при объявлении процедуры Процедура. Мы видим, что в простейшем случае класс – не более чем собрание переменных, процедур и других компонентов, то есть не более, чем стандартный модуль. Так же, как и в модуле, в нем нет ничего видимого – ни формы, ни элементов управления. Но ценность и сила его, конечно, в объектах, которые могут быть из него порождены. Стандартный же модуль объекты порождать не способен.
Создаем объект и пользуемся им. Поместим на форму кнопку и запишем в окне кода формы такой текст:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Объект As New Класс
Debug.WriteLine(Объект.C1)
Объект.Процедура()
End Sub
Запустите проект, нажмите кнопку, проект напечатает:
2281
2004
Первая строка процедуры создает объект – экземпляр созданного нами класса. делается это привычным образом – при помощи слова New. После этого мы можем пользоваться переменными и процедурами объекта из других модулей. Перед именем переменной или процедуры объекта мы обязаны писать имя объекта (а не класса) с точкой.
Обратите внимание, что в списке компонентов объекта, разворачивающемся после ввода точки, вы видите как переменную C1, так и процедуру Процедура.