Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция 8 Объекты 2017.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
445 Кб
Скачать
☆

Средства разработки классов:

Механизмы инкапсуляции, наследования и полиморфизма.

Инкапсуляция - это объединение сущностей, из которых состоит класс, в единое целое.

Наследование – любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя родителя.

Структура описания класса-потомка:

Type <имя класса потомка>= class (<имя класса родителя >)

<Новые поля класса потомка>

<Новые методы класса потомка>

Type TPoint = 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;

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

Конструктор порождает объект и выполняется первым. Конструктор распределяет объекты в динамической памяти.

Деструктор удаляет объекты из кучи.

Описания их с помощью зарезервированных слов – Constructor , Destructor .

У класса Tobject - эти методы называются Create и Destroy, так они называются и в большинстве потомках.

Type TPoint = class

X,Y: Integer;

Visible:Boolean:

Color:word;

Constructor Create (InitX, InitY, Col:integer);

Destructor Destroy;

Procedure Show; virtual {нарисовать}

Procedure MoveTo(StepX, StepY: integer); {переместить}

Function IsVisible:boolean; {сделать видимой}

End

Классы определяются в модулях. При объявлении класса в интерфейсной секций определяются области видимости элементов класса.

Например,

Private [praivit]– закрытые – доступны только для методов этого класса;

Protected [protekted]– защищенные -доступны для методов этого класса и его потомкам

Public –доступные - нет ограничений на область видимости

Пример. Код программы при создании Приложения в Делфи

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs;

type

TForm1 = class(TForm)

private

{ Private declarations }

public

{ Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.dfm}

end.

Код проекта

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

End. .

Этапы разработки ПО с использованием ООП.