Introduction
 
 

 This text was written for a first programming subject in the object-oriented language Eiffel. It assumes no previous computing experience, presents almost every part of the Eiffel language, and shows how to design good, reusable systems.

 The Eiffel language is described in the first half of this text in 13 chapters, divided into three parts. The first part presents the basic concepts and constructs in the language, covering the topics of data flow, control flow, routines, objects, classes, and assertions. The second part describes the common data structures, arrays and lists. The third part covers inheritance and its sub-topics: simple, multiple, and repeated inheritance, plus file storage and generic classes.

 An instruction in the language is presented in the following parts:
1. Look and feel
2. Syntax
3. Mechanism
4. Common errors
5. Example

 The second half of the text presents a case study in 13 parts to show three things. First, the case study for each chapter shows how the topics described in that chapter are implemented in a working system. Second, each part of the case study shows how to design good, reusable Eiffel classes. Third, the case study shows that an Eiffel system is built by adding new code to an existing system; almost no code is re-written when the system is extended from one simple class to 16 interlocking classes.

 A section of the case study is presented in the following parts:
1. Specification.
2. Analysis.
3. Design.
4. Charts: one or more of client, inheritance, and class diagrams.
5. Eiffel code that is new or changed in that section.

 The complete, working code for each part of the case study may be examined and executed in the directory
 /pub/psda/oopie

 The language described in the text is ISE Eiffel version 3.3.7 running under Solaris. Eiffel has a large library of reusable classes, that may be examined in the directory
 /opt/Eiffel3/library

and its sub-directories
 base classes used to build basic Eiffel systems
 lex classes used to build and apply lexical analysers
 parse clases used to build document processing systems
 vision classes used to build graphical interfaces

The base directory contains the directories
 kernel basic Eiffel classes, including files and arrays
 structures other data structures
 support mathematical and other supporting classes

- TOP -