- •Оглавление
- •Введение
- •Основные этапы решения задач на эвм
- •Анализ постановки задачи и ее предметной области
- •Формальное решение задачи
- •Алгоритмизация
- •Основные средства представления алгоритмов
- •Визуальные алгоритмы
- •Процесс программирования
- •Языки программирования
- •Язык программирования Pascal
- •Среда программирования Delphi
- •Событийная модель ос Windows
- •Концепция объектно-ориентированного программирования
- •Delphi. Основные характеристики продукта
- •Высокопроизводительный компилятор в машинный код
- •Быстрая разработка приложения из прототипов
- •Структурное объектно-ориентированное программирование
- •Создание приложения в Delphi
- •Свойства в Delphi
- •События в Delphi
- •Основные понятия алгоритмического языка Состав языка
- •Основные символы
- •Элементарные конструкции
- •Выражения
- •Комментарии
- •Директивы компилятора
- •Тип данных
- •Приведение типов
- •Простые типы данных Целые типы данных
- •Битовая арифметика
- •Вещественные типы данных
- •Логический тип данных
- •Символьный тип данных
- •Структура программы
- •Константы
- •Переменные
- •Операторы Оператор присваивания
- •Оператор перехода
- •Структурные операторы
- •Операторы управления выполнением цикла
- •Оператор варианта
- •Подпрограммы
- •Перечисляемый тип данных
- •Интервальный тип данных
- •Структурированные типы данных Массивы
- •Строковой тип данных (строки)
- •Множества
- •Файлы. Файловый тип
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Последовательный и прямой доступ к компонентам файла
- •Процедурный тип
- •Вариантный тип
- •Адресный тип. Указатели
- •Динамические переменные
- •Динамические структуры данных
- •Динамические массивы
- •Очереди
- •Статические методы
- •Виртуальные методы
- •Динамические методы
- •Методы обработки сообщений
- •Конструкторы и деструкторы
- •Замещенные методы
- •Абстрактные методы
- •Свойства
- •Обработчики событий
- •Список рекомендуемой литературы
Замещенные методы
Замещение методов предполагает передачу и изменение методов от класса-предка классу-наследнику. Как мы уже отметили, только виртуальные или динамические методы могут быть замещенными. Рассмотрим пример:
type
TComponentParent = class
procedure MyProcVirtual; virtual;
procedure MyProcDynamic; dynamic;
end;
TComponentChild = class(TComponentParent)
procedure MyProcVirtual; override;
procedure MyProcDynamic; override;
end;
Применение служебного слова override после названия метода позволяет заместить оригинал метода класса-предка методом класса-наследника. При этом замещение происходит непосредственно в таблице виртуальных методов (или таблице динамических методов). При использовании служебных слов virtual или dynamic вместо override произойдет создание нового метода вместо замещения старого.
Замещение методов не работает со статическими методами — при замещении статического метода новым произойдет простая замена метода родителя в потомке.
Абстрактные методы
Абстрактными методами называются такие методы, которые описаны внутри определения класса или компонента, но не содержат никаких действий и никогда не вызываются и соответственно не имеют реализации. Абстрактными могут быть виртуальные или динамические методы. Абстрактные методы используются только в классах-предках. Описание абстрактного метода выглядит следующим образом:
procedure MyProcedure; virtual; abstract;
Примечание
Никогда не вызывайте на выполнение абстрактные методы, т. к. они не содержат никаких команд, которые могли бы выполниться. Вызов абстрактного метода приведет к генерации исключительной ситуации EAbstractError.
Свойства
Свойства так же, как и поля, определяют атрибуты объекта. Но в отличие от полей свойства реализуют механизм доступа для чтения или изменения данных в полях объекта.
Свойства позволяют изменять атрибуты объекта, в том числе, и вычисляемыми значениями. Объявление свойства объекта должно содержать его имя и тип, а также, как минимум, одно объявление способа доступа к данному свойству (описания).
Синтаксис объявления свойства объекта имеет вид:
property <Имя свойства>:<тип> <описания>;
<имя свойства> должно быть уникальным;
<тип> — определяет, значения какого типа могут быть записаны в данном свойстве;
<описания> — объявления способов доступа к данному свойству.
Каждое свойство объекта должно иметь, как минимум, одно обязательное объявление способа доступа к свойству. Имеется два обязательных описания доступа к свойству объекта: чтение (read) значения свойства и запись (write) значения свойства.
Синтаксис обязательных описаний read и write имеет следующий вид:
read <имя поля> |<имя метода> write <имя поля>|<имя метода>
где <имя поля> — поле, из которого берется или в которое помещается значение свойства,
<имя метода> — метод, который берет или помещает значение свойства компонента.
Объявление read (читать) описывает поле или метод, предназначенные для чтения значения свойства, а объявление write (писать) описывает поле или метод, предназначенные для записи значения свойства компонента.
Пример описания свойств объекта:
type
TMyObject = class // Объявление нового класса
private FInt: integer; // Объявление целочисленного поля
FReal: real; // Объявление вещественного поля
FChar: char; // Объявление поля символьного типа
published property Prop1:integer read FInt write FInt;
// Объявление свойства Prop1, с помощью
// которого можно читать значение поля
// FInt и записывать данные в это же поле property Prop2:real read FRea1;
// Свойство Ргор2 предназначено
// только для чтения значения поля FReal property РrорЗ:char write FChar;
// Свойство Рrор3 предназначено
// только для записи данных в поле FChar
end;
После такого объявления программист получает доступ к полям объекта через три свойства Prop1, Prop2 и Рrор3.