![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Видимость переменных из private.
Riply © (2006-10-28 09:59:00)Доброе утро!
У меня есть unit, где собраны мои супер - пупер классы.
Он сильно разросся и стало неудобно работать.
Решила его разбить на несколько юнитов по тематике,
но столкнулась с такой проблемой:
находясь в другом юните, потомок не видит private
полей родителя. Как это можно исправить ?
Или забыть о "наведениии порядка" ?
P.S. делать их public очень не хочеться :((
Ketmar (2006-10-28 22:53:00) [1]>[12] MsGuns(c) 28-Oct-2006, 22:38
>строить на бумаге иерархическую модель объектов. Как,
>например, это сделано в самом VCL
ой. а сканы исторических документов есть в сети? я серьёзно.
MsGuns (2006-10-28 22:38:00) [2]Такая ситуация в 90% следствие концептуальной ошибки в проектировании.
Советую перед кодированием "кучи супер-пупер классов" строить на бумаге иерархическую модель объектов. Как, например, это сделано в самом VCL
vidiv (2006-10-28 21:58:00) [3]У VCL, например, таких проблем нет... Да и у меня тоже!!! При проектировани Родительского класса думать ж нужно, понадобится переменная или метод для потомков или нет!!!
Anatoly Podgoretsky (2006-10-28 21:40:00) [4]Тебе, ты же про правильное разбиение говоришь, других вроде не видать.
vidiv (2006-10-28 21:33:00) [5]
> Anatoly Podgoretsky © (28.10.06 21:29) [8]
Это вы мне?
Anatoly Podgoretsky (2006-10-28 21:29:00) [6]Разбей правильно и с нами поделись, как надо разбивать, что бы видеть приватные члены из другого модуля.
vidiv (2006-10-28 20:39:00) [7]
> Решила его разбить на несколько юнитов по тематике,
> но столкнулась с такой проблемой:
> находясь в другом юните, потомокне видит private
Мне кажется, что неправильно разбила? =)
Ketmar (2006-10-28 14:41:00) [8]вообще, лучше запомнить, что "чужаки" не должны иметь доступ к полям. это "некомильфо". надо кому-то показать -- делай метод или свойство (или и то, и другое %-).
Riply (2006-10-28 11:19:00) [9]Спасибо !
P.S. Люблю, когда "в доме порядок" :)
Anatoly Podgoretsky (2006-10-28 10:54:00) [10]Судя по словам private/public у тебя не переменные, а поля, в этом случае оформи их как свойства.
private
FField: type;
public/published
propery Field: type read FField write FField; //или Set процедура, если хочешь контролировать запись
end;
ЮЮ (2006-10-28 10:33:00) [11]добавить protected свойства для доступа к эти полям
Riply (2006-10-28 10:12:00) [12]> [1] MBo © (28.10.06 10:06)
Я понимаю, что "надо правильнее спроектировать", но вот
не знаю как. :( Поэтому и спрашиваю :)
MBo (2006-10-28 10:06:00) [13]>Как это можно исправить ?
Не нужно это исправлять, надо правильнее спроектировать