Описание класса в Турбо Паскале. Объекты. Инкапсуляция




Для описания класса зарезервировано слово object. Тип object — это структура данных, которая содержит поля и методы. Описание объектного типа выглядит следующим образом:

Туре <имя класса>= object

<поле>;

....

<поле>;

<метод>;

....

<метод>;

End;

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

Тела методов описываются после объявления класса. Причем в заголовке метода можно не повторять список параметров, но перед именем метода необходимо указать имя класса через точку.

Procedure <имя класса>.<имя метода>;

<локальные ресурсы процедуры>

Begin

<тело процедуры>

End;

Function <имя класса>.<имя метода>;

<локальные ресурсы функции>

Begin

<тело функции>

End;

Описание объектного типа, и выражает такое свой­ство, как инкапсуляция.

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

 

Например, разработать класс для реализации объекта Прямоугольник, который должен хранить длину и ширину фигуры и уметь вычислять площадь данной фигуры.

 

Type TFigure= object

length, width: real; {поля: длина и ширина}

Function Square: real; {метод определения площади}

End;

Function TFigure.Square; {тело метода определения площади}

Begin

Square:=length*width;

End;

 

Поскольку поля и методы описаны в одном классе, все поля класса доступны методам класса без дополнительного указания.

Объявление объекта. Описав класс, можно объявить любое количество объектов этого класса. Например:

Var a: TFigure; {объект а класса TFigure}

b: array[1..10] of TFigure;{массив объектов типа TFigure}

c: ^TFigure; {указатель на объект класса TFigure}

Время жизни и видимость зависят от вида и места их описания и подчиняются общим правилам Паскаля.

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

На UML – унифицированном языке моделирования – класс отображается в виде прямоугольника, разделенного на три части. В первой содержится имя класса, во второй – атрибуты, в третьей – методы:

 

Обращение к полям и методам объекта. Обращение к полям и методам объекта выполняется так же, как к полям записей - с использованием точечной нотации или оператора with:

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

или

<имя объекта>.<имя метода>;

Инициализация полей объекта. Поля объекта должны инициализиро­ваться. Инициализация полей объекта может осуществляться тремя способа­ми:

· прямым занесением в поле, например:

Var

A: TFigure; {объявляем объект-переменную}

Begin

A.length:=10;

A.width:=15;

End.

· с использованием типизированных констант - синтаксис описания совпадает с синтаксисом типизированных констант типа «запись»:

Const

A:TFigure =(length:10; width:15); {объявляем константу}

· посредством специального метода - очень часто в качестве такого ме­тода используют специальную инициализирующую процедуру, которую ре­комендуется называть Init. Например:

Program obj1;

Type TFigure= object

length, width: real; {поля: длина и ширина}

Function Square: real; {метод определения площади}

Procedure Init(L,W:real); {инициализурующий метод}

End;

Function TFigure.Square; {тело метода определения площади}

Begin

Square:=length*width;

End;

Procedure Tfigure.Init; {инициализурующий метод}

Begin

Length:=L; width:= W;

End;

Var

A: TFigure; {объявляем объект-переменную}

Begin

A.Init(3.2, 6.5);

writeln('Площадь=',a.square:5:2);

readln;

End.

Библиотеки классов. Существует возможность создания библиотек классов. Библиотечные классы описывают в интерфейсной части модуля (Interface), а тела методов – в разделе реализации (Implementation).


{Создаем модуль}

Unit Figure;

Interface

Type TFigure=object

length, width: real;

Function Square: real;

Procedure Init(l,w:real);

End;

 

Implemantation

Function TFigure.Square;

Begin

Square:=length*width;

End;

Procedure Tfigure.Init;

Begin

Length:= l; width:= w;

End;

End.

{Создаем программу}

Program obj2;

uses Figure;

Var

A: TFigure;

Begin

writeln('Введите длину и ширину:');

Readln (a.length,a.width);

writeln('Площадь=',a.square:5:2);

readln;

End.


Ограничение доступа к полям и методам. Для ограничения доступа к полям и методам класса в пределах модуля, описание класса делят на секции:

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

· private –секция, содержащая описание внутренных или скрытых полей и методов класса.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-07 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: