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

Вниз

Разные объекты с одним именем   Найти похожие ветки 

 
Tolyan   (2004-04-14 10:36) [0]

Привет всем читающим и помогающим.
Объясните пожалуйста, кто может или знает можно ли сделать следующее. Допустим у меня имеются несколько описанных мной объектов с одинаковыми названиями функций, но разными алгоритмами. Так вот во время работы программы мне хотелось бы создавать один из описанных объектов но, что бы его имя (созданного объекта) не зависило бы от того, какой из объектов я создаю, т.е. далее в программе я имел бы объект с каким-то именем, а функции у него были бы только от одного из описанных типов.
Наверное это не сложно, но знаний не хватает


 
KSergey ©   (2004-04-14 10:52) [1]

Если я правильно понял вопрос (а именно: нужна единная ссылка на объект, для которого вызывается некий метод, но объект может быть разных классов, вернее нужна различная реализация вызываемого метода)

Решаем через единый базовый класс с абстрактной виртуальной функцией:

TBaseName = class
...
public
  procedure SuperMetod; virtual; abstract;
...
end;

TSpecific1 = class(TBaseName)
...
public
  procedure SuperMetod; override;  // метод с реализацией типа 1
...
end;

TSpecific2 = class(TBaseName)
...
public
  procedure SuperMetod; override;  // метод с реализацией типа 2
...
end;

....

procedure Txxxx.SomeMetod;
var
  o: TBaseName;
begin
  if ... then o := TSpecific1.Create
  else if ... then o := TSpecific2.Create
...
 o.SuperMetod;  // здесь вызываем метод для класса созданного объекта


При желании можно создать ссылки на производные классы, включить их в перечисление - ну и прочие рюшечки. Но принцип тот же.


 
Tolyan   (2004-04-14 13:32) [2]

Вот вот вот. как раз то, что мне нужно или совсем рядом.
Ели это действительно так - большой спасиб



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

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
11-1066389651
ALEF
2003-10-17 15:20
2004.05.02
mckActionListEditor


1-1082277869
Mim1
2004-04-18 12:44
2004.05.02
Исключения (Exceptions) - насколько безопасен такой код


4-1078988008
AlexS76
2004-03-11 09:53
2004.05.02
Как выбрать удаленный компьютер в диалоге


4-1078218124
Gia Gvatua
2004-03-02 12:02
2004.05.02
Повторный запуск


3-1081154226
ПрогерШ
2004-04-05 12:37
2004.05.02
Как в АДО привести типы? CAST не подходит - его нету :(