Jump to content

Eiffel (programming language): Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m guarentees->guarantees
 
The_ansible (talk)
Added link to SmallEiffel, edit on multiple inheritance, fix links, move DBC stuff ot own article, still needs more work
Line 7: Line 7:




The goal of the language, libraries, and programing methods is to create reliable, reusable software modules. It supports [[multiple inheritance]], [[genericity]], [[polymorphism]], and [[encapsulation]]. It's most important contribution to [[software engineering]] is [[Design by Contract]], where [[assertions]], [[preconditions]], and [[postconditions]] are used to assist in documenting program correctness. There are free versions available, check a web directory for links.
The goal of the language, libraries, and programing methods is to create reliable, reusable software modules. It supports [[multiple inheritance]], [[genericity]], [[polymorphism]], and [[encapsulation]]. It's most important contribution to [[software engineering]] is [[Design by Contract]], where [[assertions]], [[precondition|preconditions]], [[postcondition|postconditions]], and [[class invariant|class invariants]] are used to assist in documenting program correctness.






Eiffel also offers multiple class inheritance. Many people (such as the designers of [[Java programming language|Java]]) have objections to multiple inheritance. The Eiffel implementation of multiple inheritance overcomes these objections as the result of careful study, proper theory, and mindful implementation. A simplistic treatment of Multiple Inheritance leads to problems. However, by the creation of some straight-forward language rules, multiple inheritance becomes a useful technique in Eiffel programming.
First, Eiffel employs Design by Contract theory and technology. Design by Contract (or DBC) is the concept that


classes have obligations to other classes based upon formalized rules between them. All class relationships are between Client classes and Supplier classes. A Client class is obligated to make calls to Supplier features where the resulting state of the Supplier is not violated by the Client call. Subsequently, the Supplier is obligated to provide a return state and data that does not violate the state requirements of the Client. For instance, a Supplier data buffer may require that data is present in the buffer when a delete feature is called. Subsequently, the Supplier guarantees to the client that when a delete feature finishes its work, the data item will, indeed, be deleted from the buffer. Other Design Contracts are concepts of "Class Invariant". The Class Invariant guarantees (for the local class) that the state of the class will be maintained within specified tolerances at the end of each feature execution.




Eiffel is an excellent implementation of pure OOP theory. The language has formal support for [[abstract data type]]s. In accordance with Self Documentation, a software text should be able to reproduce its design documentation from the text itself. Eiffel accomplishes this by using a formalized implementation of the Abstract Data Type.


Second, Eiffel offers multiple class inheritance. Many people have objections to multiple inheritance. The Eiffel implementation of multiple inheritance overcomes these objections as the result of careful study, proper theory, and mindful implementation. A simplistic treatment of Multiple Inheritance leads to problems. However, by following some simple rules, all of these issues are resolved, and multiple inheritance becomes a useful tool.




Moreover, if you use the Eiffel Studio software development platform, you will discover an environment where software engineering is performed in an object-oriented interface. However, many programmers disliked it because it was far different than user interfaces to other integrated development environments.

Last, Eiffel is an excellent implementation of pure OOP theory. The language has formal support for [[abstract data type]]s. In accordance with Self Documentation, a software text should be able to reproduce its design documentation from the text itself. Eiffel accomplishes this by using a formalized implementation of the Abstract Data Type.



Moreover, if you use the Eiffel Studio software development platform, you will discover an environment where software engineering is performed in an [[object-oriented]] interface.




Line 36: Line 30:


* ''Object Oriented Software Construction, Second Edition'', by Bertrand Meyer, Prentice Hall, 1997, ISBN 0-13-629155-4; contains a very detailed treatment of the beliefs about object-orientation behind Eiffel.
* ''Object Oriented Software Construction, Second Edition'', by Bertrand Meyer, Prentice Hall, 1997, ISBN 0-13-629155-4; contains a very detailed treatment of the beliefs about object-orientation behind Eiffel.

* http://smalleiffel.loria.fr/ --- SmallEiffel is a fairly complete Eiffel compiler, released under the GNU GPL.





Revision as of 00:14, 14 December 2001

Eiffel is a object oriented programming language developed by Bertrand Meyer and his company Interactive Software Engineering.


It is a pure object-oriented computer software language system that closely follows Dr. Meyer's work in Object Oriented Software Construction, Second Edition. Eiffel differs from most popular languages in several ways.


The goal of the language, libraries, and programing methods is to create reliable, reusable software modules. It supports multiple inheritance, genericity, polymorphism, and encapsulation. It's most important contribution to software engineering is Design by Contract, where assertions, preconditions, postconditions, and class invariants are used to assist in documenting program correctness.


Eiffel also offers multiple class inheritance. Many people (such as the designers of Java) have objections to multiple inheritance. The Eiffel implementation of multiple inheritance overcomes these objections as the result of careful study, proper theory, and mindful implementation. A simplistic treatment of Multiple Inheritance leads to problems. However, by the creation of some straight-forward language rules, multiple inheritance becomes a useful technique in Eiffel programming.


Eiffel is an excellent implementation of pure OOP theory. The language has formal support for abstract data types. In accordance with Self Documentation, a software text should be able to reproduce its design documentation from the text itself. Eiffel accomplishes this by using a formalized implementation of the Abstract Data Type.


Moreover, if you use the Eiffel Studio software development platform, you will discover an environment where software engineering is performed in an object-oriented interface. However, many programmers disliked it because it was far different than user interfaces to other integrated development environments.


References:


  • Object Oriented Software Construction, Second Edition, by Bertrand Meyer, Prentice Hall, 1997, ISBN 0-13-629155-4; contains a very detailed treatment of the beliefs about object-orientation behind Eiffel.


/Talk