Разместите нашу кнопку!

Новые статьи:

Programming articles

Создание сайтов на шаблонах

Множество вариантов работы с графикой на канве

Шифруем файл с помощью другого файла

Перехват API функций - Основы

Как сделать действительно хороший сайт

Создание почтового клиента в Delphi 7

Применение паскаля для решения геометрических задач

Управление windows с помощью Delphi

Создание wap сайта

Операционная система unix, термины и понятия

SQL враг или друг

Возникновение и первая редакция ОС UNIX

Оптимизация проекта в Delphi

Ресурсы, зачем нужны ресурсы

Термины программистов 20 века

Советы по созданию собственного сайта с нуля

Шифруем файл с помощью пароля

Фракталы - геометрия природы

Crypt - Delphi программа для шифрования

Рассылка, зачем она нужна и как ее организовать?

Учебник по C++ для начинающих программистов

Уроки для изучения ассемблера

Загадочный тип PCHAR

Средства по созданию сайтов

Операторы преобразования классов is и as

Borland Developer studio 2006. Всё в одном

Создание базы данных в Delphi, без сторонних БД


Software engineering articles



Abstract

Определяет метод класса, реализуемый только в подклассе

Function|Procedure declaration; Virtual; Abstract;

Описание:

    Директива Abstract определяет метод класса как реализуемый только в классах-наследниках. Он абстрактен в смысле того, что является "заглушкой" - он не имеет реализации в текущем классе, но должен быть реализован классах-наследниках.

     Это используется в том случае, когда базовый класс рассматривается как класс-"скелет". Такие классы никогда не используются напрямую - только основанные на них классы используются для создания объектов этих классов.

     Например, класс TAnimal может иметь абстрактный метод для задания движения животного. Только когда создается, скажем, класс TCat, основанный на TAnimal, вы можете реализовать этот метод. В этом экземпляре, кот передвигается с помощью ходьбы.

     Класс Abstract должен использоваться при определении виртуального класса, так как мы не создали реализацию класса (см. Virtual для деталей)

Пример кода:

// Full Unit code.
// -----------------------------------------------------------
// You must store this code in a unit called Unit1 with a form
// called Form1 that has an OnCreate event called FormCreate.

unit Unit1;

interface

uses
   Forms, Dialogs, Classes, Controls, StdCtrls, SysUtils;

type
   // Define a base TPolygon class :
   // This class is a triangle if 3 sides, square if 4 sides ...
   TPolygon = class
   private
      sideCount : Integer; // How many sides?
      sideLength : Integer; // How long each side?
      shapeArea : Double; // Area of the polygon
   protected
      procedure setArea; Virtual; Abstract; // Cannot code until sides known
   published
      property count : Integer read sideCount;
      property length : Integer read sideLength;
      property area : Double read shapeArea;
      constructor Create(sides, length : Integer);
   end;

   // Define triangle and square descendents
   TTriangle = class(TPolygon)
   protected
      procedure setArea; override; // Override the abstract method
   end;

   TSquare = class(TPolygon)
   protected
      procedure setArea; override; // Override the abstract method
   end;

   // Define the form class used by this unit
   TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
   private
      { Private declarations }
   public
      { Public declarations }
   end;

var
   Form1: TForm1;

implementation
{$R *.dfm} // Include form definitions

// Create the TPolygon object
constructor TPolygon.Create(sides, length : Integer);
begin
   // Save the number and length of the sides
   sideCount := sides;
   sideLength := length;

   // Set the area using the abstract setArea method :
   // This call will be satisfied only by a subclass
   setArea;
end;

// Implement the abstract setArea parent method for the triangle
procedure TTriangle.setArea;
begin
   // Calculate and save the area of the triangle
   shapeArea := (sideLength * sideLength*0.866) / 2;
end;

// Implement the abstract setArea parent method for the square
procedure TSquare.setArea;
begin
   // Calculate and save the area of the square
   shapeArea := sideLength * sideLength;
end;

// Main line code
procedure TForm1.FormCreate(Sender: TObject);
var
   triangle : TTriangle;
   square : TSquare;
begin
   // Create a triangle and a square
   triangle := TTriangle.Create(3, 10);
   square := TSquare.Create(4, 10);


   // Show the areas of our polygons:
   ShowMessageFmt('Triangle area = %f',[triangle.area]);
   ShowMessageFmt('Square area = %f',[square.area]);
end;

end.

Результат выполнения:

Triangle area = 43.3
Square area = 100.0