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


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


 

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

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

    End Sub

 

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

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

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

    End Function

 

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

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

    End Function

End Class

Пояснения: Объекты совсем не обязательно объявлять и создавать в стандартном модуле, как мы это делали раньше. Сейчас, например, мы сделали это в модуле формы. Также совсем не обязательно объявлять и создавать их одним оператором, как мы делали раньше:

Dim Участок1 As New Участок

Можно сначала объявить (как мы сейчас и сделали):

Dim Участок1, Участок2 As Участок

а потом в удобный момент создать:

        Участок1 = New Участок                   'Из класса рождается объект

Заглянем в код класса. Мы видим там 5 переменных, объявленных словом Public. Следовательно, они видны снаружи объекта. Значит, это поля объекта. К тому же слово Public без употребления других запретительных слов (о них позже) допускает свободное изменение значений поля снаружи объекта. Следовательно, это поля для чтения-записи. Плачет наш принцип инкапсуляции! Зачем мы в нашей конкретной задаче сделали их таковыми? Затем, чтобы пользователь мог свободно задавать их значения из текстовых полей. Ничего не попишешь – таково требование задачи.

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

Участки прямоугольные и не соприкасаются, значит длина забора вокруг участка равна периметру участка, а это две ширины плюс две длины. Площадь забора равна периметру, умноженному на высоту забора. Расход краски на весь забор равен ее расходу на 1 квадратный метр, умноженному на площадь забора.




Начало  Назад  Вперед