База данных "Почтовое отделение"
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
° необходимо выделить память, а после его использования - освободить память.
Выделение памяти осуществляют процедурой 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>