\section{Conclusions}

We have explained and motivated the Law of Demeter and its benefits
for several languages which support \oop. We succeeded in giving 
a qualitative assessment of the benefits of the Law in terms 
of programming complexity and program maintenance.

The Law has many other benefits which cannot be easily quantified.
In our teaching of \oop\ since spring 1986 
to over 300 students and the teaching of the Law since 
fall 1987
we
made the following observations:

\begin{itemize}
\item
The Law serves as an excellent tool to spot many bad designs.
After a sensible
transformation to good style (satisfying the Law), the programs become usually cleaner.

\item
Some students write Lisp Flavors programs which are 400 lines long, without
knowing the Law, but without violating it.
One reason for this is that we automatically generate an application
skeleton program from the class dictionary.
This skeleton program satisfies the Law and serves as the initial sketch
of the application software and is modified by the programmer for the needs
of the application \cite{lieber-riel:oop}.
The application skeleton, which is an object-traverser, serves as a useful
example of a program which satisfies the Law.

\item
Transformation to good style sometimes reduces the size of the program
by factoring the code in a better way.

\item
Clever transformation to good style sometimes reduces the coupling
(with respect to call/return links) between classes.

\item
The Law is easy to teach and the students easily learn to transform programs 
to good style. 
The ramifications of the Law, however, are subtle and you only realize
the Law's benefits when you apply it to your own programs.  
\end{itemize}
