- •Назовите структурные операторы, применяемые в Object Pascal, и их особенности
- •Использовании подпрограмм в Object Pascal и их разновидности
- •Различных механизмах передачи параметров в под программы Delphi
- •Перечислите области видимости элементов классов, применяемые в Object Pascal
- •Расскажите о правилах описания методов в классах и их особенностях
- •Объясните понятия статических, перегружаемых и абстрактных методов
- •Опишите правила наследования классов.
- •Поясните сущность полиморфизма
- •Расскажите о возможностях определения типа объекта во время выполнения программы и приведение типов объектов
- •Опишите жизненный цикл экземпляра класса, расскажите о конструкторе экземпляров класса
- •Расскажите о деструкторе класса экземпляров класса
- •Деструкторе класса экземпляров класса
- •Описание и использование специальных свойств| объекта property
- •Опишите механизм сообщений в ос Windows
- •Расскажите о методах обработки исключительных ситуаций
- •Расскажите о классах, предназначенных для хранения информации в виде списков
- •Основные свойства и методы классов-списков
- •Опишите возможности и особенности хранения строковых массивов в классах-наследниках tStrings
- •Поясните понятие потока и объясните преимущество использования потоков по отношению к традиционным методам чтения/записи данных
- •Расскажите о строчных потоках, построенных на основе оперативной памяти
- •Поясните понятие графического контекста Windows
- •Форматы графических файлов, поддерживаемых Delphi
- •Расскажите о файлах, соответствующих каждой форме приложения в Delphi
- •Опишите структуру приложения на Delphi, расскажите о видах интерфейса приложения с точки зрения расположения его окон на экране
- •Опишите процесс построения приложения в Delphi
- •Опишите основные инструменты среды разработчика Delphi
- •Опишите жизненный цикл экземпляров классов
- •Расскажите о механизме интерфейсов в Delphi
- •Расскажите об интерфейсах (Interface и (Unknown))
- •Расскажите о правилах именования компонентов и автоматическое именование их Средой разработчика
- •Поясните разницу между свойством принадлежности компонентов и свойством визуальной принадлежности
- •Расскажите о взаимосвязях компонентовчерез механизм уведомлений
- •Расскажите о визуальных компонентах-оболочкахи легковесных компонентах
- •Расскажите об организации структуры элементов управления в окне
- •Расскажите об методах расположения визуальных компонентов на экране и управления их размерами
- •Расскажите о свойствах видимости и доступности визуальных компонентов
- •Расскажите о компонентах, предназначенных для вывода на экран текстовой информации
- •Расскажите о компонентах, предназначенных для ввода текстовой информации
- •При помощи каких компонентов можно обеспечить возможность ввода пользователем числовых значений?
- •При помощи каких компонентов можно вывести на экран какое-либо графическое изображение?
- •Расскажите о возможностях элементов управления — кнопок
- •Приведите правила создания компонентов во время выполнения программы
- •Поясните понятие диалогового компонента
- •Поясните разницу между модальными и немодальными диалогами
- •Поясните понятие формы и основы использования форм в Delphi
- •Опишите жизненный цикл формы
- •Расскажите об основах организации многооконных приложений в Delphi
- •Поясните понятие фрейма
- •Расскажите о депозитарии форм
- •Опишите основные методы, применяемые в Delphi для управления окружением программы
- •Расскажите про использование dll в программных продуктах
- •Расскажите про многопоточные приложения
- •Расскажите об особенностях модели сом
- •Расскажите про модель сообщений компонентов
Расскажите о возможностях определения типа объекта во время выполнения программы и приведение типов объектов
Ответ: Для определения, к какому именно классу принадлежит объект, накоторый указывает некоторая ссылочная переменная, в Delphi предусмотрен оператор is, возвращающий значение true, если объект является экземпляром заданного класса, или класса-наследника, или false, если объект не принадлежит заданному классу и его наследникам.
После определения факта принадлежности к классу объект можно привести к заданному типу для получения доступа к свойствам и методам, заявленным в этом классе, а не в классе, тип которого указан в ссылочной переменной. Для приведения к заданному классу используется оператор аз.
Опишите жизненный цикл экземпляра класса, расскажите о конструкторе экземпляров класса
Ответ: Жизненный цикл экземпляра класса представляет собой его создание с помощью вызова конструктора, использование свойств и методов экземпляра класса и последующее разрушение структур объекта с помощью вызова деструктора.
Конструктор наследуется автоматически всеми классами от коренного класса TObject и выполняет две основных функции:
Выделяет память под структуры данных, необходимые для поддержания жизнедеятельности объекта, то есть инициализирует объект; заполняет порядковые (целочисленные, логические, перечислимые и интервальные) свойства объекта нулевыми значениями; устанавливает нулевые ссылки (значение nil) для свойств-указателей; а также устанавливает нулевые длины строкам.
Возвращает ссылку на объект, которую можно сохранить в переменной для доступа к свойствам и методам объекта, а также для его последующего разрушения.
Конструктор может быть переопределен в описании класса для выполнения дополнительной инициализации, характерной экземплярам именно этого класса. Например, в конструкторе можно установить начальные значения свойств. Переопределение конструктора выполняется по обычным правилам переопределения методов, за исключением следующих моментов:
Конструктор родительского класса не должен быть обязательно помечен ключевым словом virtual, для того, чтобы его переопределить. Соответственно, если конструктор родительского класса не помечен как виртуальный или динамический, не требуется указание ключевого слова override в описании дочернего класса.
Существенным отличием в переопределении конструкторов и обычных методов является возможность изменения параметров конструктора дочернего класса, относительно конструктора родительского класса. Однако это возможно, только если конструктор не является виртуальным Для вызова версии конструктора, замененной в классе-наследнике, используется ключевое слово Inherited.
Расскажите о деструкторе класса экземпляров класса
Ответ: Объект естественным образом занимает место в памяти, которая необходима для хранения, как свойств объекта, так и дополнительной информации, например, таблицы виртуальных методов. Для разрушения объекта и освобождения памяти, которая выделена для него в конструкторе, предназначен деструктор — специализированный метод, изначально определенный в классе TObject. Если в конструкторе объекта производится выделение памяти под какие-либо ресурсы или объект регистрируется в других объектах, передавая им ссылку на себя, то возникает необходимость переопределения деструктора для освобождения памяти и разрушения связей с другими элементами программы. При переопределении деструктора необходимо указывать ключевое слово override, так как деструктор является виртуальным методом (помечен ключевым словом virtual в описании класса TObject). Последней командой описательной части деструктора должен быть вызов переопределенного деструктора родительского класса. Прямой вызов деструктора не применяется для уничтожения экземпляра класса, так как для этого предназначен метод Free, также описанный в классе TObject. Данный метод не может быть переопределен, так как не имеет в своем описании ключевого слова virtual, однако метод Free вызывает конструктор Destroy, поведение которого может быть специфическим.
Порядковые (целочисленные, логические, перечислимые и интервальные) свойства объекта нулевыми значениями; устанавливает нулевые ссылки (значение nil) для свойств-указателей; а также устанавливает нулевые длины строкам.
2. Возвращает ссылку на объект, которую можно сохранить в переменной для доступа к свойствам и методам объекта, а также для его последующего разрушения.
Конструктор может быть переопределен в описании класса для выполнения дополнительной инициализации, характерной экземплярам именно этого класса. Например, в конструкторе можно установить начальные значения свойств. Переопределение конструктора выполняется по обычным правилам переопределения методов, за исключением следующих моментов:
1. Конструктор родительского класса не должен быть обязательно помечен ключевым словом virtual, для того, чтобы его переопределить. Соответственно, если конструктор родительского класса не помечен как виртуальный или динамический, не требуется указание ключевого слова override в описании дочернего класса.
2. Существенным отличием в переопределении конструкторов и обычных методов является возможность изменения параметров конструктора дочернего класса, относительно конструктора родительского класса. Однако
это возможно, только если конструктор не является виртуальным.
Для вызова версии конструктора, замененной в классе-наследнике, используется ключевое слово Inherited.