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


Поля и свойства объектов - часть 2


    Public Function Периметр_участка() As Integer

        If Периметр > 10000 Then

            MsgBox("Периметр участка засекречен")

            Return 0

        Else

            Return Периметр + 1         'Приписка

        End If

    End Function

Вместо функции – свойство «только для чтения». Идея «Функция вместо поля» настолько хороша, что появилась потребность оформить ее синтаксически.

Сотрите нашу функцию. Создадим ее другим, общепринятым путем. Введите такую строку:

    Public  Property  Периметр_участка As Integer

Нажмите Enter. Перед вами появилась заготовка:

    Public Property

Периметр_участка() As Integer

        Get

        End Get

        Set(ByVal Value As Integer)

 

        End Set

    End Property

Слово Property означает «свойство». Периметр участка перестал быть просто переменной, перестал быть полем, перестал быть функцией, он стал свойством. Так мы его и будем называть.

Слово Get означает "Получи (узнай) значение свойства", а слово Set означает "Установи (присвой) значение свойству". Наша конструкция состоит из двух частей. Внутрь части  Get – End Get мы пишем код, показывающий значение свойства наблюдателю извне. Фактически мы просто переписываем туда тело нашей функции. Внутрь части  Set – End Set мы пишем код, позволяющий наблюдателю извне менять значение свойства. Об этой части мы поговорим чуть позже, а сейчас, поскольку мы не собираемся давать возможность изменения значений свойства извне, мы просто стираем эту часть, а в подтверждение своей решимости добавляем в объявление свойства слово ReadOnly («только для чтения»). Вот что у нас получилось:

    Public ReadOnly Property Периметр_участка() As Integer

        Get

            Return Периметр

        End Get

    End Property

Мы решили поставленную задачу.

Свойства «для чтения-записи». Теперь займемся полями нашего класса, например, полем Длина. Хорошо бы уже при присвоении этому полю значения из текстового поля осуществлялся некоторый контроль значений. Например, мы хотим запретить участки длиннее 500 метров. Однако поле Длина имеет тип Integer и поэтому допускает очень большие числа. Мы можем написать ограничение в коде формы, но это будет нарушением принципа инкапсуляции. Общепринятое средство – создать свойство.




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