База данных "Почтовое отделение"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

° необходимо выделить память, а после его использования - освободить память.

Выделение памяти осуществляют процедурой New или функцией New.

Например:(pC); или pC:=New(pTRoom);...

Для освобождения памяти используют процедуру Dispose. Например:(рС);...

Работа с динамическими объектами классов, построенных с использованием наследования со сложным полиморфизмом, имеет свои особенности.

1.3 Обращение к полям и методам объекта

 

Обращение к полям и методам

объекта выполняется так же, как к полям записей:

с использованием точечной нотации:

;

с использованием оператора with: do

......

......; ...

Например:

а) v:=A. length;

б) s:= A.Square;

в) s:=s+В[i],Square;

T)pC4ength:=3;...

 

1.4 Инициализация полей объекта

справочная система доступ поле листинг код

Поля объекта должны инициализироваться.

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

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

Program ex;TRoom = object, width:real;{поля: длина и ширина комнаты}Square;real;{мотод определения площади};

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

Begin:^ length"^ width;;

Var A:TRoom; {объявляем объект-переменную}:-3.5; {инициализируем поля объекта}

У4. width:-5J;

.гИе1п(*Площадъ комнаты равна \A.Square);

с использованием типизированных констант - синтаксис описания

совпадает с синтаксисом типизированных констант типа запись:

Program ex;TRoom = object, width:real;{nonH: длина и ширина комнаты}Square;real;{MQTOJX определения площади}

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

Begin:^ length"^ width;;:TRoom = (length:3.5; width:5.1); {объявляем константу}(Площадь комнаты равна \A.Square);

End

посредством специального метода - очень часто в качестве такого метода

используют специальную инициализирующую процедуру, которую рекомендуется

называть Init:

Program ex;TRoom = object

length, width.real;{пояя: длина и ширина комнаты}

function Square:real;{MQTOJX определения площади}

procedure //i//(7,H;/^aO;{инициализирующий метод}

end;

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

Begin: = length* width;;

{инициализирующий метод}TRoontlnit;:=l; width:-w;;

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

{основная программа}(3.5y5.1); {инициализируем поля объекта}

WriteLn(Площадь комнаты равна \A.Square);.

 

.5 Операция присваивания объектов

 

Над объектами одного класса определена операция присваивания. Физически при этом происходит копирование полей одного объекта в другой методом поле за полем:

Const A:TRoom=(length:3.7;:5,2);B:TRoom;..,

В:=А; {теперь B.length=3.7, а B.width=5.2}

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

 

1.6 Библиотеки классов. Ограничение доступа к полям и методам

 

Одним из достоинств ООП является возможность создания библиотек классов, на базе которых затем конструируют классы для реализации объектов реальной задачи. Библиотечные классы при этом описывают в интерфейсной части модуля, а тела методов - в разделе реализации.

Например:

Unit Room;

Type TRoom = object

length, width:real; {поля: длина и ширина комнаты}Square:real; {метод определения площади}/w/Y(7,w.Te(2/j;{инициализирующий метод}

end;

Implementation

Function TRoom.Square; {метод определения площади}:= length"^ width;;TRoom.Init; {инициализирующий метод}: =1;: =w;;

End.

В этом случае основная программа будет подключать соответствующий модуль и работать с классом, его полями и методами, как с ресурсами библиотеки:ex;/loom;{подключаем модуль с описанием класса TRoom}A:TRoom; {объявляем объект-переменную}

AJnit(3.5y5.1); {инициализируем поля объекта}Комната: длина= , AJength,

V ширииа= \ A.width);

WriteLnCПлощадь комнаты = \A.Square);

End.

В Borland Pascal можно ограничить доступ к полям и методам класса в пределах модуля. Для этого описание класса делится на специальные секции:

public-секция, содержащая описание общих или общедоступных полей и методов класса;

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

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

Unit ;

Interface

Туре = object

private

public

private

;...

Например, в нашем случае, если объекты класса TRoom используются только для получения информации о площади комнаты, то можно поля описать в секции private, но тогда доступ к этим полям из программы станет невозможным:

Unit RoomHiden;

Interface

Type TRoom = object

private {скрытые компоненты класса}, width:real; {поля: длина и ширина комнаты}

public {общие компоненты класса}Square.real;{метод определения площади}

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

Implementation

Function TRoom.Square; {метод определения площади}:= length"^ width;;TRoomJnit; {инициализирующий метод}: =1; width: =w;;

End.

Сокрытие некоторых полей и методов класса упрощает интерфейс класса, т. е. программист, использующий библиотечный класс, не получает лишней для него информации о внутренних механизмах реализации состояния и поведения объектов данного класса. Одновременно с этим программист, занимающий?/p>