- •Объектно-ориентированное программирование
- •1 Вопрос
- •1.2 Достоинства и недостатки ооп
- •1.3 Пример описания объектного типа
- •2 Вопрос
- •2.1 Основные понятия ооп
- •2.2 Примеры программного описания
- •2.3 Соотношение основных понятий ооп
- •3 Вопрос
- •4 Вопрос
- •4.1 Правила наследования
- •5 Вопрос
- •5.1 Пример использования директив
- •6 Вопрос
- •6.1 Пример описания виртуального метода
- •7 Вопрос
- •7.1 Пример использования
- •8 Вопрос
- •8.2 Пример объявления
- •9 Вопрос
- •9.1 Глобальная обработка исключений
- •9.2 Локальная обработка исключений
- •9.3 Пример использования операторов
- •10 Вопрос
- •1.4 Закрытие файла
- •1.5 Ввод из файла
- •1.6 Определение конца файла
7.1 Пример использования
type MyString = string[15]; var P: ^MyString; begin New(P); P^:= '01 января 2000г'; Dispose(P); end;
8 Вопрос
Выделение памяти под экземпляр объекта. Привести пример объявления и реализации конструктора и деструктора.
Особой разновидностью методов являются конструкторы и деструкторы. Напомним, что конструкторы создают, а деструкторы разрушают объекты.
Конструктор (constructor) - особый метод класса, обеспечивающий инициализацию объектов этого класса. Обычно имеет имя Create и вызывается следующим образом:
<имя инициализируемого объекта> := <имя класса>.Create(<список параметров>);
Особенность вызова конструктора - он вызывается с помощью ссылки на класс, а не на экземпляр класса (в отличие от других методов, которые вызываются с помощью ссылки на объект). Иначе просто нельзя - ведь экземпляр объекта в момент вызова конструктора еще не создан. Код конструктора класса статичен и находится в памяти. Он относится к классу, а не к его экземпляру.
Деструктор (destructor) - особый метод класса, обеспечивающий разрушение объектов этого класса (и, в частности, освобождение занимаемой ими области в динамической памяти). Обычно имеет имя Destroy.
В Delphi все классы являются потомками, по крайней мере, класса TObject, поэтому, для корректного освобождения памяти, необходимо перекрывать деструктор, используя директиву override.
В Delphi прямой вызов деструктора используется редко. Вместо него используют метод Free.
MyObject.Free;
Метод Free вначале проверяет существует ли уничтожаемый объект, а затем вызывает деструктор. Этот прием позволяет избегать ошибок, возникающих при обращении к несуществующему объекту.
Нет необходимости всегда объявлять и описывать конструкторы и деструкторы. Все классы языка Delphi неявно наследуют функциональные возможности базового класса TObject, причем независимо, указано ли это наследование явно.
Объявление конструкторов и деструкторов похоже на объявление обычных методов с той лишь разницей, что вместо зарезервированных слов function и procedure используются слова constructor и destructor.
8.2 Пример объявления
type
TPerson=class
Name:string[30];
constructor Create;
destructor Destroy; override;
…
End;
Implementation
constructor TPerson.create;
begin
…
end;
destructor TPerson.Destroy;
begin
Professor.Free; //удаление объекта
…
inherited Destroy;
end;
9 Вопрос
Исключительные ситуации в терминологии ООП. Глобальная и локальная обработка исключений. Привести пример использования операторов контроля исключительных ситуаций.
Исключительные ситуации в Delphi встречаются постоянно. Исключительная ситуация это такая ситуация, в результате которой генерируется ошибка, и выполнение программы прерывается. Именно потому такая ситуация и называется исключительной. Например, деление на ноль - классический пример исключительной ситуации.
9.1 Глобальная обработка исключений
Механизм глобальной обработки исключений реализуется через объект Application, который есть в любом приложении.
Программист может выполнить полную обработку исключений, создав собственный глобальный обработчик события OnException. Для этого удобно использовать компонент ApplicationEvents.
Событие OnException имеет тип TExceptionEvent, который описан следующим образом:
Type TExceptionEvent = procedure (Sender: TObject; E: Exception) of Object
Параметр E представляет собой объект-исключение. С его помощью можно получить доступ к свойствам объекта-исключения, например, к свойству Message, содержащему описание возникшего исключения.
