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

С точки зрения клиента


Этот проект обеспечивает простой и элегантный интерфейс реализации связных списков. Операции, такие как "поиск, а затем вставка", используют два последовательных вызова, хотя и без существенной потери эффективности:

l: LINKED_LIST [INTEGER]; m, n: INTEGER ... l.search (m) if not after then l.put_right (n) end

Вызов search (m) передвинет курсор к следующему вхождению m после текущей позиции курсора или after, если таковой нет. (Здесь предполагается, что курсор изначально установлен на первом элементе, если нет, то клиент должен прежде выполнить l.start.)

Для удаления третьего вхождения некоторого элемента клиент выполнит:

l.start; l.search (m); l.search (m); l.search (m) if not after then l.remove end

Для вставки элемента в позицию i:

l.go (i); l.put_left (i)

и так далее. Мы получили простое и ясное использование интерфейса, сделав явным внутреннее состояние, обеспечив клиента подходящими командами и запросами об этом состоянии.



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