Форум: "Потрепаться";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
ВнизКто ХОРОШО знает ООП в Delphi Найти похожие ветки
← →
Igor__ (2003-08-04 16:51) [0]Делаю поддержку разных форматов файлов. Сделал класс
TBase=class
...
end;
у него два наследника
TReader=class(TBase)
...
end;
TWriter=class(TBase)
...
end;
Это главные классы.
Для каждого формата создаю модуль в котором пишутся наследники TReader и TWriter. Но в них много похожого, например, открытие(чтения заголовка, ...). Я хочу в каждом модуле написать класс с общими процедурами(например TWav) для TXXXReader и TXXXWriter и потом написать собственно и TXXXReader и TXXXWriter, которые будут наследниками TReader(TWriter) и TWav, т.е. мне нужно двойное наследования(TXXXReader=class(TReader,TWav)
), для того, чтобы избежать дублирования кода. Но Delphi не хочет делать двойное наследование и пишет, что второй "наследник" должен быть интерфейсом!!! Как мне выйти из ситуации.
← →
Skier (2003-08-04 16:55) [1]>Igor__ © (04.08.03 16:51)
Сделай свойство типа TWav (для TXXXReader и TXXXWriter) и работай через него.
← →
Igorek (2003-08-04 16:58) [2]Используй интерфейсы или агрегирование.
← →
VAleksey (2003-08-04 17:47) [3]Если в них "много похожего", то почем не вынести это "похожее" в класс TBase, или промежуточный класс TCustomBase?
← →
Igor__ (2003-08-04 18:15) [4]
> Сделай свойство типа TWav (для TXXXReader и TXXXWriter) и работай через него.
ИМХО непойдёт.
> Используй интерфейсы или агрегирование.
Подробнее, please!!!
> Если в них "много похожего", то почем не вынести это "похожее"
> в класс TBase, или промежуточный класс TCustomBase?
Класс TBase содержит в себе общие свойсва файла, а TWav спецефические для данного формата.
← →
Rouse_ (2003-08-04 18:24) [5]Если TXXXReader=class(TReader,TWav) то однозначно интерфейсы. А поподробнее есть на этом сайте в статьях. Либо в любом поисковике по слову "Использование интерфейсов"
Желаю успехов
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c