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

Вниз

Как пользоваться интерфейсом?   Найти похожие ветки 

 
Kolan ©   (2006-03-26 22:35) [0]

Здравствуйте,
 Что такое интерфейс я разобрался. Это как бы контракт, который обязуется выполнить класс.

 IControl = interface
   procedure Drive;
 end;

 TCar = class(TInterfacedObject, IControl)
   procedure Drive;
 end;

Как теперь воспользоваться преимуществами интерфейса? Допустим у меня было бы их два, как предоставить только один из них?


 
Джо ©   (2006-03-26 23:13) [1]

Смотря, что тебя интересует. Вот различные примеры.


IJumper = interface
  procedure Jump;
end;

IDiver = interface
  procedure Dive;
end;

TSomething = class(TInterfacedObject, IJumper, IDiver)
  procedure Jump;
  procedure Dive;  
end;

...
var
 Jumper: IJumper;
 Diver: IDiver;
...

 Jumper := TSomething.Create;
 Jumper.Jump;

 Swimmer := TSomething.Create;
 Swimmer.Swim;

или

 Jumper := TSomething.Create;
 Jumper.Jump;

 if Jumper.QueryInterface (ISwimmer, Swimmer) = 0 then
   Swimmer.Swim;

или

 Swimmer := Jumper as Swimmer; // будет Exception во время исполнения, если интерфейс не поддерживается


 
Джо ©   (2006-03-26 23:14) [2]

Тю, сплошные опечатки. Swimmer = Diver по всему тексту, впрочем, наверное и так понятно, что я имел в виду.


 
Kolan ©   (2006-03-26 23:55) [3]

О большое благодарю :) А я ума не приложу...

Добавлю свой пример, заодно провери правильно ли я разобрался :)

Создаем 1 экз. TCar. И разным интерфейсам его назначаю.
procedure TForm1.FormCreate(Sender: TObject);
begin
 FCar := TCar.Create;
 FIControl := FCar;
 FIDemage := FCar;
end;


Теперь пользую интерфейсы:

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 FIControl.Drive;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 FIDemage.Break;
end;


Вроде все как божий день стало ясно :)
Еще раз благодарю.



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

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

Наверх




Память: 0.47 MB
Время: 0.026 c
2-1143027457
Officeman
2006-03-22 14:37
2006.04.09
Как узнать "name" компонента на форме, наводя на него курсор мыши


4-1137728229
alex_pv2
2006-01-20 06:37
2006.04.09
Как сказать приложению "Сохранись"


2-1143104010
Виктор1123
2006-03-23 11:53
2006.04.09
Начал изучать БД...


2-1143027901
ales
2006-03-22 14:45
2006.04.09
чтение строки


3-1139687196
veb
2006-02-11 22:46
2006.04.09
Ограничения ADOTable.Filter