Введение в объектно-ориентированное программирование на языке Object Pascal. Соколов Е.В. - 55 стр.

UptoLike

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

55
Пример 3.9. Новая реализация метода Plus класса Rational.
function Rational.Plus(n: Number): Number;
var res: Rational;
begin
if n is Rational then begin // если n - рациональное число,
res:=Rational.Create; // операция выполнима
res.num:=self.num*n.den+self.den*n.num;
res.den:=self.den*n.den;
res.Normalize; res.Reduce;
result:=res;
end // иначе возбуждается исключение
else raise Exception.Create('Invalid operation');
end;
Новая версия отличается от предыдущей лишь тем , что выясняет,
принадлежит ли объект n классу Rational и, если нет, возбуждает искл ю-
чение.
Упражнения
3.1. Определите класс Complex для работы с комплексными чис -
лами, производный от класса Number. Примените рассмотренные обоб -
щенные алгоритмы к матрицам комплексных чисел .
3.2. Модифицируйте операторы классов Rational и Complex таким
образом , чтобы всюду, где это возможно, они допускали совместное и с -
пользование в арифметических выражениях рациональных и комплекс -
ных чисел .
3.3. Попробуйте создать обобщенный алгоритм приведения мат-
рицы к ступенчатому виду. Определите, каких методов класса Number не
хватает для его реализации, и доработайте соответствующим образом
классы Rational, Complex и PAryFraction.
П р им ер 3.9. Н ов ая реал из ация м етод а Plus кл ас с а Rational.

function Rational.Plus(n: Number): Number;
  var res: Rational;
  begin
    if n is Rational then begin // если n - рациональное число,
       res:=Rational.Create;     // операция выполнима
       res.num:=self.num*n.den+self.den*n.num;
       res.den:=self.den*n.den;
       res.Normalize; res.Reduce;
       result:=res;
    end                          // иначе возбуждается исключение
    else raise Exception.Create('Invalid operation');
  end;


       Н ов ая в ерс ия отл ичает с я от пред ы д ущей л иш ь т ем , чтов ы яс няет,
принад л ежит л и объект n кл ас с у Rational и, ес л и нет, в оз бужд ает ис кл ю-
чение.

                                   У п раж нения

         3.1. Опред ел ит е кл ас с Complex д л я работ ы с ком пл екс ны м и чис -
л ам и, произ в од ны й от кл ас с а Number. Прим енит е рас с м от ренны е обоб-
щенны е ал горит м ы к м ат рицам ком пл екс ны хчис ел .
         3.2. М од ифицируйт е операт оры кл ас с ов Rational и Complex т аким
образ ом , чтобы в с юд у, гд е э тов оз м ожно, они д опус кал и с ов м ес т ное ис -
пол ь з ов ание в арифм ет ичес кихв ы раженияхрационал ь ны хи ком пл екс -
ны хчис ел .
         3.3. Попробуйт е с оз д ат ь обобщенны й ал горит м прив ед ения м ат -
рицы к с т упенчатом у в ид у. Опред ел ит е, какихм етод ов кл ас с а Number не
хв ат ает д л я его реал из ации, и д оработ айт е с оот в ет с т в ующим образ ом
кл ас с ы Rational, Complex и PAryFraction.




                                         55