Based on my own observations, I would like to define a class as:
"A set of Objects/Entities percieved to have certain similar
properties."
In this definition there is no notion of hierarchy because that's the
way it is in real life. A square is a rhombus, a rhombus is a
parallelogram. A square is also a rectangle, which is not a rhombus,
but is a parallelogram. So we would have difficulty defining one
"superclass" for square. Then of course a parallelogram could turn
out to be a rhombus on resizing, a rectangle could become auitable to
join the group of squares on resizing, etc. And I think this is just
the case in real world that the classES an object belongs to can also
be dynamic. And when you look at the relational model, well, it
requires you to choose a type for each item of data.
What if an object could be a member of any arbitrary set of classes?
What if this mapping of object to class was totally dynamic? It
reminds me of interfaces in Java programming where an object can
export an infinite number of interfaces, only that of course all this
is dome at compile-time. Things could be come more
complicat....err... interesting!