Re: Entity and Identity

From: David BL <davidbl_at_iinet.net.au>
Date: Tue, 21 Jul 2009 03:07:48 -0700 (PDT)
Message-ID: <f806f72e-b25c-474d-b403-3cda6fb09304_at_v23g2000pro.googlegroups.com>


On Jul 20, 11:51 pm, "Walter Mitty" <wami..._at_verizon.net> wrote:

> Anyway, my view of identity (or of identification, if you prefer) is that an
> object's state is all we have to go on as the basis for identification. In
> particular, an object's location (as specified by a pointer) or its
> trajectory (a history of pointers over time) are unavailable for purposes of
> identification. This view of identity fits pretty comfortably into the
> relional model, but it runs afoul of object oriented thinking at least two
> important ways. Frst, if an object can conceal part of its state
> (encapsulation), then it necessarily can conceal some of what needs to be
> known to identify it. Second, if two objects are identical in state, then
> they are the same object, even if they differ in location (at the same point
> in time). I'll call this the "Doppelganger effect".

I find that confusing because it's not clear when you're talking about your view of identity versus the OO one.

In OO, object identity is usually regarded as determined by object location and is independent of object state. That of course is very different to your first sentence above where you say you prefer to use the object's state as the basis for identification.

However in the context of composing complex state machines out of simpler ones it is entirely appropriate to identify state machines independently of their current state. More to the point it wouldn't make sense to do otherwise. For example two stack objects (i.e. simple state machines that support push and pop operations) used for entirely different purposes within a containing state machine may occasionally have the same state. It wouldn't make sense to say there is only one stack object whenever that happens. In fact the containing state machine will normally specify exactly which stack object a given operation is to be performed on. That wouldn't be feasible if object identity was determined by state not location.

I find it hard to see how one could define "object" such that object identity is determined by state not location. You appear to be thinking about eternal, abstract mathematical values, but it doesn't make much sense to say that values have state (because that suggests a value can change) or location (as though a value exists in time and space). Received on Tue Jul 21 2009 - 12:07:48 CEST

Original text of this message