Класс ОКНО:
Поля X1,Y1,X2,Y2,Color
Метод Инициализировать(ax1,ay1,ax2,ay2,acolor)
Метод Изобразить
Конец описания
Пример задание класса:
TypeTPoint = class{класс точка на плоскости}
X,Y: Integer;
Visible:Boolean;
Color:word;
Procedure Init(InitX, InitY, Col:integer);
Procedure Show;; {нарисовать}
Procedure MoveTo(StepX, StepY: integer); {переместить}
Function IsVisible:boolean; {сделатьвидимой}
End;
var X1,X2:Tpoint;
Переменные типа класс называются объектами.
Операции над объектами:
§ Создание, уничтожение;
§ Модификация (обращение к объекту для изменения его состояния);
§ Селекция (ответ объекта о его состоянии);
§ Итерация (доступ к содержанию объекта по частям, например, массив).
В практике использования объектов, они используются только для разработки сложного ПО и с использованием динамических объектов.
Переменная называется статической, если место для нее выделяется в момент компиляции программы. Динамической – если в момент выполнения программы.
В Делфи все объекты динамические.
Средства разработки классов:
|
|
Механизмы инкапсуляции, наследования и полиморфизма.
Инкапсуляция - это объединение сущностей, из которых состоит класс, в единое целое.
Наследование – любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя родителя.
Структура описания класса-потомка:
Type<имя класса потомка>= class (<имя класса родителя>)
<Новые поля класса потомка>
<Новые методы класса потомка>
TypeTPoint = class{класс точка на плоскости}
X,Y: Integer;
Visible:Boolean;
Color:word;
Procedure Init(InitX, InitY, Col:integer);
Procedure Show; {нарисовать}
Procedure MoveTo(StepX, StepY: integer); {переместить}
Function IsVisible:boolean; {сделатьвидимой}
End;
var X1,X2:Tpoint; X1.Y:=5 X1.Show;
TypeTcircle = class (Tpoint) {классокружность}
Radius:integer;
Procedure Show;
End;
var C1,C2:Tcircle;
C1.X:=6; C1.R:=12;
Порожденный класс автоматически наследует поля, методы родителей и может добавлять их новыми. Это средство позволяет использовать имеющиеся классы и создавать новые.
Все классы Делфи и библиотеки VCL (С++ Builderиспользуется библиотека объектов VCL (Visual Component Library))порождены от единственного родителя - класса Tobject. Этот класс не имеет полей, но имеет методы общего назначения, обеспечивающие весь жизненный цикл объектов – от создания до уничтожения.
В Делфи запрещено множественное наследование – каждый класс имеет только одного родителя.
Полиморфизм - средство, позволяющие называть разные алгоритмические действия одним именем.
Type Tcircle = class (Tpoint)
Radius:integer;
Procedure Init(InitX, InitY, R:integer);
Procedure Show; {нарисовать}
Procedure MoveTo(StepX, StepY: integer); {переместить}
Function IsVisible:boolean; {сделатьвидимой}
End;
Для реализации полиморфизма в Делфи используются механизмы виртуальных и динамических методов.
|
|
Для описания виртуального метода используется слово virtual
Динамического – dynamic
Procedure Show; virtual; {нарисовать}
Встретив эти объявления, компилятор создает таблицы виртуальных и динамических методов и помещает в них адреса точек входа в эти процедуры. Они используются при обращении к этим методам на этапе прогона программы.
Отличие этих методов в том, что таблица динамических методов содержит адреса динамических методов только этого класса, а таблица виртуальных методов содержит информацию о виртуальных методах этого класса и всех его родителей.
В состав любого класса входят 2 специальных метода – конструктор и деструктор.