Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

private свойства   Найти похожие ветки 

 
NiGGa ©   (2007-10-22 22:12) [0]

Доброго времени суток.

Каким образом можно доступиться к private свойствам другого объекта? И насколько это нормально, сточки зрения объектной концепции?

Всем спасибо.


 
oxffff ©   (2007-10-22 22:18) [1]


> NiGGa ©   (22.10.07 22:12)  
> Доброго времени суток.
>
> Каким образом можно доступиться к private свойствам другого
> объекта? И насколько это нормально, сточки зрения объектной
> концепции?
>
> Всем спасибо.


ASM?


 
oxffff ©   (2007-10-22 22:33) [2]


>  И насколько это нормально, сточки зрения объектной концепции?


Все нормально.
Ты же не по собственной воле это делаешь.
А вынужденно.
Держа эту мысль в голове, обращайся к private полям смело, если хорошо знаешь предмет.


 
Сусл ©   (2007-10-22 23:37) [3]

можно как-то. когда-то делал по статье в сети.


> И насколько это нормально, сточки зрения объектной концепции?


скорее всего это не есть хорошо.
возможно, что по причине несовместимости с будущими версиями библиотек или самого дельфи.
если же класс твой, то в чем проблемы? не делай его private


 
Ins ©   (2007-10-22 23:58) [4]


> Каким образом можно доступиться к private свойствам другого
> объекта?

Если знаете смещение поля от начала, просто прочтите n байт по этому смещению от адреса, который содержит ссылка на экземпляр. Хотя возможно сейчас г-н oxffff © вам расскажет про какой-нибудь более изощренный способ.


> И насколько это нормально, сточки зрения объектной концепции?

Да это просто кошмар! Концепции ООП это протеворечит полностью, да и в другой версии класса возможно работать не будет, если смещение изменится.

Никогда не было такой потребности. Что я делаю неправильно?


 
Юрий Зотов ©   (2007-10-23 00:05) [5]

Ни разу не встречал private свойств.
:o)


 
Сусл ©   (2007-10-23 00:15) [6]


> Ни разу не встречал private свойств.

ну так в жабе и нет свойств вообще :)

если серьезно, то согласен - извращением попахивает.

хотя, Юра, могу тебе заметить, что с развитием языка в последних версиях дельфи private это уже не просто private, а скорее friend, ибо виден снутри модуля, а также outer-классу (ну в дельфи теперь тоже есть вложенные классы). в этом случае может быть inner class с private свойством и strict private геттером и сеттером.

так, что у private свойства есть применение.


 
DevilDevil   (2007-10-23 00:54) [7]

вообще говоря, можно по смещению.

Предполагаю...
У данного класса есть потомок, свойство которого открыто?
Я сам достаточно часто использую, только реального примера не могу припомнить...

Ну например, недавно было (см [1]): http://delphimaster.net/view/2-1192865067/

Т.е. у Bevel-а не открыто свойство TControl.Canvas, а у TPanel - открыто. Следовательно, описаным в ссылке, нехитрым способом можно получить доступ :)


 
DevilDevil   (2007-10-23 00:54) [8]

вообще говоря, можно по смещению.

Предполагаю...
У данного класса есть потомок, свойство которого открыто?
Я сам достаточно часто использую, только реального примера не могу припомнить...

Ну например, недавно было (см [1]): http://delphimaster.net/view/2-1192865067/

Т.е. у Bevel-а не открыто свойство TControl.Canvas, а у TPanel - открыто. Следовательно, описаным в ссылке, нехитрым способом можно получить доступ :)


 
Leonid Troyanovsky ©   (2007-10-23 09:15) [9]


> DevilDevil   (23.10.07 00:54) [8]

> Т.е. у Bevel-а не открыто свойство TControl.Canvas

IMHO, как и в вопросе, некая путаница.
Приватное поле vs protected property.

--
Regards, LVT.


 
Игорь Шевченко ©   (2007-10-23 09:37) [10]

В древнем Китае желающим странного отрубали голову.Мудро.


 
NiGGa ©   (2007-10-23 10:48) [11]


> oxffff ©   (22.10.07 22:33) [2]
> Все нормально.
> Ты же не по собственной воле это делаешь.
> А вынужденно.

Это единственное, что меня оправдывает в такой ситуации)


> Сусл ©   (22.10.07 23:37) [3]
> если же класс твой, то в чем проблемы?

В том то и проблема, что класс не мой.


> Ins ©   (22.10.07 23:58) [4]
> Никогда не было такой потребности. Что я делаю неправильно?

Видимо не используете чужие не совсем качественно написанные компоненты) Мне вот пришлось, опять же не по своей воле, и что тут делать?


> Сусл ©   (23.10.07 00:15) [6]
> если серьезно, то согласен - извращением попахивает.

Абсолютно с вами согласен


> DevilDevil   (23.10.07 00:54) [7]
> У данного класса есть потомок, свойство которого открыто?

Свойство которого должно быть открыто в обозримом будущем)


> Leonid Troyanovsky ©   (23.10.07 09:15) [9]
> IMHO, как и в вопросе, некая путаница.
> Приватное поле vs protected property.

Да прошу прощения, именно приватное поле. Это я уже под вечер после Мегаполиса забыл как это дело называется. У них это атрибут, к определению привык, но вот точно казалось что не к Делфе)

all
Т.е. как я понял единственный метод это искать адрес этого самого поля, но это крайне неприветствуется и могут руки поломать?


 
Сусл ©   (2007-10-23 10:58) [12]


> Т.е. как я понял единственный метод это искать адрес этого
> самого поля

да

про руки не знаю.:)


 
Kolan ©   (2007-10-23 11:02) [13]

> могу тебе заметить, что с развитием языка в последних версиях
> дельфи private это уже не просто private, а скорее friend

Можно подумать раньше было не так. В новых версия просто появился нормальный, человеческий private, и назвали его strict private



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
15-1192210120
ICQshnik
2007-10-12 21:28
2007.11.18
Как обезопасить свой ICQ?..


2-1193666916
@!!ex
2007-10-29 17:08
2007.11.18
Как ловить AV?


15-1189799101
matt
2007-09-14 23:45
2007.11.18
Русская ОС появится во всех школах


15-1192555640
Galinka
2007-10-16 21:27
2007.11.18
CORBA: книги


2-1193485128
Zong_Zong
2007-10-27 15:38
2007.11.18
Граница цвета.