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

UptoLike

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

75
ПРИЛОЖЕНИЕ 3. К ЛАСС R ATIONAL
Класс Rational отличается от одноименного класса из третьей час -
ти пособия [*] значительно менее, чем Number. Новыми являются мет о-
ды IsEqual, Assign и AsString, замещающие соответствующие абстракт-
ные методы класса Number. Методы Plus, Minus, Dot и Slash, напротив ,
отсутствуют (т. е. не переопределяются). Их реализация в классе Number
нас вполне устраивает.
Пример П .3.1. Код класса Rational.
unit UnitRational;
interface
uses UnitNumber;
type
Rational = class(Number)
private
num: Integer;
den: Integer;
protected
procedure Normalize; virtual;
procedure Reduce; virtual;
public
function IsEqual(n: Number): Boolean; override;
procedure Add (n: Number); override;
procedure Subtract (n: Number); override;
procedure MultiplyBy(n: Number); override;
procedure DivideBy (n: Number); override;
procedure Assign (n: Number); override;
function AsString: String; override;
constructor Create; override;
procedure SetNum(value: Integer); virtual;
procedure SetDen(value: Integer); virtual;
function GetNum: Integer; virtual;
function GetDen: Integer; virtual;
end;
implementation
uses SysUtils;
procedure Rational.Normalize;
{ Процедура приводит текущий объект к нормальной форме. }
begin
if self.den<0 then
begin self.num:=-self.num; self.den:=-self.den; end;
end;
                    П РИ Л О Ж Е Н И Е 3. К Л А ССRATIONAL

          Кл ас с Rational отл ичает с я от од ноим енногокл ас с а из т рет ь ей час -
т и пос обия [*] з начит ел ь ном енее, чем Number. Н ов ы м и яв л яют с я м ето-
д ы IsEqual, Assign и AsString, з ам ещ ающ ие с оот в ет с т в ующ ие абс т ракт -
ны е м етод ы кл ас с а Number. М етод ы Plus, Minus, Dot и Slash, напрот ив ,
от с ут с т в уют (т. е. не переопред ел яют с я). И х реал из ац ия в кл ас с е Number
нас в пол не ус т раив ает.

ПримерП.3.1. Код кл ас с а Rational.

unit UnitRational;
interface
uses UnitNumber;
type
  Rational = class(Number)
  private
    num:        Integer;
     den:       Integer;
  protected
    procedure   Normalize;                              virtual;
    procedure   Reduce;                                 virtual;
  public
    function    IsEqual(n: Number): Boolean;            override;
    procedure   Add        (n: Number);                 override;
    procedure   Subtract (n: Number);                   override;
    procedure   MultiplyBy(n: Number);                  override;
    procedure   DivideBy (n: Number);                   override;
    procedure   Assign     (n: Number);                 override;
    function    AsString: String;                       override;
    constructor Create;                                 override;
    procedure   SetNum(value: Integer);                 virtual;
    procedure   SetDen(value: Integer);                 virtual;
    function    GetNum: Integer;                        virtual;
    function    GetDen: Integer;                        virtual;
  end;
implementation
uses SysUtils;
procedure Rational.Normalize;
{ Процедура приводит текущий объект к нормальной форме. }
begin
  if self.den<0 then
     begin self.num:=-self.num; self.den:=-self.den; end;
end;



                                          75