URL:
http://www.oberon2005.ru/book/aokl1996e.pdf
This book introduces the Demeter Method for developing adaptive object-oriented software.
What is an adaptive program? We give several intuitive explanations in common
terminology.
- An Adaptive program is similar to a genre. According to the Random House Dic-tionary, a genre is a category of artistic endeavor having a particular form, content,
or technique. An adaptive program describes a category of object-oriented programs
that all have a particular form, but the details of the programs are left open. Even
the input objects to the programs are left exible. The artistic metaphor of a genre
carries further: an adaptive program describes how to \"bring the actors on the stage\"
without hardcoding the class structure. Bringing the actors on the stage means assembling
the right objects so that an operation can be called that takes those objects
as arguments.
- An adaptive program, like a multipurpose mechanism, is useful in a set of related
contexts. In some contexts an adaptive program does exactly what is required and in
other contexts it approximates what is required.
- An adaptive program is a family of analogous object-oriented programs. A member
of the family is called an instance of the adaptive program. An instance is selected by
customizing the adaptive program with a specific class structure.
- An adaptive program is like the genes of a fruit-bearing tree. A specific tree is an
instance of the genes in the same way that an object-oriented program is an instance
of an adaptive program. The genes produce similar looking trees, depending on the
environment. In some environments we will get big trees with sweet fruit and in others
only small trees with sour fruit. By analogy, all instances of an adaptive program have
a similar look. They are all built according to the same pattern, but some work better
than others.
- An adaptive program sketches the solution strategy for a class of problems. It is well
known that solving a more general problem is often simpler than solving a specific
one. The solution of the more general problem is reusable in many situations.
The book explains how to grow adaptive software in a programming-language independent
way. Since an object-oriented program is a special case of an adaptive program the
book provides a very elective introduction to object-oriented software development. The adaptive software paradigm proposes a useful way of structuring object-oriented software.