- •Объектно-ориентированный анализ
- •Объектно-ориентированное программирование.
- •Объектно-ориентированное проектирование.
- •Основные понятия объектно-ориентированного проектирования.
- •Классы и объекты в Object Pascal.
- •Важнейшие принципы объектно-ориентированного программирования.
- •Составляющие класса.
- •Объекты
- •Создание и уничтожение объектов.
- •Наследование конструкторов и деструкторов.
- •Свойства и инкапсуляция.
- •Статические методы.
- •Полиморфизм. Виртуальные и динамические методы.
- •Абстрактные методы.
- •Перекрытие виртуальных и динамических методов.
- •Как устроен объект изнутри
- •Перезагрузка методов.
- •Задача с использованием полиморфизма
- •Области видимости.
- •Создание класса комплексных чисел.
- •Создание класса векторов
- •Объект-список
- •Модуль по работе со списками
- •Основная программа по работе с объектами-списками
- •Система программирования Delphi
- •Терминология Delphi.
- •Первые шаги визуального программирования в среде Delphi.
- •Иерархия компонентов.
- •Собственники компонентов
- •Элементы управления.
- •Компоненты (tComponent)
- •Оконные не оконные
- •Родительские и дочерние компоненты.
- •Объектно-событийное программирование. События
- •Реакции на события
- •Программирование реакции на событие
- •Особенности реализации событий
- •Делегирование событий
- •Виды событий
- •Диалоги. Работа с файлами. Открытие и закрытие файлов с использованием стандартных диалоговых окон.
- •TOpenDialog и tSaveDialog – диалоги открытия и сохранения файлов (страница dialogs )
- •Компонент класса tform
- •Создание и использование форм
- •Шаблоны форм
- •Программы со многими формами
- •Модульный принцип построения программ.
- •Программные файлы. Основные типы файлов проекта. Простейшее приложение.
- •Структура головного файла проекта.
Составляющие класса.
Составляющими класса являются поля, методы, свойства.
Поля
Определение: Полями называются инкапсулированные в классе данные. Они аналогичны полям записи. Поля могут быть любого типа, в том числе и типа класс. Для обращения к полям используются составные имена вида:
<имя объекта>.< имя поля>
Поля класса доступны всем его методам. Поля и методы у разных объектов одного класса одни и те же.
Например:
type
Тcomp=class
re,im:real
end;
var a:Тcomp;
begin … … …
a.re:= 6.5;
a.im:=-10.5;
… … …
end.
Тcomp – имя класса, содержащего два поля: re и im, a – объект класса Тcomp (т.е. переменная комплексного типа), ее значениями являются пары вещественных чисел – действительная и мнимые части.
В объектно-ориентированном программировании прямой доступ к полям объекта нежелателен. Чтение и обновление их содержимого должно производится вызовом соответствующих методов. В Delphi у всех стандартных классов все поля недоступны и заменены базирующимися на них свойствами.
При создании новых классов на базе ранее созданных класс-потомок наследует все поля класса-родителя. Удаление и переопределение полей родителя невозможно. Можно добавлять новые поля в классе-потомке.
Например: type
TPerson = class
fam: string
end;
TStudent = class (TPerson)
grup: integer
end;
var x:TStudent;
Таким образом объект х имеет два поля: поле fam, наследуемое от класса TPerson и свое поле grup.
Класс – потомок получает все поля всех своих предков и может дополнять их своими, но не может переопределять их или удалять.
Т.о. чем ниже в дереве иерархии располагается класс, тем больше данных получают в свое распоряжение его объекты. Отметим, что почти все классы имеют имена, начинающиеся с буквы T (от слова Type).
Методы
Метод – это процедура или функция, описанная в классе и предназначенная для операции над полями.
Методы описываются как обычные процедуры и функции, но в описании класса записывается лишь заголовок процедуры или функции. Отличие метода от процедуры состоит в том, что помимо явно описанных параметров в заголовке метода, методу всегда не явно передается еще и указатель на вызвавший его экземпляр; он хранится в переменной Self.
Полные описания методов делаются после того, как завершено описание класса объекта. При этом заголовок метода будет иметь вид:
Procedurе < имя класса>.< имя метода> (<формальные параметры>);
Function <имя класса>.<имя метода> (<формальные параметры>):
< тип функции>;
Разрешено писать сокращенный заголовок метода. За заголовком метода следует блок, то есть раздел описаний и раздел операторов. Метод имеет доступ к полям данных объекта, не требуя передачи их ему в виде параметров. Поэтому имена полей класса и имена формальных параметров метода класса не должны совпадать.
При вызове метода класса записываются составные имена вида:
< имя объекта>.< имя метода>
При вызове метода указываются фактические параметры, если этот метод имел формальные параметры при описании.
Например:
Type ТСomp=class
re, im: real; {поля класса ТСomp }
procedure Add(z:Tcomp);
function Modul:real; {методы класса ТСomp }
………
end;
{затем в разделе var описываются объекты a, b}
Var a, b:ТComp;
Begin
………
a. Add(b);
{объект а вызывает метод Add с фактическим параметром b}
b. Modul;
{объект b вызывает метод Modul }
………
End.
Так как в Delphi прямой доступ к полям объекта нежелателен, в классе необходимо создать методы, предусматривающие ввод и вывод значений всех его полей.
Например:
Type ТСomp = class
re,im: real;
… … …
procedure set (x,y: real); {метод записи в поле, т.е. присвоения }
end; { значений x,y полям re и im}
procedure ТСomp.set; {сокращенный заголовок метода, без параметров}
begin
re:=x;
im:=y;
end;
var a,b: ТСomp;
begin … … …
a.set (-5,10);
b.set (1.3,13.8);
… … …
end.