Terminology

The design of Eiffel also reflects a concern with the software engineering issues involved in the development and maintenance of class libraries. (See also section library-design.) The language is built around a number of keywords, which accounts for an easy to read, albeit somewhat verbose, layout of programs.

The language Eiffel -- keywords

class -- a model for a set of objects
feature -- attribute, function, procedure
export -- interface declaration
inherit -- class inclusion and subtyping (!)
redefine, rename -- \c{to change} inherited features
deferred -- \c{to} postpone \c{the} implementation
require, ensure, invariant -- assertions

slide: Eiffel -- terminology

The keyword class precedes a class definition, which in the terminology of  [Meyer88] may be considered as a model for a collection of objects. The keyword feature precedes the attributes, functions and procedures defined by a class. The keyword export precedes the list of visible features, in other words the interface declaration of the class. The keyword inherit precedes the list of inherited classes, specifying class inclusion and the subtyping relationships. The keywords rename and redefine are used to change inherited features. The keyword deferred may be used to indicate that a feature will be implemented (in the future) in an inherited class, and the keyword obsolete may be used to indicate that a feature will not be supported in a future release. Finally, the keywords require, ensure and invariant indicate assertions that specify respectively the pre- and post-conditions for a (method) feature and the class invariant.