ПОНЯТНО О Visual Basic NET (том 3)

       

Создаем и используем массив объектов одного класса


Ваше садовое товарищество растет и вот в нем уже несколько десятков участков. Надо менять проект. Теперь у нас на форме будет только две кнопки. Рождение каждого нового объекта будет происходить при нажатии одной и той же кнопки 1. Когда все объекты рождены, программист может как угодно использовать их в своих целях. В качестве примера такого использования он нажатием на кнопку 2 распечатывает имена владельцев тех участков, на заборы которых ушло больше 200 килограммов краски.

Вот программа:

Форма:

Dim Участки(100) As Участок

Dim k As Integer = 1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Участки(k) = New Участок

        Участки(k).Номер_участка = k

        Участки(k).Владелец = TextBox1.Text

        Участки(k).Длина = TextBox2.Text

        Участки(k).Ширина = TextBox3.Text

        Участки(k).Высота_забора = TextBox4.Text

        Участки(k).Расход_краски_на_кв_м = TextBox5.Text



        k = k + 1

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim i As Integer

        For i = 1 To k - 1          'Всего участков   k-1

            If Участки(i).Расход_краски > 200 Then Debug.WriteLine(Участки(i).Владелец)

        Next

End Sub

Класс:

Public Class Участок

    Public Номер_участка As Integer

    Public Владелец As String

    Public Длина, Ширина As Integer

    Public Высота_забора As Integer

    Public Расход_краски_на_кв_м As Integer

    Private Периметр As Integer

    Private Sub Вычисляем_периметр()

        Периметр = 2 * (Длина + Ширина)

    End Sub

    Private Function Площадь_забора() As Integer

        Вычисляем_периметр()

        Return Периметр * Высота_забора

    End Function

    Public Function Расход_краски() As Integer

        Return Расход_краски_на_кв_м * Площадь_забора()

    End Function

End Class

Пояснения: Здесь мы вместо двух участков (Участок1 и Участок2) объявили массив  из 101 участка:

Dim Участки(100) As Участок

Число 100 мы взяли с запасом, на всякий случай.

От нажатия к нажатию кнопки 1 значение переменной k увеличивается на единицу оператором

        k = k + 1

Поэтому оператор

        Участки(k) = New Участок

рождает новый объект – экземпляр класса Участок – и заодно присваивает его очередному элементу массива Участки.

В классе Участок прибавилось новое поле – Номер_участка. В принципе, снаружи оно никому не нужно, так как если мы обращаемся, скажем, к элементу массива Участки(8), то тем самым мы уже знаем, что это участок №8. А вот сам объект без этого поля будет в будущем испытывать трудности, пытаясь в случае необходимости ответить себе на вопрос: «Какой же, черт возьми, у меня номер?!»



Содержание раздела