Классы. ООП

Классы и объекты

Последнее обновление: 30.10.2015

Visual Basic.NET является полноценным объектно-ориентированным языком, а это значит, что программа может быть представлена в виде взаимосвязанных объектов, которые взаимодействуют между собой. Описанием объекта является класс, в то время как объект - экземпляр этого класса. Класс определяется с помощью ключевого слова Class:

Class Book
End Class

Всю функциональность класса обеспечивают его члены - поля, свойства, методы, конструкторы, события. Поля представляют обычные переменные? обычным образом также определяются процедуры и функции (в этом плане классы во многом похожи на структуры):

Class Book
	'Название книги
    Dim name As String
    'Автор
    Dim author As String
    'Год издания
    Dim year As Integer

    'Метод для вывода информации о книге
    Sub GetInformation()
        Console.WriteLine("Книга '{0}' (автор {1}) была издана в {2} году", name, author, year)
    End Sub
End Class

Кроме обычных методов в классах существуют специальные методы - конструкторы. Конструкторы вызываются при создании нового объекта класса. Чтобы объявить конструктор, надо использовать ключевое слово New. Зачем нужен конструктор? Обычно конструктор выполняет инициализацию членов класса. Объявим в классе конструктор, который будет инициализировать поля нашего класса Book:

Public Class Book
    'Название книги
    Dim name As String
    'Автор
    Dim author As String
    'Год издания
    Dim year As Integer

    Sub New(name As String, author As String, year As Integer)
        Me.name = name
        Me.author = author
        Me.year = year
    End Sub

End Class

Здесь мы создали конструктор, который принимает три параметра - название книги, ее автора и год издания. Затем в конструкторе мы присваиваем значения параметров полям класса. Поскольку параметры и поля класса называются одинаково, то нам надо использовать ключевое слово Me, которое предоставляет ссылку на данный класс. Если бы параметры имели другие имена, то использование слова Me было бы необязательным. Если мы не создадим свой конструктор, тогда будет использоваться конструктор по умолчанию:

Sub New()

End Sub

Теперь используем класс. Создайте новое консольное приложение. Затем нажмите правой кнопкой мыши на название проекта в окне Solution Explorer (Обозреватель решений) и в появившемся меню выберите пункт Add (Добавить), в другом появившемся меню выберите пункт Class (Класс). В окне создания нового класса присвойте ему имя Book и нажмите кнопку Add (Добавить). В проект будет добавлен новый класс Book, который будет находиться в файле Book.vb. Перенесите в этот класс следующий код:

Public Class Book
    'Название книги
    Dim name As String
    'Автор
    Dim author As String
    'Год издания
    Dim year As Integer

    Sub New(name As String, author As String, year As Integer)
        Me.name = name
        Me.author = author
        Me.year = year
    End Sub
    'Конструктор по умолчанию
    Sub New()
        name = "Евгений Онегин"
        author = "А. С. Пушкин"
        year = 1833
    End Sub

    'Метод для вывода информации о книге
    Sub GetInformation()
        Console.WriteLine("Книга '{0}' (автор {1}) была издана в {2} году", name, author, year)
    End Sub
End Class

Теперь в основной файл приложения - в модуль добавим следующий код:

Module Module1

    Sub Main()

        Dim b1 As Book = New Book("Война и мир", "Л. Н. Толстой", 1869)
        b1.GetInformation()
		
		'Используем конструктор по умолчанию
        Dim b2 As Book = New Book()
        b2.GetInformation()
        
        Console.ReadLine()
    End Sub
End Module

Если мы запустим код на выполнение, то консоль выведет нам информацию о книгах b1 и b2. Обратите внимание, что чтобы создать новый объект кроме конструктора нам надо использовать ключевое слово New. В первом случае мы используем свой конструктор, а во втором - конструктор по умолчанию.

Частичные классы

Частичные классы представляют возможность разделения одного класса на несколько файлов. Например, в одном файле может быть:

Partial Public Class Book
    'Название книги
    Dim name As String
    
End Class

а в другом:

Partial Public Class Book
    
    'Автор
    Dim author As String
    'Год издания
    Dim year As Integer

End Class

Для создания частичного класса перед его объявлением надо поставить ключевое слово Partial. В итоге в результате компиляции будет создан единый класс, который не будет отличаться от других классов.

Ключевое слово With

Предположим, что у нас есть следующий класс State:

Class State
    Public capital As String
    Public area As Integer
    Public population As Integer

    Sub New(cap As String)
        capital = cap
    End Sub
End Class

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

Dim state1 As New State("City")
state1.area = 200
state1.population = 200

Однако таких свойств может быть множество. И чтобы сократить объем кода, мы можем использовать конструкцию With...End With. Чтобы применить эту конструкцию, после слова With указывается объект, а затем построчно свойства объекта, которые мы хотим получить или присвоить:

Dim capit As String
Dim state1 As New State("City")
		
With state1
    'Установка остальных полей
    .area = 200
    .population = 200
    'Получение значение поля capital
    capit = .capital
End With

Кроме того, мы можем использовать сокращенный синтаксис инициализации объекта с помощью ключевого слова With и одновременно указать все необходимые свойства:

Dim state2 = New With {.capital = "City2", .area = 300, .population = 300}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850