Delphi. Урок 18. Классы и объекты 2/2

Воспользуемся нашим конструктором Create. Как вы видите, мы должны присвоить нашему объекту конструктор создаваемого класса. При необходимости конструктору нужно передать параметры. Конструкторов у класса может быть несколько. Вот теперь мы можем использовать наш объект так как нам нужно. Давайте создадим еще одну книгу:

1
 
MyBook2 := TBook.Create('Delphi для начинающих 2', 'Cyberexpert', 1300);

И попробуем сравнить эти книги при помощи нашего метода CompareWithBook у класса TBook. Для этого вызовем этот метод у одного объекта, и в качестве параметра передадим другой объект типа TBook:

1

2
 
:= MyBook.CompareWithBook(MyBook2);

ShowMessage(IntToStr(a));

Можем также вывести на экран автора и название книги:

1
 
MyBook.ShowTitle;

Предположим мы каким-то образом использовали наш объект и теперь он стал нам не нужен. Зачем ему занимать лишнюю оперативную память? Давайте его удалим! Сделать это можно при помощи деструктора. У каждого класса по-умолчанию помимо конструктора 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;

Т.е. мы будем выводить сообщение перед уничтожением объекта. Для чего же еще нужен деструктор? Для того чтобы уничтожать также и все вложенные в классе объекты. Т.е. когда внутри класса существует объект, чтобы его использовать, мы должны этот «подобъект» создать в конструкторе и уничтожить в деструкторе.
Соответственно, чтобы вызвать деструктор мы вызовем его как обыкновенный метод тогда, когда нам нужно удалить объект:

 
1
 
MyBook.Destroy;

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

Категория: delphi 7 | Добавил: ghost_mod (14.09.2016)
Просмотров: 417 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: