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

UptoLike

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

23
чис ло, поэтому в функции ScalarProduct соответствующие действия над
переменной result выполняются вручную.
Заметим еще, что имена большинства подпрограмм, оперирующих
рациональными числами, совпадают с именами методов нашего класса
и должны быть квалифицированы именем модуля. Пример 2.2.2 содер-
жит и код вновь добавленного конструктора, не требующий, впрочем ,
каких-либо ком м ентариев .
7. Единственное существенное отличие размещения класса RVec-
tor в модуле использование модуля UnitRational. О пределяемый в нем
тип Rational фигурирует уже в интерфейсе класса RVector, поэтому под -
ключение необходимо выполнить в разделе интерфейс а.
Пример 2.2.3. Размещение класса RVector внутри модуля.
unit UnitRVector;
interface
uses UnitRational;
const Dim = 5;
type RVector = class
private
comp: array[1..Dim] of Rational;
public
function Plus (v: RVector): RVector;
function Minus (v: RVector): RVector;
function ScalarProduct(v: RVector): Rational;
function IsEqual (v: RVector): Boolean;
procedure Add (v: RVector);
procedure Subtract(v: RVector);
procedure Assign (v: RVector);
function GetLength: Real;
function GetComp(i: Integer): Rational;
procedure SetComp(i: Integer; value: Rational);
function AsString: String;
constructor Create;
end;
implementation
uses SysUtils; // теперь, когда функция IntToStr более не используется,
// этот модуль необходим лишь для поддержки исключений
// Здесь размещается реализация методов,
// приведенная в примере 2.2.2.
end.
8. Демонстрационная программа также почти не от личается от
чис л о, поэтом у в функц ии ScalarProduct с оот в ет с т в ующ ие д ейс т в ия над
перем енной result в ы пол няют с я в ручную.
        Зам ет им ещ е, чтоим ена бол ь шинс т в а под програм м , оперирующ их
рац ионал ь ны м и чис л ам и, с ов пад ают с им енам и м етод ов нашего кл ас с а
и д ол жны бы т ь кв ал ифиц иров аны им енем м од ул я. Прим ер 2.2.2 с од ер-
жит и код в нов ь д обав л енного конс т руктора, не т ребующ ий, в прочем ,
каких-л ибоком м ент ариев .
        7. Е д инс т в енное с ущ ес т в енное отл ичие раз м ещ ения кл ас с а RVec-
tor в м од ул е — ис пол ь з ов ание м од ул я UnitRational. О пред ел яем ы й в нем
т ип Rational фигурирует уже в инт ерфейс е кл ас с а RVector, поэтом у под -
кл ючение необход им ов ы пол нит ь в раз д ел е инт ерфейс а.

Пример2.2.3. Раз м ещ ение кл ас с а RVector в нут ри м од ул я.

unit UnitRVector;
interface
uses UnitRational;
const Dim = 5;
type RVector = class
private
  comp:       array[1..Dim] of Rational;
public
  function    Plus         (v: RVector): RVector;
  function    Minus        (v: RVector): RVector;
  function    ScalarProduct(v: RVector): Rational;
  function    IsEqual      (v: RVector): Boolean;
  procedure   Add     (v: RVector);
  procedure   Subtract(v: RVector);
  procedure   Assign (v: RVector);
  function    GetLength: Real;
  function    GetComp(i: Integer): Rational;
  procedure   SetComp(i: Integer; value: Rational);
  function    AsString: String;
  constructor Create;
end;
implementation
uses SysUtils; // теперь, когда функция IntToStr более не используется,
               // этот модуль необходим лишь для поддержки исключений
// Здесь размещается реализация методов,
// приведенная в примере 2.2.2.
end.


       8. Дем онс т рац ионная програм м а т акже почт и не отл ичает с я от


                                         23