ВУЗ:
Составители:
Рубрика:
17
Пример 2.1.3. Размещение класса IVector внутри модуля.
unit UnitIVector;
interface
const Dim = 5;
type IVector = class
private
comp: array[1..Dim] of Integer;
public
function Plus (v: IVector): IVector;
function Minus (v: IVector): IVector;
function ScalarProduct(v: IVector): Integer;
function IsEqual (v: IVector): Boolean;
procedure Add (v: IVector);
procedure Subtract(v: IVector);
procedure Assign (v: IVector);
function GetLength: Real;
function GetComp(i: Integer): Integer;
procedure SetComp(i: Integer; value: Integer);
function AsString: String;
end;
implementation
uses SysUtils;
// Здесь размещается реализация методов,
// приведенная в примерах 2.1.1 и 2.1.2.
end.
8. Как и реализация методов , демонстрационная программа мо-
жет быть легко получена из программы, демонстрирующей работу би б-
лиотеки в задаче 1.1. Для этого в последнюю необходимо внести сле-
дующие изменения:
а) если объект класса возвращается функцией в качестве значения,
то ответственность за его размещение в памяти несет данная функция, в
противном случае созданием объекта занимается сама программа;
б) все объекты, независимо от того, как они были созданы , удаляю т -
ся программой путем явного вызова деструкторов ;
в ) обращение к компонентам векторов возможно лишь посредством
вызова методов GetComp и SetComp, выражения вида v.comp[i] недопус -
тимы, так как поле comp является закрытым и определение класса нахо-
дится в отдельном модуле;
г) вызовы методов отличаются от вызовов подпрограмм библиотеки
синтаксически, но не содержательно: первый аргумент — объект, для
Пример2.1.3. Раз м ещ ение кл ас с а IVector в нут ри м од ул я. unit UnitIVector; interface const Dim = 5; type IVector = class private comp: array[1..Dim] of Integer; public function Plus (v: IVector): IVector; function Minus (v: IVector): IVector; function ScalarProduct(v: IVector): Integer; function IsEqual (v: IVector): Boolean; procedure Add (v: IVector); procedure Subtract(v: IVector); procedure Assign (v: IVector); function GetLength: Real; function GetComp(i: Integer): Integer; procedure SetComp(i: Integer; value: Integer); function AsString: String; end; implementation uses SysUtils; // Здесь размещается реализация методов, // приведенная в примерах 2.1.1 и 2.1.2. end. 8. Как и реал из ац ия м етод ов , д ем онс т рац ионная програм м а м о- жет бы т ь л егкопол учена из програм м ы , д ем онс т рирующ ей работ у биб- л иот еки в з ад аче 1.1. Дл я этого в пос л ед нюю необход им о в нес т и с л е- д ующ ие из м енения: а) ес л и объект кл ас с а в оз в ращ ает с я функц ией в качес т в е з начения, тоот в ет с т в еннос т ь з а егораз м ещ ение в пам ят и нес ет д анная функц ия, в прот ив ном с л учае с оз д анием объект а з аним ает с я с ам а програм м а; б) в с е объект ы , нез ав ис им оот того, как они бы л и с оз д аны , уд ал яют - с я програм м ой пут ем яв ногов ы з ов а д ес т рукторов ; в ) обращ ение к ком понент ам в екторов в оз м ожнол ишь пос ред с т в ом в ы з ов а м етод ов GetComp и SetComp, в ы ражения в ид а v.comp[i] нед опус - т им ы , т ак как пол е comp яв л яет с я з акры т ы м и опред ел ение кл ас с а нахо- д ит с я в отд ел ь ном м од ул е; г) в ы з ов ы м етод ов отл ичают с я от в ы з ов ов под програм м библ иот еки с инт акс ичес ки, но не с од ержат ел ь но: перв ы й аргум ент — объект, д л я 17
Страницы
- « первая
- ‹ предыдущая
- …
- 15
- 16
- 17
- 18
- 19
- …
- следующая ›
- последняя »