Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L05.doc
Скачиваний:
4
Добавлен:
10.11.2018
Размер:
233.98 Кб
Скачать

Объявление класса

<Имя класса> = class(<Имя базового класса>)

private

<Объявление закрытых полей и методов>

// Все, что объявлено здесь, может быть использовано только в данном модуле

protected

<Объявление открытых полей и методов>

// Все, что объявлено здесь, может быть использовано

// и в данном модуле, и во всех классах-наследниках данного класса

public

<Объявление открытых полей и методов>

// Все, что объявлено здесь, может быть использовано везде, где виден класс

published

<Объявление открытых полей и методов>

end;

Всё, что объявлено в разделе published, может быть использовано везде, где виден класс.

Раздел published может присутствовать, только если включен режим «динамическая идентификация типа данных» (Run-time type information, Run-time type identification, RTTI), который позволяет определить тип данных переменной или объекта во время выполнения программы.

Режим RTTI должен быть включен с помощью ключа {$M+}.

http://www.rsdn.ru/Forum/message/704173.flat.aspx

Конструктор

Объявление:

constructor TList1.Create;

begin

inherited Create;

// inherited;

pHead := Nil;

pTail := Nil;

nItems := 0;

end;

Обращение:

MyList1 := TList1.Create;

Обращение происходит к методу класса.

Деструктор

Объявление:

destructor TList1.Destroy;

begin

inherited Destroy;

// inherited;

end;

Обращение:

MyList1.Destroy;

Обращение происходит к методу объекта.

Пример построения линейного однонаправленного списка,

использующий ООП

Проект строится в «DOS-овском» режиме и имеет имя Project1 (по умолчанию). Для его построения из верхнего меню следует пройти маршрутом:

FileNewOtherConsole Application.

За основу взят код предыдущей программы. Список формируется на основе данных из текстового файла, содержащего чётное количество строк. Каждая нечётная строка содержит фамилию работника, каждая чётная – его месячный заработок.

Образец такого файла:

Inanov

24000

Sidorov

19000

Petrov

28000

Petrov

17500

Andrianov

21000

Andreev

27500

Yakovlev

32500

Проект состоит из четырёх файлов, содержащих коды на языке Pascal.

Файл Project1.dpr обращается к кодам (описаниям классов), представленным в трёх файлах-«устройствах» Unit1.pas, Unit2.pas, Unit3.pas, присоединённых к проекту.

В файле Unit1.pas описан базовый класс MyList1Class, способный к формированию линейного однонаправленного списка в оперативной памяти. Каждый новый элемент списка ставится в конец списка. Назначение методов класса пояснено комментариями.

В файле Unit2.pas описан класс MyList2Class – наследник базового класса MyList1Class. Все методы базового класса сохраняют силу, а в дополнение появляются два новых метода: PrependItem и PrependFromFile. С их помощью каждый новый элемент списка ставится в начало списка.

Текст файла Project1.dpr:

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils,

Unit1 in 'Unit1.pas',

Unit2 in 'Unit2.pas',

Unit3 in 'Unit3.pas';

var

MyList1: MyList1Class;

MyList2: MyList2Class;

MyList3: MyList3Class;

begin

MyList1 := MyList1Class.Create;

MyList1.AppendFromFile('c: List1.txt');

MyList1.ShowList;

WriteLN;

MyList2 := MyList2Class.Create;

MyList2.PrependFromFile('c: List2.txt');

MyList2.ShowList;

WriteLN;

MyList3 := MyList3Class.Create;

MyList3.InsertFromFile('c: List1.txt');

MyList3.ShowList;

Readln;

end.

Текст файла Unit1.pas:

unit Unit1;

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