Delphi-Help

  • Increase font size
  • Default font size
  • Decrease font size

Interface

Печать
Рейтинг пользователей: / 0
ХудшийЛучший 

Interface

Описание

1. Unit Name;
Interface
Declarations...
Implementation
Declarations...
end.

2. type Name = Interface{(BaseInterface,...)};

Ключевое слово Interface используется двумя различными способами.
Версия 1:
Он начинает определение внешнего интерфейса модуля. Здешние объявления внешне видимы другими модулями. Все эти объявления должны быть осуществлены в разделе Implementation.
Раздел Uses, если он имеется, должен быть в начале.
Версия 2:
В Объектно-ориентированном программировании, мы часто используем методы Абстрактного класса (Abstract) в базовом классе как метка - заполнитель. Все полученные классы должны использовать эти методы. Беря этот шаг в дальнейшем, определения интерфейса группируются только по абстрактным свойствам и методам. Это обеспечивает шаблон для класса, для того чтобы использовать его в гарантированной совместимости. Это походит классу только с абстрактными методами. Это выгодно тем классам, которые основаны на одном родительском классе и использующим один или более интерфейсов. Это добавляет предсказуемости операции для каждого класса, который использует интерфейс.
Для получения большей информации по этой сложной теме смотрите справку Delphi.

Пример кода

// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную
Form1, которая имеет событие OnCreate названное FormCreate.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
//
Определение интерфейса
IVehicle = Interface(IInterface)
//
Свойства и их функции
function GetAge   : Integer;
function GetMiles : Integer;
property age   : Integer read GetAge;
property miles : Integer read GetMiles;
//
Функция без свойств
function GetValue : Currency;
end;
//
Выполнение этого интерфейса в классе car
//
Обратите внимание, что TInterfaceObject определяет для нас
// QueryInterface, _AddRef, _Release
функции
TCar = Class(TInterfacedObject, IVehicle)
private
fAge, fMiles : Integer;
fCarType : string;
function GetAge   : Integer;
function GetMiles : Integer;
public
property age     : Integer read GetAge;
property miles   : Integer read GetMiles;
property carType : string  read fCarType;
//
Функции без свойств
function GetValue : Currency;
published
constructor Create(age, miles : Integer; carType : string);
end;
//
Сам класс формы
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;

implementation

{$R *.dfm}
//
Конструктор Car
constructor TCar.Create(age, miles: Integer; carType: string);
begin
//
Сохраняем параметры
fAge     := age;
fMiles   := miles;
fCarType := carType;
end;
//
Получение возраста автомобиля
function TCar.GetAge: Integer;
begin
Result := fAge;
end;
//
Получение пробега автомобиля
function TCar.GetMiles: Integer;
begin
Result := fMiles;
end;
//
Вычисление цены автомобиля
function TCar.GetValue: Currency;
begin
Result := 10000.0 - ((age * miles)/10.0);
end;
//
Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
var
car : TCar;
begin
//
Создание car!
car := TCar.Create(1, 2076, 'Honda Jazz');
//
Показ текущей цены этой машины
ShowMessageFmt('
Мой автомобиль %s, возраст %d г, пробег %d миль, цена %m',
[car.carType, car.age, car.miles, car.GetValue]);
end;
end.

Мой автомобиль Honda Jazz, возраст 1 г, пробег 2076 миль, цена $9,792.40

Примечание

При выполнении интерфейса, если вы не базируете ваш класс на том, которым уже осуществили их, типа TInterfacedObject, вы должны выполнить стандартные методы интерфейса QueryInterface, _AddRef и _Release.

Авторизация



Счетчики