пятница, 27 августа 2010 г.

Защита свойств и создание объектов


Вчера мы рассмотрели вопрос создания классов и свойств. Очень рекомендую еще раз повторить то, чтобы было рассмотрено в этой статье. Если вы не сможете создать класс – то как вы планируете работать с ними? И если вы не сможете создать ни одного свойства в классе, то можно сказать – классы вам будут и не нужны. Так что загляните туда.
Сегодня планирую также посвятить статью двум вопросам – это защита свойств (которые мы создавали вчера) и создание и использование объектов. Создание методов мы рассмотрим в одной из следующих статей. А сегодня мы уже создадим несколько объектов, и начнем с ними работать, так что читайте дальше.
Защита свойств.
Возможно я уже говорил о том, что в классах свойства – это не простые переменные, а значения, с которыми работают два метода – get и set. А если у нас имеются методы (как известно, методы – это процедуры и функции, то есть - действие), то можно этим действием частично управлять. Давайте посмотрим, как это сделать.
Приведу кусок вчерашнего кода:
    Public Property Shir() As Integer
        Get
            Return pShir
        End Get
        Set(ByVal value As Integer)
            pShir = value
        End Set
    End Property

Здесь мы видим лишь одну инструкцию между ключевыми словами Set End Set. Но туда можно вставить и код, который бы проверял введенное значение по условиям. Если мы хотим сделать хороший (правильный) класс, то такая проверка нам будет нужна.
Итак. Защищать мы будем ширину нашего прямоугольника (Shir). Логично, что ширина у нас не может быть отрицательной. Поэтому такую проверку можно включить в объявление класса. А также – предположим, что мы хотим работать с прямоугольниками не очень большой ширины (до 200 единиц), и такую проверку включим в объявление. Если у нас вводимая переменная не будет удовлетворять нашим условиям – мы покажем предупреждение об этом и зададим значение по умолчанию. Для этого – замените код, который у вас был, на новый, который я представил ниже (не забываем – для ширины):
        Set(ByVal value As Integer)
            If value > 0 And value < 200 Then
                pShir = value
            Else
                MsgBox("Вы неправильно задали величину ширины прямоугольника.")
                pShir = 100
            End If
        End Set

Проверка проходит во второй строке. Условие по умолчанию ставится после предупреждения MsgBox. Для длины мы сделаем подобное условие, только максимальное значение изменим на 300 (и значение по умолчанию на 150). Итоговый код класса (он у нас небольшой, поэтому можно выложить все) представлен ниже:
Public Class Class1
    Private pShir, pDlin As Integer

    Public Property Shir() As Integer
        Get
            Return pShir
        End Get

        Set(ByVal value As Integer)
            If value > 0 And value < 200 Then
                pShir = value
            Else
                MsgBox("Вы неправильно задали величину ширины прямоугольника.")
                pShir = 100
            End If
        End Set
    End Property

    Public Property Dlin() As Integer
        Get
            Return pDlin
        End Get
        Set(ByVal value As Integer)
            If value > 0 And value < 300 Then
                pDlin = value
            Else
                MsgBox("Вы неправильно задали величину длины прямоугольника.")
                pDlin = 150
            End If
        End Set
    End Property

End Class

Создание и использование объектов.
Объект – это такая же переменная, у которой тип данных – это наш созданный класс. Поэтому, объекты объявляются так же – с помощью слова Dim:
Dim Per As Class1

Но это мы только объявили переменную типа Class1. Для того, чтобы с ней работать, нужно ее еще проинициализировать. Делается это с помощью ключевого слова New:
 Dim Per As Class1
        Per = New Class1

У нас получилось две строчки кода. Для простоты, их можно записывать в одну – сразу и объявление объекта и его инициализация. Я делаю именно так:
Dim Per As New Class1

А теперь давайте попробуем что-нибудь записать и считать из наших свойств. Для того, чтобы обратиться к свойствам, нужно, во-первых, не забывать, что мы обращаемся к свойствам объекта. То есть – к свойствам переменной Per. К свойствам класса Class1 обращаться бессмысленно, так как это класс. Во-вторых, чтобы обратиться к свойству, нужно написать название этого свойства через точку с названием объекта. То есть – так:
Per.Shir

А теперь давайте сделаем небольшое приложение, которое будет просить пользователя ввести ширину и длину прямоугольника в соответствующие поля. После нажатия на кнопку – выведет эти значения в текстовое поле ниже. Для этого – киньте на форму два TextBoxa, кнопку и Label в самом низу. Для обработчика нажатия кнопки вставьте следующий код:
        Dim Per As New Class1
        Per.Shir = Convert.ToInt32(TextBox1.Text)
        Per.Dlin = Convert.ToInt32(TextBox2.Text)
        Label1.Text = "Ширина = " + Per.Shir.ToString + ". Длина = " + Per.Dlin.ToString

У меня вот что получилось:

Вот так просто можно обезопасить себя от неправильного ввода свойств. И, тоже просто, работать с объектами. В дальнейших статьях я рассмотрю создание методов (также на примере нашего прямоугольника). Так что – чаще посещайте блог.

Комментариев нет:

Отправить комментарий