progs.biz  
Начало>VB.NET>Основы>Урок 3
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Б. Ивьен и др. Visual Basic .NET. Библия пользователя
Б. Ивьен и др. Visual Basic .NET. Библия пользователя
Заказать на Озоне



Яндекс-цитирования

Основы VB.NET
Урок 3. Классы в VB.NET

Ну вот, теперь, с приходом VB.NET, классы в нем стали действительно классами. Их можно наследовать один от другого, и вообще с ними можно делать все, что раньше было возможно только в других, "настоящих" объектно-ориентированных языках.

Для начала обсудим, что такое вообще классы. Лучше всего представлять себе класс как некоторую форму или некоторый шаблон, по которому мы можем конструировать объекты. Скажем, мы можем сделать класс "Квадратное уравнение" (и на одном из последующих уроков мы его обязательно сделаем). Наш класс "Квадратное уравнение" будет некоторым шаблоном, по которому мы сможем делать конкретные экземпляры - т. е. квадратное уравнение с конкретными коэффициентами. У одного экземпляра коэффициенты будут одни, у другого - другие. Кроме того, в нашем классе будут функции для нахождения корней квадратного уравнения. Заметьте, что формулы для нахождения корней у всех квадратных уравнений одинаковы. Эти функции (или, что более правильно, методы) будут принадлежать не конкретному экземпляру (квадратному уравнению), а всему нашему классу "квадратных уравнений". И это важно понять, что класс помимо некоторых данных содержит, как правило, еще и методы, которые работают с этими данными.

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

Imports System
Class MyFirstClass
  Public Shared Sub Main()
    Console.WriteLine("First App")
  End Sub
End Class

Запускайте программу (Ctrl+F5). Результат должен быть такой же, как и на предыдущем уроке - в консольном окне появится надпись "First App".

Теперь давайте разбираться с тем, что мы тут написали. Во-первых, мы завели класс. Он пишеться между строками Class имя_класса и End Class:

...
Class MyFirstClass
...
End Class

Имя класса, разумеется, может быть любое. Мы назвали наш класс MyClass, и могли назвать его как угодно. Далее, внутри нашего класса есть метод Main. Помните замечание пошлого урока, что в каждой программе должен быть Main? На этом уроке мы поместили Main прямо в класс, но в принципе это не обязательно. Метод Main нашего класса мы написали с модификатором доступа Public. Это для того, чтобы наш метод можно было бы вызвать извне класса. Далее перед методом Main стоит еще один модификатор - Shared. Он означает, что метод Main возможно вызвать без создания экземпляра класса. И действительнол, обратите внимание, что мы нигде в нашей программе не создаем никакого экземпляра нашего класса. Метод Main возможно вызвать именно потовму, что он объявлен как Shared.

Давайте теперь модифицируем нашу программу так, чтобы у нас создавался экземпляр класса. Вот новый текст:

Imports System
Class MyFirstClass
  Sub F()
    Console.WriteLine("First App")
  End Sub
End Class
Module MyModule
  Public Sub Main()
    Dim cl As New MyFirstClass()
    cl.F()
  End Sub
End Module

Обратите внимание на следующие изменения - во-первых, функция Main теперь не в классе MyFirstClass, а в модуле MyModule (помните, что функция Main должна быть только одна). В нашем классе мы просто переименовали эту функцию в F. Далее мы в модуле MyModule заводим экземпляр cl нашего класса:

...
    Dim cl As New MyFirstClass()
...

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

...
    Dim k As Integer
...

В следующей строчке мы вызываем для данного экземпляра класса метод F:

...
    cl.F()
...

Этот вариант программы выведет, как и следовало ожидать, туже самую надпись "First App". Если программа не запускается, то проверьте в свойствах проекта, что указывается в качестве начального объекта для запуска. Для этого щелкайте правой кнопкой мыши на имени проекта в окне Solution Explorer и выбирайте Properties:

Вызов свойств проекта

В появившемся окне FirstApp Property Pages задайте Startup Object как MyModule:

Задание Startup Object

Нажимайте OK и, если других ошибок нет, то все должно заработать.

И, напоследок, приведем еще третий вариант нашей программы - теперь экземпляр нашего класса MyFirstClass будет создаваться в другом классе (так, кстати, чаще всего и делается). Второй класс мы назовем Test:

Imports System
Class MyFirstClass
  Sub F()
    Console.WriteLine("First App")
  End Sub
End Class
Class Test
  Public Shared Sub Main()
    Dim cl As New MyFirstClass()
    cl.F()
  End Sub
End Class

Не забудьте только поменять в окне FirstApp Property Pages параметр Startup Object на Test. И опять обратите внимание, что для метода Main тестового класса Test мы используем ключевое слово Shared (так как мы не создаем экземпляра этого класса).

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев