Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники 60105.doc
Скачиваний:
10
Добавлен:
01.05.2022
Размер:
827.9 Кб
Скачать
    1. Описание класса в Object Pascal

В языке Object Pascal классы – это специальные типы данных, используемые для описания объектов. Соответственно объект, имеющий тип какого-либо класса, является экземпляром этого класса или переменной этого типа.

Класс представляет собой особый тип записи (record), имеющий в своем составе такие элементы, как поля, свойства и методы. Поля класса аналогичны полям записи и служат для хранения информации об объекте. Методами называются процедуры и функции, предназначенные для обработки полей. Свойства во многом аналогичны полям класса, но, если поле является только ячейкой памяти, чье содержимое можно считать и изменить, свойство связывает чтение или изменение данных с каким-либо действием.

Описание класса имеет следующую структуру:

type

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

private <внутренние (недоступные) описания>;

protected <защищенные описания>;

public <общедоступные описания>;

end;

Имя родительского класса указывается, если новый класс должен наследовать все его характеристики.

Для различных элементов класса можно устанавливать разные права доступа (видимости), для чего в описании класса используются отдельные разделы, обозначенные специальными спецификаторами видимости.

Разделы private и protected содержат защищенные описания, которые доступны внутри модуля, в котором они находятся. Описания из раздела protected, кроме того, доступны для порожденных классов за пределами данного модуля.

Раздел public содержит общедоступные описания, которые видимы в любом месте программы, где доступен сам класс.

В Object Pascal разрешается сколько угодно раз объявлять любую секцию, причем порядок следования секций не имеет значения. Любая секция может быть пустой.

После описания класса необходимо описать в разделе var переменную типа класса (объект).

Обращение к полям и методам класса осуществляется с указанием имени переменной, по аналогии с обращением к полям записи с использованием:

  • составных имен:

<имя объекта>.<имя поля>

<имя объекта>.<имя метода>(<список фактических параметров>);

  • оператора присоединения with:

with <имя объекта> do

begin

… <имя поля>…

… <имя метода>…

end;

Пример описания класса и объекта:

type

TNewForm = class(TForm)

public:

procedure SetGeometry(x, y, w, h: integer);

private

x, y, w, h: integer;

end;

var

new_form: TNewForm;

Здесь класс TNewForm создается на основе родительского класса TForm. Кроме унаследованных свойств и методов класс-потомок дополнительно содержит общедоступную процедуру SetGeometry и внутренние переменные x, y, w, h. Обратиться к полям или методу объекта можно следующим образом:

new_form.x := 5;

new_form.y := 10;

new_form.SetGeometry(5, 10, 50, 100);

или

with new_form do

begin

x := 5;

y := 10;

setGeometry(5, 10,50, 100 );

end;

    1. Описание класса в C++

В С++, так же как и в других языках программирования, класс – это структурный тип, используемый для описания некоторого множества объектов предметной области, имеющих общие свойства и поведение. Он описывается следующим образом:

class <имя класса>

{

private: <внутренние (недоступные) описания>;

protected: <защищенные описания>;

public: <общедоступные описания>;

};

Разделы private, protected, public имеют тот же смысл, что и в Object Pascal.

Для доступа к элементам класса используются составные имена:

<имя объекта>.<имя поля>

<имя объекта>.<имя метода>(<список фактических параметров>)

Для того чтобы получить доступ к элементам класса через указатель на объект, используется не «.», а «->»:

<указатель на объект>-><имя_поля>

<указатель на объект>-><имя метода>(<список фактических параметров>).

Пример описания класса и обращения к элементам объекта:

class TNewForm : public TForm

{

public:

void SetGeometry(int x, int y, int w, int h);

private:

int x, y, w, h;

};

var

TNewForm new_form;

TNewForm * pnew_form;

...

new_form.x = 5;

new_form.y = 10;

...

pnew_form->w = 50;

pnew_form->h = 100;

...

pnew_form->SetGeometry(5, 10, 50, 100);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]