Основы объектно-ориентированного программирования

         

Не просто коллекция функций


Как отмечалось в лекции про АТД, они включают четыре элемента:

  • имя типа, возможно с родовым параметром (раздел TYPES);
  • список функций с их сигнатурами (раздел FUNCTIONS);
  • аксиомы, выражающие свойства результатов функций (раздел AXIOMS);
  • ограничения применимости функций (раздел PRECONDITIONS).

При поверхностном применении АТД часто опускают две последние части. Во многом, это лишает данный подход привлекательности, поскольку предусловия и аксиомы выражают семантические свойства функций. Если их опустить и просто рассматривать стек как инкапсуляцию операций put, remove и других, то преимущества от скрытия информации останутся, но это все. Понятие стека становится пустой оболочкой без семантики, кроме той, что остается в именах функций. (В этой книге имена функций менее информативны по причине согласованности и повторного использования, - мы сознательно выбрали общие имена - put, remove, item, а не те, которые применяются обычно для стеков - push, pop, top).

Этот риск потери семантики переносится на программирование: программы, реализующие операции соответствующего АТД, в принципе могут выполнять нечто отличное от задуманного. Утверждения предотвращают этот риск, возвращая семантику классу.



Содержание раздела