|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.06.2010, 01:09 | #1 |
Участник клуба
Регистрация: 28.07.2009
Сообщений: 1,510
|
Вдруг приспичило понять разницу между TstringList и TStrings. Что за класс TPersistent?
Погуглив немножко, я понял, что TStrings - "абстрактный" класс. Ни разу не слышал про асбтрактные классы, но, конечно, немного догадываюсь, но хотелось бы поточнее понять.
Так же заметил, что TStrings идёт от TPersistent и вспомнил, что от него идут и многие другие классы в том, числе и TJpegimage... Какова суть этого класса? |
12.06.2010, 01:32 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
абстрактный класс это класс который содержит обьявления методов, но не их реализацию(как минимум часть методов не реализована).
нужно для того чтоб от него наследовать классы которые могут быть использованы не зависимо от того какой именно класс у нас есть(какая именно реализация) вспомни TStream ведь ты может использовать как TFileStream,так и TMemoryStream(есть еще TSocketStream(как то так)) и битмапу не важно с какого именно потока грузится...(TBitmap.LoadFromStream) . один из китов ООП. крутая вещь если подумать...ведь ты думаешь что у мемо TStrings(Memo.Lines) нет, так особый класс связаный с самим мемо, который читает все св-ва из него. за счет такого нам не надо писать процедуры для каждого типа класса. достаточно написать для общего предка TStrings который имеет все методы, а вот уже конкретный экземпляр...будет делать работу...но процедура не знает какой именно класс используется...она знает лишь то что он совместим с TStrings TPersistent дает Assign в первую очередь...то есть копирование объекта класса...а точнее его данные(члены класса)...но помоему само копирование реализует самостоятельно...(для графики одно...для строк иное) надеюсь норм объяснил (если что на вике про ООП почитай) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 12.06.2010 в 01:37. |
12.06.2010, 02:29 | #3 |
Участник клуба
Регистрация: 28.07.2009
Сообщений: 1,510
|
Спасибо)
Про TPersistent - сам сразу подумал про Assign, но был в замешательстве по поводу копирования... Он копирует только те поля, которые есть у него? Про TStrings - тоже примерно так и подумал, но не понимал почему его нельзя использовать... Алгоритм хранения данных реализован только в наследнике чтолЬ?? А ООП то я знаю =) Просто про абстракный класс первый раз услышал. Ладно там виртуальные и абстракные процедуры, но не классы =) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
что нужно сделать с <td> что бы между картинками другого <table> не было разделения? | alex555 | HTML и CSS | 22 | 24.04.2012 16:43 |
Вычислить разницу между датами без учета года | k1r1ch | Общие вопросы Delphi | 10 | 20.08.2009 18:36 |
Класс TStringlist | vitamin.rulez | Помощь студентам | 1 | 09.02.2009 14:42 |
Не могу понять, что требуется? | Shuraken | Общие вопросы Delphi | 2 | 10.08.2007 11:41 |
Класс TStringList | Pblog | Обсуждение статей | 0 | 27.05.2007 02:13 |