Eiffel is an ISO-standardized object-oriented programming language designed for extensibility, reusability, reliability and programmer productivity.
With roots going back to 1985, Eiffel has development environments available from multiple suppliers. Although less well known than many other languages, Eiffel is used by large projects in various industries (finance, aerospace, health care, games and others) as well as for teaching programming in academia.
The language design is closely connected with the method, based on a set of principles: Design by contract, Command-query separation, Uniform access principle, Single choice principle, Open-closed principle, Option-Operand separation and others.
Eiffel Interviews are getting tough these days as the technology grows faster. To get through the Eiffel interview one needs to update him/herself in a regular manner. Having said that, just before the interview, it is very important to have a quick glance of the reputed Eiffel questions and answers to make yourself comfortable during the interview process. This is where DoAnswers.com helps you in renewing yourself on Eiffel and various other technologies interview preparation.
11. What about graphics?
Eiffel offers a choice of graphical libraries for a variety of application scenarios. For portable developments, EiffelVision and EiffelVision2 are high-level graphical libraries covering user interface objects (windows, dialogs, menus, buttons, dialog boxes etc.) as well as geometrical figures (polygons, circles and the like) that will run on all the supported platforms, adapting in each case to the native look-and-feel. For platform-specific developments, to take advantage of the full set of "controls" or "widgets" available on a particular window system, the platform-specific libraries are available: On Windows, WEL (the Windows Eiffel Library) gives access to essentially all the Windows graphical API, including the most recent controls. A separate page describes how WEL combines the advantages of Windows and Eiffel. An extensive WEL tutorial is available on-line, as well as a general presentation of the design of WEL. On Unix, Linux and VMS we provide GEL, the GTK Eiffel Library. Using EiffelVision and EiffelVision2 or one of the platform-specific libraries is not an exclusive proposition: you can mix-and-match the two levels, using EiffelVision for its abstract capabilities, and for example, WEL to take advantage of specific Windows controls. In fact, EiffelVision internally relies, for its implementation on each platform, on the corresponding platform-specific library, so you already have WEL if you are using EiffelVision on Windows.
12. What about operating systems then? Where does Eiffel run?
Eiffel is very portable, a feature that developers love. It runs just about everywhere, including Windows (classic and .NET), Unix, Linux, VMS, and Mac OS X. This allows developers the flexibility to maintain their legacy code while developing new code on a completely different operating system.
13. What about relational databases?
Eiffel Software provides the EiffelStore library for object-relational interfaces, with mappings available for ODBC (giving access to dozens of database systems on Windows), Oracle, Sybase and Ingres. Eiffel has also been interfaced with such object-oriented databases as Matisse, Versant, and O2.
14. What does an Eiffel program look like?
Actually we like to talk about "systems" -- a set of classes -- each covering a "data abstraction" -- a certain set of objects from the external world or from the implementation. For example, you may have classes AIRPORT, RADAR and RUNWAY in a flight control system, classes CUSTOMER and ACCOUNT in a banking system. In any system you can also have general-purpose classes such as LINKED_LIST and HASH_TABLE, although you would not normally write them but reuse them from a library such as EiffelBase.
15. What is concurrent engineering?
Concurrent engineering allows the use of EiffelStudio to automatically generate BON diagrams to see and interact with the overall design of your system as you engineer it.
16. What is Eiffel?
Actually, in this case it is short for "The Eiffel Development FrameworkTM" - a comprehensive approach to software development. It consists of the Eiffel methodology for the beginning-to-end construction of robust, reusable software; the Eiffel language, which supports the methodology; and EiffelStudioTM, the environment that contains the Eiffel compiler and the complete set of productivity tools which make the development environment. The individual parts fit together with and support each other's function in the pursuit of making the best software possible. No other software development system has been designed to work in such a simple and powerful way. The results of this approach and design are staggering. Productivity increases. Cost of ownership goes down. Quality levels go up. Eiffel takes companies' software to a level of efficiency and reliability far above the capabilities of other languages and development tools.
17. What is genericity?
Genericity is the support for type-parameterized class modules in the software text. In object-oriented circles these are known as generic classes. Such classes use generic parameters in the software text, which are then substituted for formal parameters when the class is actually used by a client class. The benefits of such a method is most fully realized in classes when you consider container objects such as arrays and lists. These types are designed to hold a number of arbitrary elements. Ideally, these contained elements should be able to be any type of element, from books to customers to any type available in your system. Otherwise, you would have to write a separate class definition for every type of element you wish to store, a painful and time consuming activity. Genericity solves this problem by assuming a generic type, which will be substituted by the actual type at runtime.
18. What is it with openEHR and Eiffel?
Many people have noticed that openEHR uses the Eiffel language, and wonder whether openEHR needs to be written in Eiffel, or whether Eiffel is in some way special in openEHR. By way of background, Eiffel is an openly defined language, has its own Non-profit International Consortium for Eiffel (an international user group) and ECMA formal standardisation process. It has a number of commercial implementations (ISE, Object Tools), an official open source compiler ("SmartEiffel") and large numbers of libraries.Eiffel is used in openEHR as its primary CASE tool. This may sound a little strange - why use a programming language as a CASE tool; how? In truth, Eiffel is a little bit different from other programming languages. Firstly, it is a fully formal, fully object-oriented language, the only production language apart from C++ which implements all the semantics of UML (in particular, genericity (i.e. 'template' classes), multiple inheritance, polymorphism, selective export). However, unlike C++, it has no connection with implementation details, such as memory structures. In addition, unlike any other production language available, it implements the equivalent of OCL, the OMG Object Constraint Language. "Equivalent" because Eiffel did this 15 years ago, long before OCL came into existence. The key features of OCL which are relevant to openEHR are called "assertions", which include function pre-conditions, post-conditions, and class assertions. These statements allow us to define the correctness conditions of a class model. These features allow it to be used as a language for expressing formal class models, of the kind used in the specifications written by openEHR, and to completely validate them, including assertions.
19. What is Melting Ice Technology?
Eiffel Software's unique incremental compilation technology which combines compilation, generating optimally efficient code, with bytecode interpretation, for a fast turnaround after a change.
20. What is multiple inheritance?
Multiple inheritance is an mechanism whereby a software unit, known in Eiffel as a class, may inherit the features of many other classes. Most modern programming languages support single inheritance whereby a class can inherit from only one other class, but multiple inheritance offers the developer unrestricted inheritance through the ability to inherit as many as is desired. Using multiple inheritance brings the following advantages: improved reuse, better overall system design and architecture, greater flexibility, easier maintainability and debugging.