Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>>http://en.wikipedia.org/wiki/Identity_(object-oriented_programming)#Consequences_of_identity
S>>If the references do not compare equal, then it's not necessarily guaranteed that the identity of the objects behind those references is different.
S>>The object identity of two objects of the same type is the same, if every change to either object is also a change to the other object.
S>>Оба процитированных следствия подразумевают возможность существования различных объектов с same identity.
S>Нет. Первый фрагмент просто говорит о том, что бывают различные ссылки на один и тот же объект — читайте внимательно.
я считаю что там написано не об этом (см. ниже).
S>Классический пример — указатели в сегментированной модели памяти, используемые в качестве ссылок. Там можно иметь два битово различных указателя в одно и то же место.
S>В большинстве практических случаев ссылки можно использовать в качестве критерия идентичности.
S>Второй фрагмент говорит о том, что все изменения, применяемые к "одному объекту" также отражаются и на "другом". С точки зрения реализации, это может применяться для, к примеру, работы в распределённой среде. С точки зрения математики, все эти "объекты" — один и тот же объект.
Это различные объекты с same identity. Паттерн monostate работает и без распределенной среды.
Здесь описаны (но не определены формально) два понятия идентичности
http://c2.com/cgi/wiki?ObjectIdentity, логическая и физическая.
There are two varieties of identity. There is internal identity, and there is external identity. Internal identity is logical identity. External identity is physical identity. Internal identity is independent of context. External identity is not.
A data tuple has a logical identity according to its value(s). We can copy it to different places. We can duplicate it as many times as we like. Yet at all times we can identify it, by its value. Since we identify it by its value, we can say that this identity is internal. Furthermore we can say that this identity is logical. It is independent of the physical context or representation. If it is duplicated then it is still the same object.
В вики описана именно логическая идентичность, я уверен в этом. Во всяком случае с точки зрения логической идентичности, описанное в вики не противоречит моему пониманию вики. А с точки зрения физической идентичности приходится в концептуальную модель вводить неравные ссылки на один объект, что бы написанное в вики было похоже на правду.
В отношении классических изменяемых объектов (не расшаривающих состояние) понятия логической и физической идентичности эквивалентны. Т.е. из одной вытекает другая и наоборот. Возможно по этой причине варианты идентичности не разделяют.
С неизменяемыми объектами логическая эквивалентность шире физической. Их невозможно отличить, не сравнивая физическое расположение или ссылки (которые не являются атрибутом объекта). Потому следует рассматривать изменяемые объекты и их идентичность как частный случай идентичности.