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


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


Превратим переменную Длина из поля в модульную переменную, защитив тем самым от воздействия извне:

    Private Длина As Integer

Затем создадим свойство Длина_участка:

    Public Property Длина_участка() As Integer

        Get

            Return Длина

        End Get

        Set(ByVal Value As Integer)

            If Value < 500 Then

                Длина = Value

            Else

                MsgBox("Слишком длинный участок")

                Длина = 0

            End If

        End Set

    End Property

Мы предоставляем возможность каждому извне узнавать без ограничений значение свойства, поэтому часть Get – End Get у нас заполняется стандартно.

Поговорим о части Set – End Set. Внутренним неприкасаемым хранителем значения длины в нашем классе является модульная переменная Длина. Свойство Длина_участка придумано только для того, чтобы показывать вовне значение этой переменной и по-возможности безопасным и контролируемым образом разрешать извне это значение менять. Часть Set – End Set поэтому имеет своей конечной целью присвоение переменной Длина нужного значения.

Если часть Get – End Get – это функция, то часть Set – End Set – это процедура. Причем с параметром Value. Каждый раз, когда кто-то пытается извне присвоить свойству Длина_участка какое-нибудь значение, это значение приходит в объект-участок в качестве значения параметра Value свойства Длина_участка. Остается только написать в части Set – End Set единственный оператор

                Длина = Value

И если бы он остался единственным, то в этом случае мы получили бы свойство для чтения-записи безо всяких ограничений. Но тогда не стоило и огород городить. Ведь поле Длина обеспечивало то же самое. Однако мы помнили о нашем запрете на длинные участки и поэтому часть Set – End Set сделали подлиннее. Теперь каждый, желающий из текстового поля задать длину участка равную 500 и выше, столкнется с сообщением "Слишком длинный участок" и вынужден будет вводить данные вновь.

Обратите внимание, что классу совершенно все равно, что




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