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

UptoLike

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

18
которого вызывается метод , просто ставится перед им енем метода и
отделяется от него точкой .
Полученный в результате код содержит
Пример 2.1.4. Демонстрационная программа для задачи 2.1.
program TestIVector;
{$APPTYPE CONSOLE}
uses UnitIVector in 'UnitIVector.pas';
var v1, v2, v3, v4: IVector; i: Integer;
begin
v1:=IVector.Create; v2:=IVector.Create;
for i:=1 to Dim do begin v1.SetComp(i, i+1); v2.SetComp(i, i+2); 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:=IVector.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): ', v2.ScalarProduct(v4));
v1.Destroy; v2.Destroy; v3.Destroy; v4.Destroy;
ReadLn;
end.
Как и выше, добавленные и измененные участки кода отмечены подчер-
киванием .
Задача 2.2 аналогична предыдущей, но теперь компоненты век-
торов должны быть рациональными числами. Предполагается, что тип
данных, представляющий рациональное число, и подпрограммы для
работы с ним уже определены и находятся в отдельном модуле. Интер-
фейс этого модуля приводится ниже, реализация в приложении 1.
unit UnitRational;
interface
которогов ы з ы в ает с я м етод , — прос тос т ав ит с я перед им енем м етод а и
отд ел яет с я от неготочкой.
        Пол ученны й в рез ул ьт ат е код с од ержит

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

program TestIVector;
{$APPTYPE CONSOLE}
uses UnitIVector in 'UnitIVector.pas';
var v1, v2, v3, v4: IVector; i: Integer;
begin
  v1:=IVector.Create; v2:=IVector.Create;
  for i:=1 to Dim do begin v1.SetComp(i, i+1); v2.SetComp(i, i+2); 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:=IVector.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): ', v2.ScalarProduct(v4));
  v1.Destroy; v2.Destroy; v3.Destroy; v4.Destroy;
  ReadLn;
end.


Как и в ы ше, д обав л енны е и из м ененны е учас т ки код а от м ечены под чер-
кив анием .

       Задача 2.2 анал огична пред ы д ущ ей, но т еперь ком понент ы в ек-
торов д ол жны бы т ь рац ионал ь ны м и чис л ам и. Пред пол агает с я, что т ип
д анны х, пред с т ав л яющ ий рац ионал ь ное чис л о, и под програм м ы д л я
работ ы с ним уже опред ел ены и наход ят с я в отд ел ь ном м од ул е. И нт ер-
фейс этогом од ул я прив од ит с я ниже, реал из ац ия — в прил ожении 1.


unit UnitRational;
interface


                                       18