Описание |
Ключевое слово Interface используется двумя различными способами.
Версия 1:
Он начинает определение внешнего интерфейса модуля. Здешние объявления внешне видимы другими модулями. Все эти объявления должны быть осуществлены в разделе Implementation.
Раздел Uses, если он имеется, должен быть в начале.
Версия 2:
В Объектно-ориентированном программировании, мы часто используем методы Абстрактного класса (Abstract) в базовом классе как метка - заполнитель. Все полученные классы должны использовать эти методы.
Беря этот шаг в дальнейшем, определения интерфейса группируются только по абстрактным свойствам и методам. Это обеспечивает шаблон для класса, для того чтобы использовать его в гарантированной совместимости. Это походит классу только с абстрактными методами. Это выгодно тем классам, которые основаны на одном родительском классе и использующим один или более интерфейсов. Это добавляет предсказуемости операции для каждого класса, который использует интерфейс.
Для получения большей информации по этой сложной теме смотрите справку Delphi.
|
|
Примечания |
При выполнении интерфейса, если вы не базируете ваш класс на том, которым уже осуществили их, типа TInterfacedObject, вы должны выполнить стандартные методы интерфейса QueryInterface, _AddRef и _Release.
|
|
Похожие команды |
Abstract Определяет метод класса, осуществляемый только в подклассах
Class Начинает объявление типа объектного класса
Constructor Определяет метод используемый для создания объекта из класса
Destructor Определяет метод используемый для уничтожения объекта
Function Определяет подпрограмму, которая возвращает значение
Implementation Начинает раздел исполняемого кода в модуле
Object Позволяет данным типа подпрограмм обращаться к методу объекта
Procedure Определяет подпрограмму, которая не возвращает значение
TObject Тип базового класса, который является предком для всех других классов
Unit
Uses Объявляет список модулей (Units), которые будут импортированы
| |
|
Пример кода : Создание класса car от интерфейса vehicle |
// Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем 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
|
|