Property

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Property

Сообщение A.A.Z. » 12.10.2003 (Вс) 23:11

Для чего нужны Property Get | Property Let?
(Сразу извиняюсь за ламерский вопрос, просто чего-то в книжках непонятно написано :oops: )
Нет меня больше

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 13.10.2003 (Пн) 0:13

В целом если особо не распостронятся, то для защиты внутренних данных класса + удобство организации процедур верификации и вспомогательных действиий над аргументами. ну итд итп...
Очень актуально для реализации компонентов ну а в целом (много чего им нехватает реализованно в VB .NET)

Public SOut as string -> в классе тоже свойство
допусти что оно передается в закрытую процедуру "Analize"

Private Sub analize (sOut as sting)
Dim sTemp as string

sTemp = Mid$(sOut,2,2)

тут если sOut пустая строка то получиш ошибку.
ну и если ты пишеш компонент то а пропертях (LET) можеш организовать проверку присв. значения
------------------------------------------------------------
Мне кажется задуманно неплохо. :?:
Dmitrich

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 13.10.2003 (Пн) 8:03

Есть двоякое их использование.

Если ты просто объявил Public переменную в классе (например, Public Size As Single), то у нее по умолчанию существуют оба этих свойства: и Property Get, и Property Let. Их VB построит сам, и у тебя нет никакого контроля за действиями внутри этих функций. Если ты хочешь иметь этот доступ и контроль, то тебе нужно определить эти функции, соотвественно, изменив определение переменной.

Код: Выделить всё
Private mSize As Single
Public Property Get Size() As Single
  Size = mSize
End Property
Public Property Let Size(ByVal vNewValue As Single)
  mSize = vNewValue
End Property


Точно так же ты можешь ограничить доступ к этому свойству, если не включишь какое-то из определений. Например, убрав Property Let, ты получишь свойтсво только для чтения. Установить Size будет невозможно.

Код: Выделить всё
Private mSize As Single
Public Property Get Size() As Single
  Size = mSize
End Property


Другой вариант - это использование псевдо-свойств, т.е. тогда, когда реальной переменной у объекта нет. Например, можно хранить что-то внутри какого-то внутреннего объекта.

Код: Выделить всё
Private mList() As String
Public Property Get Size() As Long
  Size = UBound(mList)-LBound(mList)+1
End Property
Public Property Let Size(ByVal vNewValue As Long)
  ReDim Preserve mList(vNewValue)
End Property
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 13.10.2003 (Пн) 18:42

А, понял, т. е. по сути - для защиты данных, так?
Нет меня больше

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 14.10.2003 (Вт) 7:45

А, понял, т. е. по сути - для защиты данных, так?

Не так. Они нужны не для этого. Отсутствие Property Let обеспечивает защиту от изменения данных, но наличие Property Let, очевидно, служит не для этого.

В СОМе (а VB использует его) нет данных, только функции. Поэтому Property Get, Property Let, а также Property Set, о которой ты не говорил, - это все функции работы с данными.

Property Get - это функция доступа для чтения данного с таким именем.
Property Let - это функция доступа для изменения данного с таким именем. Для VB конструкция с ключевым словом Let.
Property Set - это функция доступа для изменения данного с таким именем. Для VB конструкция с ключевым словом Set.

Поэтому отсутствие какого-нибудь Property приводит к невозможности этой операции с этим данным.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 14.10.2003 (Вт) 19:32

Спасибо, Vi!
Кажись, дошло. :wink:
Нет меня больше


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList