Re: C or C++?
* Phlip:
... OO _should_ be defined so its
root principle is polymorphism, but the term OO is too abused for
WikiPedia to arbitrate any consensus.
One Robert C Martin says it best (IIRC): "Structured programming is
discipline imposed upon direct transfer of control flow. OO
programming is discipline imposed upon indirect transfer of control
flow."
My simple definition of object-oriented versus routine-oriented
(procedural, functional decomposition) is mainly based on how knowledge
about and control of the system is distributed in the system:
Routine-oriented: Object-oriented:
* Routines have knowledge of * Objects (or classes) have
relevant objects (or classes) knowledge of relevant routines
and of other routines. and of other objects/classes.
* Centralized/hierarchical * Distributed/local execution
execution flow control; flow control; cooperative.
commander/subject-oriented.
Of course there are umpteen shades of system architecture in between and
besides, for example routines communicating via a common "blackboard".
But in practice they aren't much used. And I think that's because to do
something one needs to have the necessary knowledge: by deciding on
knowledge distribution, responsibility distribution is implicitly also
decided, and vice versa; it hangs together.
By this operational, knowledge-distribution based definition, the STL
parts of the standard library are mainly routine-oriented.
Further distinctions are IMHO not very relevant, because more selective
terms cannot be used in general to convey meaning (they can if they're
defined, of course).
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?