Создаем и используем массив объектов одного класса
Ваше садовое товарищество растет и вот в нем уже несколько десятков участков. Надо менять проект. Теперь у нас на форме будет только две кнопки. Рождение каждого нового объекта будет происходить при нажатии одной и той же кнопки 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. А вот сам объект без этого поля будет в будущем испытывать трудности, пытаясь в случае необходимости ответить себе на вопрос: «Какой же, черт возьми, у меня номер?!»