Форум: "Потрепаться";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Внизprivate vs protected Найти похожие ветки
← →
хм © (2004-04-29 17:12) [120]Carthago delena est :)
← →
WebErr © (2004-04-29 17:15) [121]
> TWBEClass = class(TSomeClass)
> protected
> FA: integer;
> public
> property A: integer read FA write FA;
> end;
TNewWBEClass = class(TWBEClass)
protected
FA: Integer;
procedure SetA(Value: Integer);
public
property A: Integer read FA write SetA;
end;
?
Что-то я совсем не понял суть примера?
И где здесь запихнуть хоть какой-то private?
← →
WebErr © (2004-04-29 17:16) [122]Удалено модератором
Примечание: Offtopic
← →
Goida © (2004-04-29 17:29) [123]
> WebErr
> Что-то я совсем не понял суть примера?
Представь, ты создал этот класс (вариант 1) и наделал кучу потомков. Потом вдруг решил: "Не нуна "procedure SetA(Value: Integer); пользоваться...". Поменял. Теперь у тебя вариант 2. И все работает. Ты счастлив? Если да, тогда бери Джесса Либерти и читай его, а потом продолжай разговаривать о том нужен ли private.
Но если ты не понимаешь, то слушай. У тебя везде было присваивание к FA. Поэтому новый вариант класса утебя не будет работать так, как ты хочешь. Для того, чтобы работал SetA, нужно FA поместить в private...
Уф! Ты ведь должен знать это ?)
← →
Anatoly Podgoretsky © (2004-04-29 17:43) [124]TNewWBEClass2 = class(TNewWBEClass)
end;
FA := 1;
И что бы ты не творил в дальнейшем со своим SetA ты приплыл парень, пока не переместишь FA в private
← →
Petr V. Abramov © (2004-04-29 17:50) [125]> Для того, чтобы работал SetA, нужно FA поместить в private...
Для того, чтобы всегда работал именно SetA
← →
han_malign © (2004-04-29 18:31) [126]>Секция private должна исчезнуть под влиянием protected.
- дарагой товарисч, а вы никогда не слышали - инкапсуляция, полиморфизм, скрытие/защита реализации?
А может слышали про контроль ошибок на этапе компиляции?
← →
Goida © (2004-04-30 13:18) [127]Хм... ВБР тихо ушел...
← →
WebErr © (2004-04-30 18:34) [128]Нет, вы не поняли меня, допустим я создал
TBase = class
private
FA: Integer;
procedure SetA(Value: Integer);
public
property A: Integer read FA write SetA;
end;
А потом захотел как-то работать именно с FA а не с A в одном из потомков - единственный выход:
FA - в protected.
И всё!
Плакала ваша теория!
> han_malign © (29.04.04 18:31) [126]
Наследование забыл! Гений! :))))
Без сопливых знаю! :)
Знаком я с ООП! Оч хор значом! Заколебало меня уже отвечать на такие выпады, просто меня бесит private секция!!!
← →
WebErr © (2004-04-30 18:38) [129]Кстатти, [72] всё ещё ждёт разъяснения:
это предок класса TDynMatrix.
С произвольным буффером.
TDynMatrix порождает T3DGrid, T24BitRaster и TZBuffer.
С любым вариантом private на данном примере это будет завал.
Так как все переменные мне нужны в одном из потомков!
with best wishes... ваш ВБР! :)
← →
WebErr © (2004-04-30 18:40) [130]
> Anatoly Podgoretsky © (29.04.04 17:43) [124]
Может я хочу работать с FA также и в некой другой функции класса наследника!
← →
Anatoly Podgoretsky © (2004-04-30 20:13) [131]ХОчешь работать, работай, но карты не передергивай.
← →
Petr V. Abramov © (2004-05-01 01:42) [132]> WebErr © (30.04.04 18:40) [130]
> Может я хочу
А вот Ваша задача как проектировщика классов - спроектировать так, чтобы хотение не возникало. За ненадобностью. И отсутствие возможности работать с FA, даже при хотении, не лишало наследников гибкости.
А вообще - пишите все в public, если так хочется. Только когда Вас заставят разгребать последствия, не кричите, что у программистов жизнь хреновая.
А если пишете тихо сам с собой, ну пихайте все в public.
А вот попадете в перспективную команду Дмитрия О., так он Вас как собаку из пневматики ;)
> просто меня бесит
программируйте в наморднике :)
← →
WebErr © (2004-05-05 14:42) [133]Ok, Вы все вместе дружно кто как и кое-как защитили-таки private секцию от поругания! :))))
Вопросов больше не имею... более того, скажу Вам по секрету, я проникся нежными чувствами к данной секции, но использовать её больше чем нужно я просто из рациональности склада моего мозгу не буду! ;)
Спасибо всем, кто принял участие в обсуждении! :)
До нового сабжа! :)
← →
WebErr © (2004-05-05 14:44) [134]Всё-таки все настолько привыкли к private секции, что даже не все знают, зачем она конкретно нужна или знают, но объяснить не могут! ;)
← →
Digitman © (2004-05-05 14:47) [135]
> WebErr © (05.05.04 14:44) [134]
тому, кто на бронепоезде, вникнуть в уже приведенные аргументы - натурально сложно
← →
WebErr © (2004-05-05 15:44) [136]
> Digitman © (05.05.04 14:47) [135]
Кроме Вас, о, Великий Мастер!
Ваши аргументы были самыми убедительными! :))))
← →
Digitman © (2004-05-05 15:56) [137]
> WebErr © (05.05.04 15:44) [136]
не сомневаюсь ни секунды
тем более заметен оппонирующий мне "бронепоезд"
← →
Goida © (2004-05-05 16:15) [138]
> WebErr © (05.05.04 14:44) [134]
> Всё-таки все настолько привыкли к private секции, что даже
> не все знают, зачем она конкретно нужна или знают, но объяснить
> не могут! ;)
Ну, а для чего она нужна? Конкретно?
← →
MalkoLinge © (2004-05-05 16:49) [139]
> Ну, а для чего она нужна? Конкретно?
Ну чиста по понятиям, прикинь ты подогнал мне свой класец, ну как без распальцовки мне втереть что там можно крошить а что впадлу ? и еще чтобы я к тебе порамсовать не смог ? Вот для этого и нужен private
← →
Goida © (2004-05-05 16:52) [140]
> MalkoLinge
Я это и без тебя знаю :) Я у WebErr спрашиваю, только он мне не ответит уже... наверно...
← →
malkolinge © (2004-05-05 18:22) [141]Я это ему тоже адресовал :)
← →
WebErr © (2004-05-06 17:43) [142]
> Goida © (05.05.04 16:52) [140]
Извращенцы, полюбившие защищать данные от левых классов и посредственных пользователей, (которые просто сделали вид, что защитились!) любят теперь "защищаться" и от собратьев по программированию, которые настолько полюбили ООП, что уже даже создают потомков от наилюбимейших Ваших Классов - вот от "защиты" от такого "беспредела" и нужна private фикция. :)
← →
WebErr © (2004-05-06 17:44) [143]
> malkolinge © (05.05.04 18:22) [141]
Не вижу... где?
Хоть бы номер поста сказали... :)
← →
WebErr © (2004-05-06 17:45) [144]Удалено модератором
Примечание: Offtopic
Страницы: 1 2 3 4 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.76 MB
Время: 0.214 c