ВУЗ:
Составители:
Рубрика:
25
Пример 2.4. Интерфейс класса Rational.
Rational = class // рациональное число
private // закрытые члены класса
num: Integer; // числитель
den: Integer; // знаменатель
protected // защищенные члены класса
procedure Normalize; // Нормализовать
procedure Reduce; // Сократить
public // открытые члены класса
function GetNum: Integer; // Вернуть значение поля num
function GetDen: Integer; // Вернуть значение поля den
procedure SetNum(value:Integer); // Установить значение num
procedure SetDen(value:Integer); // Установить значение den
function Plus(r:Rational): Rational; // Плюс
function Minus(r:Rational): Rational; // Минус
function Dot(r:Rational): Rational; // Точка
function Slash(r:Rational): Rational; // Косая черта
procedure Add(r:Rational); // Прибавить
procedure Subtract(r:Rational); // Вычесть
procedure MultiplyBy(r:Rational); // УмножитьНа
procedure DivideBy(r:Rational); // РазделитьНа
end;
Итак, класс Rational фактически объединил в себе все члены м о-
дуля из § 1.1. При этом количество параметров подпрограмм уменьш и-
лось на ед иницу: первый аргумент теперь передается им автоматически.
Полученные в результате объявления бинарных операций выглядят н е -
сколько странно, однако в програм ме их вызов будет иметь более есте-
ственный вид .
В соответствии с общей идеей сокрытия реализации поля класса
объяв лены закрытыми, а операции, которые можно выполнять над его
объектами — открытыми. Область видимости процедур Normalize и Redu-
ce несколько ув еличена по сравнению с предыдущей версией. Смысл дан-
ного решения станет понятен только после изучения наследования в § 3.1.
Ограничение дос тупа к полям num и den привело к тому, что
пользователь потерял возможность присваивать объектам класса Ratio-
nal конкретные значения и узнавать результат выполнения операций.
Для компенсации этого эффекта в интерфейс класса добавлены методы
Get¼ и Set¼
Н есмотря на то, что указанные методы предполагается использо-
вать для непосредственного обращения к полям , данный шаг почти не
уменьшает абстрактности типа.
Пример 2.4. И нт ерфейс кл ас с а Rational.
Rational = class // рациональное число
private // закрытые члены класса
num: Integer; // числитель
den: Integer; // знаменатель
protected // защищенные члены класса
procedure Normalize; // Нормализовать
procedure Reduce; // Сократить
public // открытые члены класса
function GetNum: Integer; // Вернуть значение поля num
function GetDen: Integer; // Вернуть значение поля den
procedure SetNum(value:Integer); // Установить значение num
procedure SetDen(value:Integer); // Установить значение den
function Plus(r:Rational): Rational; // Плюс
function Minus(r:Rational): Rational; // Минус
function Dot(r:Rational): Rational; // Точка
function Slash(r:Rational): Rational; // Косая черта
procedure Add(r:Rational); // Прибавить
procedure Subtract(r:Rational); // Вычесть
procedure MultiplyBy(r:Rational); // УмножитьНа
procedure DivideBy(r:Rational); // РазделитьНа
end;
И т ак, кл ас с Rational факт ичес ки объед инил в с ебе в с е чл ены м о-
д ул я из § 1.1. При э том кол ичес т в опарам ет ров под програм м ум ень ш и-
л ос ь на ед иницу: перв ы й аргум ент т еперь перед ает с я им ав том ат ичес ки.
Пол ученны е в рез ул ь т ат е объяв л ения бинарны хопераций в ы гл яд ят не-
с кол ь кос т ранно, од нако в програм м е ихв ы з ов буд ет им ет ь бол ее ес т е-
с т в енны й в ид .
В с оотв ет с т в ии с общей ид еей с окры т ия реал из ации пол я кл ас с а
объяв л ены з акры ты м и, а операции, которы е м ожно в ы пол нять над его
объект ам и — от кры ты м и. Обл ас ть в ид им ос ти процед ур Normalize и Redu-
ce нес кол ь коув ел ичена пос рав нению с пред ы д ущей в ерс ией. См ы с л д ан-
ногореш енияс т анет понятен тол ь копос л е из учения нас л ед ов анияв § 3.1.
Ограничение д ос т упа к пол ям num и den прив ел о к том у, что
пол ь з ов ат ел ь пот ерял в оз м ожнос т ь прис в аив ат ь объект ам кл ас с а Ratio-
nal конкрет ны е з начения и уз нав ат ь рез ул ьт ат в ы пол нения операций.
Дл я ком пенс ации э тогоэ ффект а в инт ерфейс кл ас с а д обав л ены м етод ы
Get¼ и Set¼
Н ес м от ря на то, чтоуказ анны е м етод ы пред пол агает с я ис пол ь з о-
в ат ь д л я непос ред с т в енного обращения к пол ям , д анны й ш аг почт и не
ум ень ш ает абс т ракт нос т и т ипа.
25
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »
