I'd like to add what I would call a non-trivial objection to the
casting of a system (or a model of a system) into an OO framework
(be it an OOPL or any other type of OO framework). It is the idea
of infinite divisibility.
A definitive strength of OO is the ability to deal with procedural
structures (whether the chain of dependency is, in fact, procedural
like in Java, C, etc. or whether the chain is functional or even
logical) as if they were more like the "things" we deal with via
our sensory/motor skills. But, this strength backfires when the
"things" being dealt with need to be divisible. And there are
two facets to this objection: 1) objects are not themselves
arbitrarily divisible (i.e. the movement from a coarse system to
a fine system requires a complete redesign of the system). And
2) even when a redesign from coarse to fine is effected, a bottom
turtle will be reached because at the lowest level, systems are rarely
"things" so much as they are "events" or "packets of change" (which,
BTW, are subtlely different from objects in that events don't have
state... they're more like transforms than process&&state). So,
what it comes to, basically, is that there are some kinds of systems,
especially those where the event/object boundary must be crossed or
those where scale continually changes, where objects, though useful,
are not a panacea. And sometimes, if the uses aren't well understood
up front, they can be seen as inhibitive.
glen
-- Glen E. Ropella (505) 424-0448 The Swarm Corporation gepr@swarm.com