Разработка классов на языке Object Pascal. Соколов Е.В. - 24 стр.

UptoLike

Составители: 

24
предыдущей. Изменяются лишь вызовы методов , принимающих в каче-
стве параметров или возвращающих в качестве значения рациональные
числа (SetComp и ScalarProduct), а также имена класса (IVector ® RVec-
tor), программы (TestIVector ® TestRVector) и м одуля (UnitIVector ®
UnitRVector). Для демонстрации работы конструктора Create сразу по-
сле создания векторов v 1 и v 2 добавлена инструкция вывода на экран
вект ора v1.
Пример 2.2.3. Демонстрационная программа для задачи 2.2.
program TestRVector;
{$APPTYPE CONSOLE}
uses UnitRVector in 'UnitRVector.pas',
UnitRational in 'UnitRational.pas';
// Второй модуль необходим для объявления переменной r
// и для вызова функции UnitRational.AsString в строке
// WriteLn('v2.ScalarProduct(v4): ', AsString(v2.ScalarProduct(v4)));
var v1, v2, v3, v4: RVector; r: Rational; i: Integer;
begin
v1:=RVector.Create; v2:=RVector.Create;
WriteLn('v1: '+v1.AsString); // демонстрация работы Create
for i:=1 to Dim do begin
r.num:=i; r.den:=i+1; v1.SetComp(i, r);
r.num:=i+1; r.den:=i+2; v2.SetComp(i, r);
end;
WriteLn('v1: '+v1.AsString);
WriteLn('v2: '+v2.AsString);
WriteLn('v1.GetLength: ', v1.GetLength:5:5);
v3:=v1.Plus(v2); WriteLn('v3 after v3:=v1.Plus(v2): '+v3.AsString);
v1.Add(v2); WriteLn('v1 after v1.Add(v2): '+v1.AsString);
if v1.IsEqual(v3)
then WriteLn('v1 is equal to v3')
else WriteLn('v1 is not equal to v3');
v4:=RVector.Create;
v4.Assign(v2); WriteLn('v4 after v4.Assign(v2): '+v4.AsString);
v4.Subtract(v1);
WriteLn('v2 after v4.Subtract(v1): '+v2.AsString);
WriteLn('v4 after v4.Subtract(v1): '+v4.AsString);
WriteLn('v2.ScalarProduct(v4): ', AsString(v2.ScalarProduct(v4)));
v1.Destroy; v2.Destroy; v3.Destroy; v4.Destroy;
ReadLn;
end.
пред ы д ущ ей. И з м еняют с я л ишь в ы з ов ы м етод ов , приним ающ их в каче-
с т в е парам ет ров ил и в оз в ращ ающ их в качес т в е з начения рац ионал ь ны е
чис л а (SetComp и ScalarProduct), а т акже им ена кл ас с а (IVector ® RVec-
tor), програм м ы (TestIVector ® TestRVector) и м од ул я (UnitIVector ®
UnitRVector). Дл я д ем онс т рац ии работ ы конс т рукт ора Create с раз у по-
с л е с оз д ания в ект оров v1 и v2 д обав л ена инс т рукц ия в ы в од а на экран
в ект ора v1.

Пример2.2.3. Дем онс т рац ионная програм м а д л я з ад ачи 2.2.

program TestRVector;
{$APPTYPE CONSOLE}
uses UnitRVector in 'UnitRVector.pas',
     UnitRational in 'UnitRational.pas';
// Второй модуль необходим для объявления переменной r
// и для вызова функции UnitRational.AsString в строке
// WriteLn('v2.ScalarProduct(v4): ', AsString(v2.ScalarProduct(v4)));
var v1, v2, v3, v4: RVector; r: Rational; i: Integer;
begin
  v1:=RVector.Create; v2:=RVector.Create;
  WriteLn('v1: '+v1.AsString); // демонстрация работы Create
  for i:=1 to Dim do begin
     r.num:=i;   r.den:=i+1; v1.SetComp(i, r);
     r.num:=i+1; r.den:=i+2; v2.SetComp(i, r);
  end;
  WriteLn('v1: '+v1.AsString);
  WriteLn('v2: '+v2.AsString);
  WriteLn('v1.GetLength: ', v1.GetLength:5:5);
  v3:=v1.Plus(v2); WriteLn('v3 after v3:=v1.Plus(v2): '+v3.AsString);
  v1.Add(v2); WriteLn('v1 after v1.Add(v2): '+v1.AsString);
  if v1.IsEqual(v3)
     then WriteLn('v1 is equal to v3')
     else WriteLn('v1 is not equal to v3');
  v4:=RVector.Create;
  v4.Assign(v2); WriteLn('v4 after v4.Assign(v2): '+v4.AsString);
  v4.Subtract(v1);
  WriteLn('v2 after v4.Subtract(v1): '+v2.AsString);
  WriteLn('v4 after v4.Subtract(v1): '+v4.AsString);
  WriteLn('v2.ScalarProduct(v4): ', AsString(v2.ScalarProduct(v4)));
  v1.Destroy; v2.Destroy; v3.Destroy; v4.Destroy;
  ReadLn;
end.




                                        24