ВУЗ:
Составители:
Рубрика:
44
применять его без пред варительного вызова оператора is следует лишь в
том случае, когда вероя т ность успешного результата достаточно высока.
Все описанные выше средства использует
Пример 3.3. Реализация операций в классе PAryFraction.
procedure PAryFraction.Add(r: Rational);
begin
if (r is PAryFraction) and ((r as PAryFraction).base=self.base)
then inherited Add(r)
{ Если r содержит адрес объекта класса PAryFraction и основание
этого объекта совпадает с текущим, то сложение допустимо и
выполняется посредством старой версии метода. }
else raise Exception.Create('Invalid operation');
{ Иначе возбуждается исключение с сообщением
"Недопустимая операция". }
end;
procedure PAryFraction.DivideBy(r: Rational);
begin
if (r is PAryFraction) and ((r as PAryFraction).base=self.base)
and self.isPowerOfBase(r.GetNum) then inherited DivideBy(r)
{ Дополнительно проверяется, является ли числитель r
степенью основания. }
else raise Exception.Create('Invalid operation');
end;
function PAryFraction.Plus(r: Rational): Rational;
var res: PAryFraction;
begin
if (r is PAryFraction) then
if (r as PAryFraction).base=self.base then begin
res:=PAryFraction.CreateAs(self.GetNum, self.GetDen);
res.base:=self.base;
res.Add(r); // вызов определенного выше метода Add
result:=res;
end
else raise Exception.Create('Invalid operation')
{ Если объект r принадлежит классу PAryFraction и имеет то же
основание, что и текущий, то создается копия текущего объекта,
прим енят ь егобез пред в арит ел ь ногов ы з ов а оператора is с л ед ует л иш ь в
том с л учае, когд а в ероят нос т ь ус пеш ногорез ул ьт ат а д ос т аточнов ы с ока.
Вс е опис анны е в ы ш е с ред с т в а ис пол ь з ует
Пример 3.3. Реал из ация операций в кл ас с е PAryFraction.
procedure PAryFraction.Add(r: Rational);
begin
if (r is PAryFraction) and ((r as PAryFraction).base=self.base)
then inherited Add(r)
{ Если r содержит адрес объекта класса PAryFraction и основание
этого объекта совпадает с текущим, то сложение допустимо и
выполняется посредством старой версии метода. }
else raise Exception.Create('Invalid operation');
{ Иначе возбуждается исключение с сообщением
"Недопустимая операция". }
end;
procedure PAryFraction.DivideBy(r: Rational);
begin
if (r is PAryFraction) and ((r as PAryFraction).base=self.base)
and self.isPowerOfBase(r.GetNum) then inherited DivideBy(r)
{ Дополнительно проверяется, является ли числитель r
степенью основания. }
else raise Exception.Create('Invalid operation');
end;
function PAryFraction.Plus(r: Rational): Rational;
var res: PAryFraction;
begin
if (r is PAryFraction) then
if (r as PAryFraction).base=self.base then begin
res:=PAryFraction.CreateAs(self.GetNum, self.GetDen);
res.base:=self.base;
res.Add(r); // вызов определенного выше метода Add
result:=res;
end
else raise Exception.Create('Invalid operation')
{ Если объект r принадлежит классу PAryFraction и имеет то же
основание, что и текущий, то создается копия текущего объекта,
44
Страницы
- « первая
- ‹ предыдущая
- …
- 42
- 43
- 44
- 45
- 46
- …
- следующая ›
- последняя »
