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

Стандартные имена


Вы уже заметили многократное использование во всей книге нескольких базисных имен, таких как put и item. Они являются важной частью метода.

Большинству классов необходимы компоненты, представляющие операции нескольких базисных видов: вставка, замена, доступ к элементам структуры. Вместо придумывания специальных имен для этих и подобных операций в каждом классе, предпочтительно повсюду применять стандартную терминологию.

Вот каковы основные стандартные имена. Начнем с процедур создания: имя make рекомендуется для наиболее общей процедуры создания и имена вида make_some_qualification, например, make_polar и make_cartesian для классов POINT или COMPLEX.

Для команд наиболее общие имена приведены в таблице:

Таблица 8.1. Стандартные имена командКомандаДействие
extendДобавить элемент
replaceЗаменить элемент
forceПодобна команде put, но может работать для большего числа случаев. Например для массивов put имеет предусловие, требующее, чтобы индекс не выходил за границы, в то время как force не имеет предусловий и допускает выход за границы
removeУдаляет (не специфицированный) элемент
pruneУдаляет специфицированный элемент
wipe_outУдаляет все элементы

Для небулевых запросов (атрибутов или функций)

Таблица 8.2. Стандартные имена для не булевых запросов ЗапросДействие
itemБазисный запрос для получения элемента: в классе ARRAY - элемент с заданным индексом; STACK - элемент вершины стека; QUEUE - "старейший" элемент и так далее
infix "@"Синоним item в некоторых случаях, например в классе ARRAY
countЧисло используемых элементов структуры
capacityФизический размер, распределенный для ограниченной структуры, измеряемый числом потенциальных элементов. Инвариант должен включать 0<count and count <= capacity

Для булевых запросов стандартными именами являются:

Таблица 8.3. Стандартные имена булевых запросовЗапросДействие
emptyСодержит ли структура элементы?
fullЗаполнена ли структура ограниченной емкости элементами? Обычно эквивалент count = capacity
hasПрисутствует ли заданный элемент в структуре? (Базисный тест проверки членства)
extendibleМожно ли добавить элемент? (Может служить предусловием для extend)
prunableМожно ли удалить элемент? (Может служить предусловием для remove и prune)
readableДоступен ли элемент? (Может служить предусловием для remove и item)
writableМожно ли изменить элемент? (Может служить предусловием для extend, replace, put и др.)


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