:: Архив конференции по VFP до 2005 года
Свойства readonly
Syberex
Автор

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Не врубаюсь как сделать в классе свойства только для чтения.
Protected и Hidden не дают доступа из вне, а больше ничего и нет?




------------------
Ratings: 0 negative/0 positive
Re: Свойства readonly
Владимир Максимов

Сообщений: 14097
Откуда: Москва
Дата регистрации: 02.09.2000
Довесь к свойству событие ASSIGN в котором закомментируй команду присвоения. Т.е. там должна остаться только строчка с параметром. По сути - это и будет означать Read-Only т.к. значение проперти просто невозможно будет изменить.

Другой вариант - это сделать это свойствоименно Hidden, а для доступа из вне создать специальный метод вроде

GetProp()

Который и будет возвращать значение проперти. А для модификации проперти, также специальный метод вроде

SetProp()

Такой подход (через метод) считается более правильным с точки зрения ООП: прямого доступ к проперти класса из вне в принципе не должно быть.




------------------
Ratings: 0 negative/0 positive
Re: Свойства readonly
Syberex
Автор

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Владимир Максимов
SetProp()
Как раз и сделал методы Setprop() и в дополнение эти свойства сделаю readonly.

А как насчет версий выше 6, ситуация не изменилась?




------------------
Ratings: 0 negative/0 positive
Re: Свойства readonly
Владимир Максимов

Сообщений: 14097
Откуда: Москва
Дата регистрации: 02.09.2000
Цитата:
А как насчет версий выше 6, ситуация не изменилась?
Нет.

Лично я не вижу в этом особого смысла. Т.е. ты сам создаешь свойство и сам же себе запрещаешь его изменять!? "Тихо сам с собою я веду беседу"




------------------
Ratings: 0 negative/0 positive
Re: Свойства readonly
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Syberex!

o1= CREATEOBJECT("test")
? o1.MyProp
o1.MyProp = 2
DEFINE CLASS test AS Custom
MyProp = 1
PROCEDURE MyProp_Assign
LPARAMETERS tuDummy
ERROR 1743, "MyProp"
ENDPROC
ENDDEFINE

Только потом не жалуйся, что ты вообще нигде кроме как в описании класса не
сможешь поменять значение этого свойства! Это ДОСЛОВНО "ReadOnly свойство".




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Свойства readonly
Syberex
Автор

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
долго думал...
В итоге не подходят такие ридонли-свойства




------------------
Ratings: 0 negative/0 positive
Re: Свойства readonly
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Syberex!

Хе-хе Ты сказал бы сразу ЧТО нужно, а не КАК оно тебе нужно
Заизолировать собственно свойство от изменения "извне", но разрешив изменять
"изнутри" очень просто - раздели его на 2 свойства - на "видимое" навесь
_Access метод, возвращающий "невидимое", ну и можно Assign метод
генерирующий ошибку, а собственно с "невидимым" и работай изнутри класса.
IMHO всё это легко и просто реализуется




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Свойства readonly
Syberex
Автор

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Значения, которые устанавливаются в win32api функциях,
сохраняются в свойствах. Ну а на изменения свойств не происходит ничего.
Просто несоответсвие оставить нормально?
Класс для работы с принтером, выложу в решения , уже почти готово...




------------------
Ratings: 0 negative/0 positive
Re: Свойства readonly
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Syberex!

Я же тебе прошлый раз полностью показал как заизолировать "внутренние
свойства" и "внешний интерфейс" - никакого несоответствия, всё очень
логично, стройно и красиво




------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 6 (Гостей: 6)

© 2000-2024 Fox Club 
Яндекс.Метрика