- •Лабораторная работа № 1
- •Теоретические сведения
- •Программа работы
- •Контрольные вопросы
- •Лабораторная работа № 2
- •Теоретические сведения
- •Программа работы
- •Контрольные вопросы
- •Лабораторная работа № 3
- •Теоретические сведения
- •Программа работы
- •Контрольные вопросы
- •Лабораторная работа № 4 понятие класса
- •Теоретические сведения
- •Программа работы
- •Контрольные вопросы
- •Лабораторная работа № 5 статические методы класса
- •Теоретические сведения
- •Программа работы
- •Контрольные вопросы
- •Лабораторная работа № 6 механизм наследования
- •Теоретические сведения
- •Программа работы
- •Контрольные вопросы
- •Лабораторная работа № 7 виртуальные методы класса
- •Теоретические сведения
- •Программа работы
- •Контрольные вопросы
- •Лабораторная работа № 8
- •Теоретические сведения
- •Программа работы
- •Контрольные вопросы
- •Библиографический список
- •Содержание
Программа работы
Создать новый проект и сохранить все его файлы в папке с именем ‘…\Лабораторная работа № 5’.
Создать новый модуль Unit2 и в его секции interface объявить класс с любым именем, который будет содержать все разделы доступа.
В каждом разделе объявить по одному полю с различными именами и типами String, Word, Integer и Double.
-
Раздел доступа
Тип поля
Private
String
Protected
Word
Public
Integer
Published
Double
Примечание: Поле с типом Double для явного раздела published необходимо объявить в разделе published по умолчанию.
Подключить модуль Unit2 к модулю главной формы Unit1 и создать на ней компоненты Edit1, Edit2 и кнопку Button1.
В обработчике нажатия кнопки Button1 объявить объектную переменную с типом созданного класса, создать объект и попытаться обратиться ко всем его полям.
На основе этой попытки записать в отчет созданный класс и таблицу доступа к его полям из модуля Unit1.
Присвоить первому доступному полу класса значение, которое будет задано пользователем в компоненте Edit1, вывести в компонент Edit2 значение самого поля, освободить память под объект и запустить программу на выполнение.
Записать в отчет обработчик нажатия кнопки Button1 и результат выполнения программы.
Повторить пункты 7 и 8 для остальных доступных полей класса.
Примечание: В отчете отразить только модифицированные строки обработчика нажатия кнопки и работу программы с новыми типами данных
Скопировать созданный класс в раздел implementation модуля Unit1 и выполнить пункты 7 8 для остальных полей класса. Объяснить различия в таблицах доступа.
Восстановить модуль Unit1, удалив из него созданный класс.
В разделе public класса, созданного в модуле Unit2, объявить дополнительно три метода – одну процедуру и две функции с любыми именами и с типами для возвращаемого значения String и Word.
В секции implementation этого же модуля определить эти методы так, чтобы процедура инициализировала все поля класса, а функции возвращали значения тех, которые объявлены в разделах protected и private.
На основе инициализации записать в отчет объявленный класс, определенные методы и таблицу доступа к его полям из методов самого класса. Объяснить отличия от двух предыдущих таблиц.
Подключить модуль Unit2 к модулю главной формы Unit1 и дополнительно создать на ней два компонента – Edit3 и Edit4.
В обработчике нажатия кнопки Button1 объявить объектную переменную с типом созданного класса, создать объект, вызвать процедуру инициализации, вывести значения всех полей объекта в компоненты Edit1, Edit2, Edit3 и Edit4, освободить память под объект и запустить программу на выполнение.
Записать в отчет обработчик нажатия кнопки Button1 и результат выполнения программы.
Контрольные вопросы
Запишите синтаксис объявления класса и объясните назначение всех разделов доступа.
Объясните таблицы доступа к полям класса из разных модулей программы, из одного модуля программы и из методов самого класса.
Записать таблицу доступа к элементам класса из разных модулей программы.
Записать таблицу доступа к элементам класса из одного модуля программы.
Записать таблицу доступа к элементам класса методов самого класса.
Запишите синтаксис объявления и определения статических методов класса.
Объясните, чем статические методы класса отличаются от обычных процедур и функций языка Pascal.
Запишите синтаксис объявления и определения конструктора класса и объясните, какие действия он выполняет в зависимости от способа его вызова.
Запишите синтаксис оператора withи объясните, когда его необходимо использовать.
Запишите синтаксис объявления и определения деструктора класса и объясните, какие действия он выполняет.
Объясните, почему в настоящее время объекты удаляются из памяти не с помощью деструктора, а с помощью специального метода Free.
Записать, как будет заменено компилятором обращение к статическим методам, и объяснить назначение указателя Self.