Воспользуемся нашим конструктором Create. Как вы видите, мы должны присвоить нашему объекту конструктор создаваемого класса. При необходимости конструктору нужно передать параметры. Конструкторов у класса может быть несколько. Вот теперь мы можем использовать наш объект так как нам нужно. Давайте создадим еще одну книгу:
1
|
MyBook2 := TBook.Create('Delphi для начинающих 2', 'Cyberexpert', 1300);
|
И попробуем сравнить эти книги при помощи нашего метода CompareWithBook у класса TBook. Для этого вызовем этот метод у одного объекта, и в качестве параметра передадим другой объект типа TBook:
1
2
|
a := MyBook.CompareWithBook(MyBook2);
ShowMessage(IntToStr(a));
|
Можем также вывести на экран автора и название книги:
Предположим мы каким-то образом использовали наш объект и теперь он стал нам не нужен. Зачем ему занимать лишнюю оперативную память? Давайте его удалим! Сделать это можно при помощи деструктора. У каждого класса по-умолчанию помимо конструктора Create существует деструктор Destroy. Т.е. их не надо описывать и создавать, у каждого класса они уже есть. Только в нашем нестандартном конструкторе мы реализовали присвоение полям начальных данных. Если бы мы не создали свой конструктор, то использовали бы стандартный при создании объекта, и изначальных параметров передать не смогли бы. Также можно создать и деструктор, давайте его сделаем и будем в нем выводить некоторое сообщение:
1
2
3
4
5
6
7
8
9
10
11
|
TBook = class
public
PagesCount: integer;
Title, Author: string;
function CompareWithBook(OtherBook: TBook): integer;
procedure ShowTitle;
constructor Create(NewTitle, NewAuthor: string; NewPagesCount: integer);
destructor Destroy; // так деструктор будет выглядеть в описании класса
end;
|
Реализация деструктора:
1
2
3
4
|
destructor TBook.Destroy;
begin
ShowMessage('Уничтожается книга "' + Title + '"');
end;
|
Т.е. мы будем выводить сообщение перед уничтожением объекта. Для чего же еще нужен деструктор? Для того чтобы уничтожать также и все вложенные в классе объекты. Т.е. когда внутри класса существует объект, чтобы его использовать, мы должны этот «подобъект» создать в конструкторе и уничтожить в деструкторе.
Соответственно, чтобы вызвать деструктор мы вызовем его как обыкновенный метод тогда, когда нам нужно удалить объект:
В этом уроке мы рассмотрели самые базовые основы ООП. В следующих уроках мы продолжим знакомиться с классами и их возможностями. Исходный код проекта, созданного в этом уроке, можно скачать здесь.
|