CS 4448 - Spring 1998
Object-Oriented Programming and Design
Talk 6.2.2
by
Adam Patacchiola
Summary of Eiffel Discussion
- Eiffel is more than just another OO language.
- It is a complete development environment, which includes tools for:
- Analysis
- Design
- Implementation
- Why is eiffel so great?
- It uses a simple, powerful language and method.
- It is seamless, providing a single thread throughout the software lifecycle.
- Designed to be completely OO from the ground up.
- Allows elements of different languages (such as C or C++) to be used together.
- Very reliable due to unique Design by Contract feature.
- Eiffel is available for a variety of platforms including:
- Windows (NT,95)
- Unix
- Solaris
- SunOS
- HP 9000
- IBM AIX
- Linux
- Unixware
- Silicon Graphics
-
Data General
-
Fujitsu
-
DEC OSF/1
-
etc.
-
VMS
-
Source code is compatible between platforms.
-
Eiffel can be used with existing software.
-
Possesses sophisticated C/C++ interface which supports:
-
Calling C functions from Eiffel
-
Accessing C++ classes and components from Eiffel.
-
Accessing Eiffel mechanisms from C or C++ through Cecil library (C-Eiffel
Call-In Library)
-
Automatically produdig a "wrapper" Eiffel class from a C++ class.
-
Similar in speed to C and Fortran, and better in some cases.
-
Uses special "Melting Ice" compilation technology.
-
Combines compilation with bytecode interpretation to generate efficient
code while allowing for fast recompiles to test new implementation changes.
-
Final version of code translated into C to allow for optimizations and
permitting excellent performance.
-
Eiffel written in itself.
-
Provides lots of libraries which include:
-
Graphical libraries for:
-
Relational database library.
-
Math, Data Structures, Web, Internet, etc. Libraries.
-
Designed from day one to provide excellent reuse of code.
-
Includes unique Design by Contract feature.
-
Built in reliability mechanism called assestions, directly enforced through
class:
-
Invariants
-
Preconditions
-
Postconditions
-
For example, a precondition on a file opening routine may express that
the file must be readable.
-
Very powerful mechanism to ensure correctness of program.
-
Build software together with the arguments that justify it's correctness.
-
Can select different levels of assertion checking for each class.
-
Allows for easy documentation of classes through automatically generated
short form which hides the implementation but shows the interface and assertions.
-
Supports inheritance and clean mulitple inheritance.
-
Renaming mechanism to eliminated name clashes.
-
Selection facility to remove ambiguities resulting from multiple redeclarations.
-
Statically typed
-
Ensures errors caught at compile time, not run time.
-
Dynamically bound
-
Guarantees that the right version of an operation will always be applied
depending on the target object.
Copyright © University of Colorado. All rights reserved.
Revised: February 23, 1998