
- •Содержание
- •Тема 1. Основные понятия
- •1.2. Задача, алгоритм, программа
- •1.2.Структура модуля исходного кода
- •Тема 2. Линейный блок: оператор присваивания, переменная, процедура и функция
- •2.1 Линейный блок
- •2.2. Переменные и константы
- •Синтаксис объявления переменной в ObjectPascal
- •Синтаксис объявления именной константы в ObjectPascal
- •Синтаксис объявления переменных в VisualBasic
- •2.3Типыпеременныхиконстант
- •Var1: type definitions;
- •Var2, var3: type definition4;
- •Var4 : typel;
- •2.4. Простые типы данных
- •2.4.1. Порядковые типы
- •Поддиапазонные типы
- •Перечислимые типы
- •Операции над порядковыми типами
- •2.4.2. Целые переменные
- •Integer Shortint Smallint Longint Byte Word Cardinal
- •Физические целые типы
- •Логические целые типы
- •2.4.3. Вещественные переменные
- •Вещественные типы.
- •2.4.4. Строковые переменные
- •2.4.5. Булевы типы
- •Размеры переменных булевых типов
- •2.5. Процедуры и функции
- •Описание и вызов процедуры
- •Описание и вызов функции
- •Передача параметров
- •2.6 Область видимости переменных, констант, процедур и функций
- •2.7 Стандартные функции
- •Функции преобразования типов
- •Математические функции
- •Функции вещественных типов
- •Функции обработки строк
- •Строковые функции
- •2.8 Операции над данными
- •2.9 Приоритеты операций
- •2.10. Структурные типы
- •2.10.1. Записи
- •1: Variantnamel: varianttype3;
- •2, 3: Variantname2: varianttype4;
- •1: (KinfWorker: String[15];
- •2: (PosAdmin: String[20]);
- •2.10.2. Массивы
- •Var ИмяМассива: array [ТипИндекса1, ...., ТипИндексаN] of БазовыйТип
- •Var MyArray: Array [1..10] of Integer;
- •2.10.3. Множества
- •Var MyAlphaSet: CharSet;
- •2.10.4. Файловый тип
- •2.11. Указательные типы
- •Средства работы с указателями
- •2.12. Процедурные типы
- •2.13. Тип variant
- •Тема 3. Блок принятия решений: операторы ветвления
- •3.1 Оператор if
- •If условие1 then
- •3.3Операторcase
- •Тема 4. Цикличекий блок: операторы повторяющихся действий
- •4.1.Цикл for
- •4.2. Циклы while и repeat
- •4.3. Операторы break и cont inue
- •Тема 5. Работа с текстовыми файлами
- •5.1. Типы доступа к текстовым файлам
- •5.2. Текстовые файлы
- •5.2.2 Бинарные файлы
- •Id : String[12];
- •Тема 6. Работа с классами
- •6.1. Понятие класса
- •6.2. Классы в object pascal
- •6.3. Свойства класса
- •Способ глобальных и локальных переменных
- •Способ процедуры свойств
- •Создание и удалениеобъектов
- •Inherited Create;
- •Inherited Destroy;
- •6.4. Методы класса
- •6.5. Объявление и удаление объектов
- •Литература
Тема 6. Работа с классами
6.1. Понятие класса
Объектомназывается некоторая реальность (предмет или явление), которая обладает состоянием, поведением и индивидуальностью.
Состояниеобъекта характеризуется перечнем всех возможных свойств данного объекта и текущими значениями каждого из этих свойств.Поведениехарактеризует воздействие объекта на другие объекты.Индивидуальность — это свойство объекта, позволяющее отличать его от других объектов.
Класс— это множество объектов, связанных общностью состояния и поведения.
Термины «экземпляр класса» и «объект» являются эквивалентными
При изучении Object Pascal мы уже сталкивались с классами и объектами. Например, когда мы помещали на форму кнопку, то мы в действительности создавали объект (экземпляр) классаCommandButton. Если, например, мы поместили на форму пять текстовых полей, то это значит, что мы создали пять объектов классаTextBox(текстового поля). Несмотря на то, что все пять текстовых полей различны, все они создаются по одному шаблону.
В программировании, класс — это шаблон, по которому создаются однотипные объекты. Однако само по себе определение класса не содержит информации о значениях свойств. Именно объект, например txtLastName, который вы создаете из этого класса, будет содержать конкретную информацию. Другой пример, класс «Человек», — не содержит никакой информации о росте человека, его весе и т.д. Но «Иванов Иван Иванович» является объектом класса «Человек», и имеет значение свойств «Рост» и «Вес».
6.2. Классы в object pascal
В Object Pascal можно создать собственные классы, которые обладают свойствами (полями) и методами.
Свойства (поля)— это глобальные и локальные переменные, которые используются для того, чтобы хранить значения различных характеристик класса. Другое название свойств класса — переменные-члены класса.
Методы — это глобальные и локальные функции или процедуры, которые определяются в классе. Другое название методов класса — функции-члены класса.
Для создания и удаления объектов используются специальные методы, называемые конструкторами деструкторами.
Синтаксис определения класса имеет в Delphiследующий вид:
type
имя_класса = class (родительский_класс)
private
// Приватные поля, методы и свойства
public
// Публичные поля, методы и свойства
end
В этом синтаксисе класс имя_класса определяется как дочерний класс по отношению к классуродительский_класс. Если родительский класс не указан (т.е. опущен вместе со скобками), то по умолчанию родительским является классTObject, являющийся базовым классом и последним предком всех объектов и компонентовDelphi.
6.3. Свойства класса
После создания класса необходимо добавить в него свойства. Свойства классов используются так же, как свойства элементов управления, т.е. для сохранения и получения некоторой информации. Добавить свойства в класс можно двумя способами: используя глобальные и локальные переменные или процедуры свойств.
Способ глобальных и локальных переменных
Простейший путь создания свойств — применение глобальных и локальных переменных. Просто поместите их в раздел объявлений класса. Например, в класс clsMan(Человек) можно добавить несколько закрытых свойств (фамилия, имя, вес, рост) с помощью следующего программного кода:
type
clsMan = class(TObject)
private
rWeight : Real;
rHeight : Real;
public
FirstName : String;
LastName : String;
end;
Свойства FirstName,LastNameявляются открытыми, т.е. их можно изменять не только в модуле-классе, но и в любых частях программы. Остальные свойства (rWeight,rHeight) являются закрытыми (локальными). Это значит, что их будет видно, только из функций и подпрограмм класса. Таким образом, в классе может содержаться множество переменных, но при создании объектов вне класса будут видны лишь глобальные переменные класса.
После того, как с помощью класса будет создан объект, с его свойствами можно работать так же, как и со свойствами любого стандартного элемента управления:
MyFrend.FirstName = "Иван"
MyFrend.LastName = "Петров"
Недостаток использования глобальных переменных в качестве свойств класса состоит в том что при присвоении им значений невозможно выполнить их проверку на корректность. Например, можно задать свойствам FirstName,LastNameлюбые имена, даже содержащие цифры.