Проверка эквивалентности

Проверка эквивалентности

Семантика операций, проверяющих эквивалентность (= и /=) должна быть совместимой с семантикой присваивания. Наряду с операцией = можно использовать и equal. Какую из этих операций следует применять, зависит от обстоятельств.

[x]. (E1) Если x и y - ссылки, их можно тестировать как на ссылочную эквивалентность, так и на объектную эквивалентность при условии, что ссылки не void. Мы определили операцию x = y, как обозначающую ссылочную эквивалентность в этом случае. Функция equal, введенная для проверки объектной эквивалентности, дополнена и применима, когда x или y - void.

[x]. (E2) Если x и y - развернутого типа, единственный смысл имеет объектное сравнение.

[x]. (E3) Если x - ссылка, y - развернутого типа, объектное сравнение - единственно возможный смысл операции и в данном случае. Сравнение расширяется, допуская случай, когда x - void, возвращая значение false в этой ситуации, поскольку y не может быть void.

Этот анализ дает желаемую интерпретацию равенства = во всех случаях. Для объектного сравнения всегда доступна функция equal, расширенная на случаи, когда один или оба операнда принимают значение void. Следующая таблица подводит итог семантике сравнения:

Тип цели x Тип источника y
Ссылочный Развернутый
Ссылочный Ссылочное сравнение equal(x,y) объектное сравнение, если x не void, иначе - false
Развернутый equal(x,y) объектное сравнение, если y не void, иначе - false equal(x,y) объектное сравнение

Таблица 8.2.Семантика сравнения x=y

Сравнение таблиц 8.1 и 8.2 показывает совместимость присваивания и операций сравнения в упоминавшемся уже смысле. Напомним, в частности, что equal (x, y) будет истинно после выполнения x := clone (y) или x. copy (y).

Обсуждаемые проблемы возникают во всех языках, включающих ссылки и указатели, таких как Pascal, Ada, Modula-2, C, Lisp и другие. Они особенно актуальны для ОО-языков, в которых все создаваемые пользователем типы являются ссылочными. В дополнение к причинам, объясняемых в разделе обсуждения, в синтаксисе явно не отражается факт представления объектов ссылками, так что следует быть особо внимательными при проверке эквивалентности объектов.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Проверка резюме

Из книги Как найти высокооплачиваемую работу с помощью Internet автора Рудинштейн Марк


Проверка внедрения

Из книги Модель зрелости процессов разработки программного обеспечения автора Паулк Марк

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


7.2.5. Проверка внедрения

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

7.2.5. Проверка внедрения Раздел «Проверка внедрения» обычно содержит ключевые практики, относящиеся к надзору со стороны руководителей проекта и высшего руководства, а также конкретные контрольные мероприятия, проводимые группой обеспечения качества или другими лицами


Проверка внедрения

Из книги Реестр Windows автора Климов Александр

Проверка внедрения Проверка 1 Регулярная проверка высшим руководством выполнения операций по управлению установленными требованиями.Регулярные проверки проводятся высшим руководством для получения своевременной информации о процессе разработки ПО и его понимания


Проверка внедрения

Из книги 33 лучшие программы для ноутбука [Популярный самоучитель] автора Пташинский Владимир

Проверка внедрения Проверка 1 Регулярная проверка высшим руководством выполнения работ по планированию разработки.Регулярные проверки проводятся высшим руководством для получения своевременной информации о производственном процессе и его понимания на


Проверка внедрения

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Проверка внедрения Проверка 1 Регулярная проверка высшим руководством выполнения работ по отслеживанию хода проекта и контролю над ним.Регулярные проверки проводятся высшим руководством для получения своевременной информации о производственном процессе и его


Проверка внедрения

Из книги Язык Си - руководство для начинающих автора Прата Стивен

Проверка внедрения Проверка 1 Регулярная проверка высшим руководством выполнения работ по управлению субподрядом.Регулярные проверки проводятся высшим руководством для получения своевременной информации о процессе разработки ПО и его понимания на соответствующем


5.5.2.4. Проверка драйвера

Из книги HTML5 для веб-дизайнеров автора Джереми Кит

5.5.2.4. Проверка драйвера После загрузки убедитесь, что драйвер установлен и используется. Нажмите ‹Alt+F2›, введите system-config-display, перейдите в раскрывшемся окне на вкладку Оборудование и щелкните на кнопке Настроить напротив строки с идентификацией видеокарты. В


Проверка диска

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

Проверка диска Изменение времени ожиданияПри загрузке Windows после неправильного выключения запускается проверка дисков. При этом пишется что-то вроде "Через 10 секунд начну проверять...". Чтобы уменьшить время ожидания надо в разделе HKLMSYSTEMCurrentControlSetControlSession Managerсоздать или


Проверка правописания

Из книги Секреты приложений Google автора Балуев Денис

Проверка правописания Несмотря на совсем крошечный объем, программа RoughDraft содержит собственный словарь для проверки правописания. К сожалению, тестируемый нами образец не содержал русского словаря (возможно, в дальнейшем словарь программы будет им дополнен). Однако


Форма операций клонирования и эквивалентности

Из книги автора

Форма операций клонирования и эквивалентности Форма вызова подпрограмм clone и equal является стилевой особенностью, которая может вызвать удивление. На первый взгляд нотация:clone (x)equal (x, y)выглядит не слишком объектно-ориентированной. Догматичное следование принципу


Проверка

Из книги автора

Проверка Инструкция проверки рассматривалась при обсуждении утверждений (лекция 11). Она говорит, что определенные утверждения должны удовлетворяться в определенных точках:checkassertion -- Одно или больше


Проверка

Из книги автора

Проверка      Так ли уж правильны наши рассуждения? Давайте проверим нашу функцию на учебной программе:/* проверка функции getint( )*/#define STOP - 1#define NONUM 1#define YESNUM 0main( ){int num, status;printf(" Программа прекращает считывание чисел, если встречает EOF. " );while((status = getint(&num)) != STOP)if(status = =


1.5. Проверка на совместимость

Из книги автора

1.5. Проверка на совместимость Перед установкой Windows 7 очень полезно сделать предварительную оценку того, справится ли компьютер с новой системой или нет. Кроме того, не забывайте, что подключенные и отлично работающие в данный момент внешние устройства совсем не


Проверка

Из книги автора

Проверка Установка цветов в соответствии с правилами может здорово помочь при проверке данных на этапе ввода. Например, аварийным красным будут выделяться значения, явно выходящие за рамки указанного диапазона, или подсвечиваться желтым «подозрительные» слова и цифры.