- •2. Понятие класса в Делфи. Взаимосвязь класса и объекта. Дерево классов в Делфи.
- •5. Понятие и достоинства подхода объектно-ориентированного программирования.
- •21. Что такое событийное программирование? Понятие события и его роль в современном программировании. 22. События в Делфи программах, их назначения, средства реализации, примеры разнообразных событий.
- •23. Примеры событий в конкретных программах на Делфи.
- •24. Составные имена в программах – когда они возникают, как формируются и с помощью каких средств можно сократить длину таких имен. (например, оператор With)
- •25. Запись как тип данных, их определение, назначение, структура. Обращение к полям записей: составные имена, оператор With. Примеры применения в программах.
- •26. Условный оператор, его назначение, структура. Варианты условных операторов. Вложенные условные операторы. Примеры.
- •27. Массив как тип данных, определение, назначение, структура. Объявление и программирование ввода-вывода одномерного, двух и многомерного массивов. Примеры применения в программах.
- •Имя: array [нижний_индекс. .Верхний_индекс] of тип
- •Имя: array[НижняяГраница1..ВерхняяГраница1, НижняяГраница2..ВерхняяГраница2] of Тип
- •29. Файлы как типы данных. Определения и свойства файлов, типы файлов: текстовые, типированные и нетипированные файлы. Операторы чтения из файла и записи в файл.
- •30. Применение логических переменных, логических функций, логических выражений при программировании в системе Делфи. Логические операции, разрешенные в Делфи.
- •1. Отрицание: not ("не")
- •2. Логическое умножение (конъюнкция) - and ("и")
- •3. Логическое сложение (дизъюнкция) - or ("или")
- •4. Исключающее "или" - xor
- •31. Конструкторы и деструкторы – средства порождения и уничтожения объектов в системе Делфи. Их необходимость и область применения в программах.
4. Исключающее "или" - xor
Данная операция выдат результат True, если один из операндов является истиной, а другой - ложью, т.е. выражения не должны быть одинаковыми.
a:=True; b:=False; c:=a xor b; d:=not(a) xor b; e:=not(a) xor not(b);
Переменная c станет истиной, ведь a и b различны, а d - ложью, т.к. под сравнение попадут два значения False. Наконец, e станет истиной.
Этих четырёх операций - NOT, AND, OR, XOR достаточно для построения логического выражения любой сложности. Эти операторы могут как угодно комбинироваться и можно составлять большие выражения. Однако следует заботиться и о скорости работы. Если выражение вычисляется один раз - всё в норме, но если оно будет вычисляться несколько тысяч раз (например, обработка информации из большой базы данных), то грамотность составленного выражения будет отражаться на скорости выполнения операции. Если в программе появились грмоздкие логические выражения, следует задуматься об их упрощении: одно условие всегда будет проверяться быстрее, чем два.
31. Конструкторы и деструкторы – средства порождения и уничтожения объектов в системе Делфи. Их необходимость и область применения в программах.
Методы, которые предназначены для создания и удаления объектов называются конструкторами и деструкторами соответственно. Описание данных методов отличается от обычных тем, что в их заголовках стоят ключевые слова constructor и destructor. В качестве имен конструкторов и деструкторов в базовом классе TObject и многих других классах используются имена Create и Destroy.
Прежде чем обращаться к элементам объекта, его нужно создать с помощью конструктора. Например: ObjectA:=TOwnClass.Create;
Конструктор выделяет память для нового объекта, задает нулевые значения для порядковых полей, значение nil – для указателей и полей классов, строковые поля устанавливает пустыми, а также возвращает указатель на созданный объект.
Классы объектов определяются в секции type глобального блока. Описание класса начинается с ключевого слова class и заканчивается ключевым словом end.
Чтобы от описания класса перейти к объекту, следует выполнить соответствующее объявление в разделе var: Var math:TMatematica;
Переменная math – это ссылка на экземпляр (объект в памяти), которого физически еще не существует. Чтобы сконструировать объект (выделить память для экземпляра) класса TMatematica и связать с ним переменную math, нужно в тексте программы поместить следующий оператор: math:= TMatematica.Create;
Create – это конструктор объекта; он всегда присутствует в классе и служит для создания и инициализации экземпляров. При создании объекта в памяти выделяется место только для его полей. Методы, как и обычные процедуры и функции, помещаются в область кода программы; они могут работать с любыми экземплярами своего класса и не дублируются в памяти.
После создания объект можно использовать в программе: получать и устанавливать значения его полей, вызывать его методы. Доступ к полям и методам объекта происходит с помощью имен, например: math.x1;
Кроме того, как и при работе с записями, допустимо использование оператора with, например:
with math do
x1;
Если объект становится ненужным, он должен быть удален вызовом специального метода Destroy (освобождение памяти, занимаемой объектом), например: math.Destroy;
Destroy – это деструктор объекта; он присутствует в классе наряду с конструктором и служит для удаления объекта из динамической памяти. После вызова деструктора переменная math становится несвязанной и не должна использоваться для доступа к полям и методам уже несуществующего объекта. Чтобы отличать в программе связанные объектные переменные от несвязанных, последние следует инициализировать значением nil.
Вызов деструктора для несуществующих объектов недопустим и при выполнении программы приведет к ошибке. Чтобы избавить от лишних ошибок, в объекты ввели предопределенный метод Free, который следует вызывать вместо деструктора. Метод Free сам вызывает деструктор Destroy, но только в том случае, если значение объектной переменной не равно nil: math.Free;
После уничтожения объекта переменная math сохраняет свое значение, продолжая ссылаться на место в памяти, где объекта уже нет. Если эту переменную предполагается еще использовать, то желательно присвоить ей значение nil, чтобы программа могла проверить, существует объект или нет. Таким образом, наиболее правильная последовательность действий при уничтожении объекта должна быть следующая:
math.Free;
math:= nil;
С помощью стандартной процедуры FreeAndNil это можно сделать проще и элегантнее:
FreeAndNil(math);