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

Вниз

насколько приемлем такой конструктор?   Найти похожие ветки 

 
umbra ©   (2006-11-25 13:38) [0]

Я создаю некий набор наследников от TCollection и, соответственно, от TCollectionItem. Поскольку значения свойств для элементов коллекций я получаю из строк текстовых файлов, то в базовом абстрактном классе элемента я перегрузил конструктор TCollectionItem, добавив еще один параметр.


TAccountEntry = class(TCollectionItem)
{..............................................}
public
   constructor Create(Collection: TCollection; Data: String); reintroduce; overload;
{.............................................}
end;


При создании наследника базового класса (TPFUPSVEntry = class(TAccountEntry)) возможна ситуация , когда данных еще нет (это известно до создания). Поэтому его конструктор имеет вид

constructor TPFUPSVEntry.Create(Collection: TCollection; Data: String);
begin
 if Data = "" then
   inherited Create(Collection)
 else
   inherited;
end;


Вопрос заключается в том, какие подводные камни возможны при такой схеме. Заранее спасибо!


 
Palladin ©   (2006-11-25 13:43) [1]

При сериализации, чтения коллекции возникнут. Рекомендую вместо перепредставления конструктора добавить еще один.


 
umbra ©   (2006-11-25 14:12) [2]

посмотрел на то, что написал, и подумал: а зачем я это в наследнике делаю, если можно в базовом классе!

2 Palladin ©   (25.11.06 13:43) [1]

Честно говоря, не понял о чем идет речь :)


 
umbra ©   (2006-11-25 14:22) [3]

2 Palladin ©   (25.11.06 13:43) [1]

> Рекомендую вместо перепредставления конструктора добавить
> еще один.

решает ли  перенос проверки строки на наличие содержания в базовый класс проблему о которой Вы говорили?


 
Palladin ©   (2006-11-25 14:35) [4]


> umbra ©   (25.11.06 14:22) [3]

чтение коллекции из потока, имеется в виду, при сериалиализации компонента, если вдруг созданную коллекцию придется сохранять, а потом считывать. это первое что пришло в голову по поводу камней. сюда же относится и все что связано с созданием коллекции не "в ручную"... когда VCL рулит созданием ее item"ов... это логически вытекает...


> решает ли  перенос проверки строки на наличие содержания
> в базовый класс проблему о которой Вы говорили?

вот уж не знаю, решает в принципе - если не трогать конструктор Create...


 
GrayFace ©   (2006-11-25 15:03) [5]

О том, что reintroduce не нужен. Вот только не понятно, что должен делать код Create. По идее, этот пустой inherited вообще не должен транслироваться.


 
GrayFace ©   (2006-11-25 15:05) [6]

Это был ответ на [2] :)


 
Palladin ©   (2006-11-25 16:27) [7]


> сериалиализации

эко меня замкнуло... )


 
umbra ©   (2006-11-27 10:32) [8]

2 GrayFace ©   (25.11.06 15:03) [5]


> О том, что reintroduce не нужен.


а чем он мешает? как следует из справки, этот спецификатор всего-навсего говорит компилятору не генерировать предупреждение о скрытии родительского конструктора.

2 Palladin ©   (25.11.06 14:35) [4]
> если не трогать конструктор Create...

вы имеете в виду конструктор TCollectionItem? Но ведь его все равно придется вызвать в перепредставленном конструкторе.



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

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

Наверх




Память: 0.46 MB
Время: 0.045 c
15-1167746350
ProgRAMmer Dimonych
2007-01-02 16:59
2007.01.21
Смотрю на задачу, как баран на новые ворота...


15-1167149940
oldman
2006-12-26 19:19
2007.01.21
не хочется насиловать комп, поэтому лучше спросить...


15-1167601161
Anatoly Podgoretsky
2007-01-01 00:39
2007.01.21
Новый год


2-1167763029
Zver1992
2007-01-02 21:37
2007.01.21
Поиск в файле


11-1143526856
shalex
2006-03-28 10:20
2007.01.21
Можно сделать скроллинг в TabControl ?





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