Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.04 c
2-1193223678
Ega23
2007-10-24 15:01
2007.11.18
Parent и Owner


2-1192857340
Antoxa2005
2007-10-20 09:15
2007.11.18
Как пердать значение параметра null для поля, типа "дата"???


15-1192485282
Tirael
2007-10-16 01:54
2007.11.18
по мотивам соседней ветки...


2-1193330363
Винни-Пух-Пух-Пух
2007-10-25 20:39
2007.11.18
Почему могут не показываться Hint ы на контролах ?


15-1192070591
Slider007
2007-10-11 06:43
2007.11.18
С днем рождения ! 11 октября 2007 четверг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский