Создание классов Delphi

Класс - логическая абстракция, которая описывает некоторый объект. В оперативной памяти существует объект, созданный на основе данного класса (объект - это экземпляр класса).
Объект физически занимает место в ОП и производит действия над своими данными (полями), используя собственные методы - процедуры и функции.
Существуют статические, виртуальные и динамические, а также абстрактные методы. По умолчанию, все методы статические.
Рассмотрим класс TParallel. Содержит методы Init, Volume, Show и поля  Fa, Fb, Fc.
Метод Init - процедура, Которая будет иницалишировать значения полей. Проинициализировать объект означает проинициализировать поля и свойства объекта, то есть присвоить им начальные значения. Если этого не сделать, то эти поля будут содержать "мусорные" значения.
Метод Volume - функция, которая рассчитывает и возвращает объем параллепипеда.
Метод Show - процедура,  выводит на экран объем и значение полей. Описание классов производится в секции интерфейс. Начинается со слова type и заканчивается end.
Опишем класс TParallel. Для реализации методов необходимо установить курсор на имя одного из методов и нажать комбинацию клавиш Shift+Ctrl+C.
Разместим на форме две кнопки:
Button1 - создает объект TParalllel
Button2 - проверяет, существует ли объект в памяти. С помощью специального метода конструктора Create необходимо создать объект в оперативной памяти. Пока мы только объявили переменную Par1. Она ни на что не указывает. Это означает, что пока объект не создан, ссылка Par1 указывает на область памяти с адресом 0.
Операционная система Windows запрещает расположение любого объекта по такому адресу. У нулевого адреса есть псевдоним nil.
В обработчике Button1.Click записываем создание объекта.
В обработчике Button2.Click проверяем существование объекта.
Обратная процедура созданию -   это деструктор, который имеет имя Destroy или Free.
В методе Free проверяется значение переменой указателя,  если оно не равно nil, то вызывается метод Destroy.
Par1.Destroy или Par1.Free. Каждый раз при выполнении команды TParellel.Create динамическая память под объект выделяется заново, а предыдущие объекты, на которые до этого указывал Par1, остаются в памяти и занимают ее. Поэтому память, выделенная для старого объекта безвозвратно утеряна, то есть пропадает информация о значении адреса и эта потерянная память не может быть использована не ОС, не самой программой.
Добавим в компонент Memo адрес объекта, содержащийся в переменной Par1: Memo1.Lines. Add('адрес' + IntToStr(integer(Par1))).
Понятие использования избыточной памяти программой называется утечкой памяти. В современных средах программирования предусмотрен сборщик мусора - это специальная программа, отслеживающая все переменные, ссылающиеся на динамически размещённые объекты. Это означает, что,  как только сборщик мусора находит отсутствует переменной указателя, то в дальнейшем на него нельзя будет сослаться и он автоматически  удаляется из памяти.

Комментарии

Популярные сообщения