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

Вниз

Проблемы с видимостью содержимого классов   Найти похожие ветки 

 
vas177 ©   (2007-07-11 13:06) [0]

Проблема заключается в следующем: я пытаюсь разместить в одном модуле несколько классов, содержащих, естественно, различные секции (private, protected). И при том, что я привык программировать на С-подобных языках - мне жутко не удобно, когда из соседнего класса можно вызывать private-метод другого класса, расположенного в этом же модуле - это же неправильно! Кто подскажет, как можно запретить компилятору Delphi - видеть приватные методы?


 
Сергей М. ©   (2007-07-11 13:16) [1]


> жутко не удобно, когда из соседнего класса можно вызывать
> private-метод другого класса


Конфликты обитателей "коммуналке" можно разрешить только одним "законным" способом - расселив их по отдельным изолированным квартирам.

Надеюсь, намек понятен)


 
StriderMan ©   (2007-07-11 14:27) [2]


> мне жутко не удобно, когда из соседнего класса можно вызывать
> private-метод

не удобно - не вызывай, какие проблемы?


> Сергей М. ©   (11.07.07 13:16) [1]

в VCL классы ютятся десятками в таких коммуналках, и ничего :)


 
clickmaker ©   (2007-07-11 14:28) [3]


> в VCL классы ютятся десятками в таких коммуналках

в борщ друг другу не плюют? :)


 
Сергей М. ©   (2007-07-11 14:33) [4]


> StriderMan ©   (11.07.07 14:27) [2]


Просто в коммуналке по адресу VCL живут дружные соседи)

А в коммуналке у автора соседи видимо только и делают, что в глазок друг за другом подглядывают да нагадить друг-другу втихаря норовят при каждом удобном случае)

Тут только волевое решении с их расселением поможет)


 
StriderMan ©   (2007-07-11 14:33) [5]


> clickmaker ©   (11.07.07 14:28) [3]
> в борщ друг другу не плюют? :)

плюют, а как же :)

бывает даже методы и свойства из привата/протектеда таскают. вот такие они.


 
vpbar ©   (2007-07-11 14:35) [6]

Разделить по модулям.
В делфи методы классов, расположенных в одном модуле, считаются как бы дружественными (frendly - так вроде в С?)
>>это же неправильно
Ну делайте правильно - каждому классу свой модуль


 
StriderMan ©   (2007-07-11 14:36) [7]


> Тут только волевое решении с их расселением поможет)

квартирный вопрос видать и до Delphi добрался


 
Юрий Зотов ©   (2007-07-11 14:53) [8]

> vas177 ©   (11.07.07 13:06)

Таковы правила видимости, и в D7 (и более ранних) не получится ничего другого, кроме разнесения нужных классов по разным модулям. Вы же не удивляетесь тому, что, например, в Java, члены класса без явно указанной спецификации считаются публичными, а методы - виртуальными?

Подобные правила есть и в других языках и их надо просто принять, знать и учитывать. Нравятся они, или нет.


 
Amoeba ©   (2007-07-11 16:05) [9]


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

Так не вызывай, никто ведь не принуждает насильно. Или нет сил удержаться от соблазна?


 
SpellCaster   (2007-07-12 13:10) [10]

http://dn.codegear.com/article/34324

strict private
The private keyword actually creates a " friendship" relationship between classes in the same unit. The strict private declaration creates a true private field, not viewable by any other class, not even classes in the same unit.


В версиях после семёрки.


 
vas177 ©   (2007-07-12 14:45) [11]

Соблазна вызывать чужие методы не возникает, они сами появляются, когда делаю перевод бывших публичных членов в частные — отсюда и не удобство отлавливать прямые обращения к чужому добру. Поэтому для отлова и приходится «расселять».
Против дружного соседства я не против, но альтернатива бы не помешала (про более позднии версии промолчим).


 
vas177 ©   (2007-07-12 14:45) [12]

Соблазна вызывать чужие методы не возникает, они сами появляются, когда делаю перевод бывших публичных членов в частные — отсюда и не удобство отлавливать прямые обращения к чужому добру. Поэтому для отлова и приходится «расселять».
Против дружного соседства я не против, но альтернатива бы не помешала (про более позднии версии промолчим).


 
Джо ©   (2007-07-13 04:10) [13]

> [11] vas177 ©   (12.07.07 14:45)
> Поэтому для отлова и приходится «расселять».
> Против дружного соседства я не против, но альтернатива бы
> не помешала (про более позднии версии промолчим).

«Альтернатива» появилась в более поздних версиях языка, да.
До этих версий предлагаю рассматривать это именно как «фичу». Скажем, как аналог сиплюсплюсовых friendly-классов. И тогда, кажется, не остается причин для негодования, ведь так? ;)



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

Форум: "Основная";
Текущий архив: 2007.09.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.037 c
15-1187706170
badevlad
2007-08-21 18:22
2007.09.23
Как склеить несколько HTML?


11-1169819251
mdw
2007-01-26 16:47
2007.09.23
Новости http://www.kolnmck.ru


15-1188271854
Думкин
2007-08-28 07:30
2007.09.23
Уран – нерадиоактивен.


2-1188556457
новЫчек
2007-08-31 14:34
2007.09.23
остановка работы цикла


15-1188124654
matt
2007-08-26 14:37
2007.09.23
Если бы архитекторам пришлось работать так же, как программистам.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский