Автор работы: Пользователь скрыл имя, 21 Ноября 2011 в 22:24, доклад
Особой разновидностью методов являются конструкторы и деструкторы. Напомним, что конструкторы создают, а деструкторы разрушают объекты. Создание объекта включает выделение памяти под экземпляр и инициализацию его полей, а разрушение - очистку полей и освобождение памяти. Действия по инициализации и очистке полей специфичны для каждого конкретного класса объектов.
ТАМБОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИМЕНИ Г.Р. ДЕРЖАВИНА
Кафедра
информатики и информационных технологий
Доклад на тему:
«Объектно-
Выполнила студентка 47/2 группы
Моргунова А.Ю.
Преподаватель:
Чиркин
Е.С.
Тамбов, 2011
Особой разновидностью методов являются конструкторы и деструкторы. Напомним, что конструкторы создают, а деструкторы разрушают объекты. Создание объекта включает выделение памяти под экземпляр и инициализацию его полей, а разрушение - очистку полей и освобождение памяти. Действия по инициализации и очистке полей специфичны для каждого конкретного класса объектов. По этой причине язык Delphi позволяет переопределить стандартный конструктор Create и стандартный деструктор Destroy для выполнения любых полезных действий. Можно даже определить несколько конструкторов и деструкторов (имена им назначает сам программист), чтобы обеспечить различные процедуры создания и разрушения объектов.
Объявление конструкторов и деструкторов похоже на объявление обычных методов с той лишь разницей, что вместо зарезервированных слов function и procedure используются слова constructor и destructor. Для нашего класса TDelimitedReader потребуется конструктор, которому в качестве параметра будет передаваться имя обрабатываемого файла и разделитель элементов:
type
TDelimitedReader = class
...
// Конструкторы и деструкторы
constructor Create(const FileName: string; const ADelimiter: Char = ';');
destructor Destroy; override;
...
end;
Приведем их возможную реализацию:
constructor TDelimitedReader.Create(const FileName: string;
const ADelimiter: Char = ';');
begin
AssignFile(FileVar, FileName);
Delimiter := ADelimiter;
end;
destructor TDelimitedReader.Destroy;
begin
// Пока ничего не делаем
end;
Если
объект содержит встроенные объекты
или другие динамические данные, то
конструктор - это как раз то место,
где их нужно создавать.
Конструктор применяется к классу или к объекту.
Если он применяется к классу,
Reader
:= TDelimitedReader.Create('
то
выполняется следующая
В результате все числовые поля и поля порядкового типа приобретают нулевые значения, строковые поля становятся пустыми, а поля, содержащие указатели и объекты получают значение nil.
Затем выполняются заданные программистом действия конструктора.
Ссылка на созданный объект возвращается в качестве значения конструктора. Тип возвращаемого значения совпадает с типом класса, использованного при вызове (в нашем примере это тип TDelimitedReader).
Если конструктор применяется к объекту,
Reader.Create('MyData.
То
конструктор выполняется как обычный
метод. Другими словами, новый объект не
создается, а происходит повторная инициализация
полей существующего объекта. В этом случае
конструктор не возвращает никакого значения.
Далеко не все объекты корректно себя
ведут при повторной инициализации, поскольку
программисты редко закладывают такую
возможность в свои классы. Поэтому на
практике повторная инициализация применяется
крайне редко.
Деструктор
Деструктор уничтожает объект, к которому применяется:
Reader.Destroy;
В результате:
В теле деструктора обычно должны уничтожаться встроенные объекты и динамические данные, как правило, созданные конструктором.
Как
и обычные методы, деструктор может
иметь параметры, но эта возможность используется
редко.
Список используемой литературы:
[Электронный
ресурс]. – Режим доступ: http://www.interface.ru/home.
1481#4
Информация о работе Объектно-ориентированное программирование: Конструкторы и деструкторы