Класс – это структурный тип данных, который включает описание полей, методов (процедур и функций, работающих с этими полями)

Класс ОКНО:

Поля 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 специальных метода – конструктор и деструктор.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: