Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  

форум программистов

Основы Delphi
Interface
Ключевое слово
Используется для внешних определений модуля, и как скелет класса System unit
  
1. Unit Name;
   Interface
     Declarations...
   Implementation
     Declarations...
   end.

2. type Name = Interface{(BaseInterface,...)};
Описание
Ключевое слово 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
 


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика



Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки? Slurm подготовили для вас особенный продукт!





форум программистов


© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия