Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi_02_06 [2012].doc
Скачиваний:
3
Добавлен:
28.08.2019
Размер:
89.09 Кб
Скачать

Свойства, наследуемые от класса tList

property Capacity: Integer;

Определяет размер массива, в котором хранятся объекты. Если при добавлении нового элемента окажется, что список заполнен, то Capacity будет увеличено.

property Count: Integer;

Показывает, сколько элементов списка используется в данный момент. Если увеличить значение Count, то в список будут добавлены пустые указатели (nil). При его уменьшении будет удалено необходимое число записей.

property List: PPointerList;

Определяет массив указателей, которые составляют элементы массива. Используется для того, чтобы получить прямой доступ к элементам массива.

Практическая часть

Пример консольного приложения с использованием класса TObjectList

Модуль

unit MyClasses;

interface

uses

SysUtils, Contnrs, Classes;

////////////////////////////////////////////////////////////////////////////////

// Типы String20 и String10 необходимы для согласования типов полей класса

// TMyObject, типов свойств класса TMyObject и типов полей записи Rec

////////////////////////////////////////////////////////////////////////////////

type

String20 = string[20];

String10 = string[10];

////////////////////////////////////////////////////////////////////////////////

// Объявление класса объекта, из экземпляров которого будет состоять список

// Класс TMyObject наследует все поля, свойства и методы базового класса TObject

////////////////////////////////////////////////////////////////////////////////

type

TMyObject = class (TObject)

private

FName: String20;

FAge: Integer;

FGroup: String10;

public

property Name: String20 read FName;

property Age: Integer read FAge;

property Group: String10 read FGroup;

constructor Create; overload;

constructor Create(Name: string; Age: Integer; Group: string); overload;

procedure Read; virtual;

procedure Print; virtual;

end;

////////////////////////////////////////////////////////////////////////////////

// Обявления класса списка

// Класс TMyObjectList наследует все поля, свойства и методы базового класса

// TObjectList

////////////////////////////////////////////////////////////////////////////////

type

TMyObjectList = class (TObjectList)

public

procedure Print;

procedure AddAtHead(AObject: TObject);

procedure DelFromHead;

procedure AddAtTail(AObject: TObject);

procedure DelFromTail;

end;

implementation

////////////////////////////////////////////////////////////////////////////////

// Реализация первого конструктора класса TMyObject

////////////////////////////////////////////////////////////////////////////////

constructor TMyObject.Create;

begin

inherited Create; // Вызывается одноименный конструктор базового класса

end;

////////////////////////////////////////////////////////////////////////////////

// Реализация второго конструктора присваивания класса TMyObject

////////////////////////////////////////////////////////////////////////////////

constructor TMyObject.Create(Name: string; Age: Integer; Group: string);

begin

inherited Create; // Вызывается одноименный конструктор базового класса

Self.FName := Name;

Self.FAge := Age;

Self.FGroup := Group;

end;

////////////////////////////////////////////////////////////////////////////////

// Реализация метода чтения с консоли полей класса TMyObject

////////////////////////////////////////////////////////////////////////////////

procedure TMyObject.Read;

begin

Write('Enter Name: '); Readln(FName);

Write('Enter Age: '); Readln(FAge);

Write('Enter Group: '); Readln(FGroup);

end;

////////////////////////////////////////////////////////////////////////////////

// Реализация метода вывода на консоль полей класса TMyObject

////////////////////////////////////////////////////////////////////////////////

procedure TMyObject.Print;

begin

Writeln(FName: 25, FAge: 10, FGroup: 15);

end;

////////////////////////////////////////////////////////////////////////////////

// Реализация метода вывода на консоль элементов списка класса TMyObject

////////////////////////////////////////////////////////////////////////////////

procedure TMyObjectList.Print;

var

I: Integer;

begin

for I := 0 to Count-1 do

TMyobject(Items[I]).Print;

end;

////////////////////////////////////////////////////////////////////////////////

// Добавить элемент в начало списка

////////////////////////////////////////////////////////////////////////////////

procedure TMyObjectList.AddAtHead(AObject: TObject);

begin

Insert(0, AObject);

end;

////////////////////////////////////////////////////////////////////////////////

// Добавить элемент в конец списка

////////////////////////////////////////////////////////////////////////////////

procedure TMyObjectList.AddAtTail(AObject: TObject);

begin

Add(AObject);

end;

////////////////////////////////////////////////////////////////////////////////

// Удалить элемент с начала списка

////////////////////////////////////////////////////////////////////////////////

procedure TMyObjectList.DelFromHead;

begin

if Count > 0 then Delete(0);

end;

////////////////////////////////////////////////////////////////////////////////

// Удалить элемент с конца списка

////////////////////////////////////////////////////////////////////////////////

procedure TMyObjectList.DelFromTail;

begin

if Count > 0 then Delete(Count-1);

end;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]