Интерфейс вместо представления данных
Конструкторы и селекторы позволяют программе использовать рациональные числа, не распространяя знание об их представлении в виде пар на каждую операцию.
От каких изменений защищает барьер абстракции?
- Отделение абстрактного значения от его представления
- Использование конструкторов и селекторов как единственной границы
- Распознавание кода, проникающего за барьер абстракции
make-rat создает значение рационального числа. numer и denom выбирают его части. add-rat зависит от этих трех операций, а не от car, cdr или порядка хранения полей в паре.
Пара служит полезным механизмом реализации, тогда как общедоступной идеей остается интерфейс. Сохранение знаний о представлении за стабильным интерфейсом делает последующие изменения локальными, а не распространяющимися по всей программе.
- Вывод
- —
- Значение
- —
- Диагностика
- —
Первая программа возвращает точное значение рационального числа 5/6.
Проследите за вызовами make-rat, numer и denom. add-rat не требует прямых операций над парами, поэтому процесс вычисления не раскрывает порядок хранения. Трасса выполнения точно фиксирует прохождение барьера абстракции в выбранном запуске.
Измените программу и сравните результат.
Сохраните знаменатель первым в make-rat. Измените только numer и denom, затем убедитесь, что add-rat по-прежнему возвращает 5/6.
Показать подсказку
Если приходится изменять add-rat, значит, знание о представлении вышло за пределы установленной границы.