Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.77 MB
Время: 0.041 c
1-1084193964
magician
2004-05-10 16:59
2004.05.23
Сдел. форму с которой нельзя перекл. на другую


1-1083826800
xman
2004-05-06 11:00
2004.05.23
MEMO


7-1082268527
Shutov
2004-04-18 10:08
2004.05.23
Продвинутый hint у значка в Tray е


14-1083333839
Ultr
2004-04-30 18:03
2004.05.23
На суд народа


6-1080983791
V@LER@N
2004-04-03 13:16
2004.05.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский