Robert Klemme wrote:

> Funny that you should mention Eiffel.

Not if you know my history. I had the very great pleasure of working
with Bertrand about ten years ago on modifications to the Eiffel
language.

> Betrand Meyer is one of the guys
> who actively advocate implementation inheritance - and that's why you
> can create subclasses of superclasses which do not follow the general
> "is a" contract (i.e. are no supertypes of the super class's type).  You
> can make methods private (by changing their export status) for example
> and thusly change the public interface (and the type).

Only within the rules of the language, which are implemented by the
compiler.

It was effectively 'system conformance' that brought the language to
its knees. It was too complex a problem to solve. That and excessive
rigidity.

The idea though was correct. You need flexible shorthand, but within a
set of rules. Eiffel tried to implement that in the compiler. Other
static languages tried to duck the issue, pushing the flexibility out
into XML files.

The solution however is straightforward. You don't have a static
compiler implementing the rules within the language. You use test and
behaviour driven development and implement a ''domain specific
compiler' that implements the rules for your system with a dynamic
language. Some of those tests should be good computer science (don't
break encapsulation, inherited classes should have contracts that
conform to one another), and others should be the business rules
(moving money between accounts should be atomic).

One you have the idea of a 'domain specific compiler', then interface
inheritance is no longer
needed for correct behaviour. That becomes the job of the tests.
Inheritance then becomes a nifty shorthand that helps implement the
Don't Repeat Yourself principle amongst closely related classes.

> Another side note: for everyone interested in concepts of object
> orientation OOSC is a very valuable read.  Bertrand Meyer covered all
> the concepts involved and he is very good at analyzing and separating
> out concepts.  I always enjoy reading and rereading his book.

Bertrand is an excellent writer, and an even better speaker. OOSC is
well worth reading, and Eiffel is worth studying for its elegance and
its wonderous flaws.

NeilW