ВУЗ:
Составители:
Рубрика:
56
function DynamicVector.GetCompType: ClassNumber;
begin
result:=self.comptype;
end;
constructor DynamicVector.CreateEmpty(ct: ClassNumber; d: Integer);
begin
inherited Create;
self.comptype:=ct;
SetLength(self.comp, d);
end;
constructor DynamicVector.Create;
begin
if self.comptype=nil then raise Exception.Create('Invalid Operation');
inherited Create; self.SetDim(0);
end;
constructor DynamicVector.CreateOfType(ct: ClassNumber);
begin
inherited Create;
self.comptype:=ct;
self.SetDim(0);
end;
destructor DynamicVector.Destroy;
begin
self.SetDim(0); inherited Destroy;
end;
7-8. Модуль, содержащий класс DynamicVector, отличается от Unit-
DynamicRVector лишь названием (UnitDynamicVector) и именем испол ь -
зуемого в разделе интерфейса модуля (UnitNumber). Поэтому приводить
его код мы не будем .
Отличия демонстрационной программы также незначительны .
Как уже было отмечено, новый объ ект -вектор мы можем создать
только с помощью конструктора CreateOfType, передав ему в качестве
параметра имя типа компонент. Пока мы располагаем лишь одним кон -
кретным наследником класса Number — типом Rational, его и будем ис -
пользовать.
Еще одно исправление связано с изменением типа возвращаемого
значения метода ScalarProduct с Rational на Number. Теперь перем енную
p, которой оно присваивается, удобно сделать формально принадлежа -
щей классу Number (как и в случае с временной переменной temp в м е-
тоде ScalarProduct, объявить p таковой можно было и в программе из
предыдущей задачи). Но для этого необходимо дополнительно подкл ю-
чить модуль UnitNumber.
function DynamicVector.GetCompType: ClassNumber;
begin
result:=self.comptype;
end;
constructor DynamicVector.CreateEmpty(ct: ClassNumber; d: Integer);
begin
inherited Create;
self.comptype:=ct;
SetLength(self.comp, d);
end;
constructor DynamicVector.Create;
begin
if self.comptype=nil then raise Exception.Create('Invalid Operation');
inherited Create; self.SetDim(0);
end;
constructor DynamicVector.CreateOfType(ct: ClassNumber);
begin
inherited Create;
self.comptype:=ct;
self.SetDim(0);
end;
destructor DynamicVector.Destroy;
begin
self.SetDim(0); inherited Destroy;
end;
7-8. М од ул ь , с од ержащ ий кл ас с DynamicVector, отл ичает с я от Unit-
DynamicRVector л ишь наз в анием (UnitDynamicVector) и им енем ис пол ь -
з уем огов раз д ел е инт ерфейс а м од ул я (UnitNumber). Поэтом у прив од ит ь
егокод м ы не буд ем .
О тл ичия д ем онс т рац ионной програм м ы т акже нез начит ел ь ны .
Как уже бы л оот м ечено, нов ы й объект -в ектор м ы м ожем с оз д ат ь
тол ь ко с пом ощ ь ю конс т руктора CreateOfType, перед ав ем у в качес т в е
парам ет ра им я т ипа ком понент. Пока м ы рас пол агаем л ишь од ним кон-
крет ны м нас л ед ником кл ас с а Number — т ипом Rational, егои буд ем ис -
пол ь з ов ат ь .
Е щ е од ноис прав л ение с в яз анос из м енением т ипа в оз в ращ аем ого
з начения м етод а ScalarProduct с Rational на Number. Теперь перем енную
p, которой оно прис в аив ает с я, уд обно с д ел ат ь форм ал ь но принад л ежа-
щ ей кл ас с у Number (как и в с л учае с в рем енной перем енной temp в м е-
тод е ScalarProduct, объяв ит ь p т аков ой м ожно бы л о и в програм м е из
пред ы д ущ ей з ад ачи). Н од л я этогонеобход им од опол нит ел ь нопод кл ю-
чит ь м од ул ь UnitNumber.
56
Страницы
- « первая
- ‹ предыдущая
- …
- 54
- 55
- 56
- 57
- 58
- …
- следующая ›
- последняя »
