thoughts on the typesystem
Laurent Martelli
martelli@iie.cnam.fr
27 Apr 1999 07:17:42 +0200
>>>>> "Tom" == Tom Novelli <tcn@clarityconnect.com> writes:
Tom> Tril,
Tom> Personally, the idea of a type/class system is pretty alien to
Tom> me. My world consists of only 'objects'. Some 'objects' are
Tom> very concrete: pen, pencil, keyboard, phone... Others are more
Tom> vague (abstract): writing implement, thing, idea, Tunes :),
Tom> letter, song... All these 'objects' relate to one another in
Tom> different ways. Who needs types when we have _relations_? We
Tom> can say "a pencil _is_ a writing implement" or "a pen _is like_
Tom> a pencil" or "2 _is not_ a letter". As far as I know, that's
Tom> how I represent things in my head, and that's how other people
Tom> do it too. Does anyone here do it differently?
I think that we type objects when we use them. You should probably
read articles by Liskov which try to understand inheritance in a
behavioural manner (I don't have pointers here, sorry). When you use a
bed to sleep, one could say that you are using it's bed interface. But
when you are just sitting on it, you are using it's seat interface. So
it all depends on the context, ie "on the run time use".
I've had a thought about a data model based entirely on relations
between constant objects. Object would have no field or properties,
just an identity that cannot change. A relation between several
objects is on fact embodied by an object that links those objects
together.
Link_A_B <------ Marriage
| |
| |
A <---+ +--> B
Links would be belong to a relation object, and when you want to
know which object is associated with A for a given relation, you would
ask the relation object. In my exemple, if you want to know who is A
married with, you ask `Marriage.GetAssociatedObjects(A)', and it would
return B. Instead of having a name property in A, it would be linked
to a string object by a Name relation.
If we give a value in [0,1] to links, it would allow fuzzy queries.
Laurent