Subtypes and Supertypes Setting the Scene

THE_псевдопеременные - это всего лишь сокращенная форма


Теперь заметим, что THE_псевдопеременные не являются логически необходимыми! Рассмотрим "обновляющее" присваивание из первого из трех примеров, приведенных в предыдущем разделе:

THE_C ( TEMP ) : = CEL ;

Это присваивание, в котором используется псевдопеременная, логически эквивалентно следующем, где псевдопеременная не используется:

TEMP : = CELSIUS ( CEL ) ; /* вызывается селектор CELSIUS */

Аналогично, обновляющее присваивание второго примера было следующим:

THE_X ( P ) : = Z ;

Вот логический эквивалент без использования псевдопеременной:

P : = POINT ( Z, THE_Y ( P ) ) ; /* вызывается селектор POINT */

Третий пример:

THE_X ( THE_BEGIN ( LS ) ) : = Z ;

Логический эквивалент:

LS : = LINESEG /* вызывается селектор LINESEG */ ( POINT ( Z, THE_Y ( THE_BEGIN ( LS ) ), THE_END ( LS ) ) ;

Другими словами, псевдопеременные сами по себе не требуются строго, чтобы поддерживать обсуждаемый вид покомпонентных обновлений (где под "компонентом" я, конечно, понимаю компонент возможного представления). Однако подход всевдопеременных кажется более интуитивно привлекательным, чем его альтернатива (для которой псевдопеременные можно считать сокращенной записью); более того, этот подход потенциально даже более привлекателен -- хотя по-прежнему не необходим логически) -- если поддерживается наследование типов, что мы увидем в следующих выпусках. Он также обеспечивает более высокую степень невосприимчивости к изменению синтаксиса соответствующего селектора. И такой подход может более эффективно работать -- хотя, конечно, эффективности не имеет ничего общего с моделью.



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