Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.21;
Скачать: CL | DM;

Вниз

Кто ХОРОШО знает ООП в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
14-68550
edik
2003-08-02 16:38
2003.08.21
Где взять документацию


3-68185
Tahion2
2003-07-28 20:38
2003.08.21
Позволяет ли ClientDataSet хранить несколько таблиц в одном файле


14-68548
Виталий Чернышенко
2003-08-04 23:40
2003.08.21
Юрий Зотов попал в серьезное ДТП


3-68191
Magic&Wizard
2003-07-28 14:56
2003.08.21
Сохраняю выборку из базы, используя IBSQL .BatchOutPut/Input


1-68275
Nestor
2003-08-07 09:48
2003.08.21
Почему не показывает форму?