130 likes | 286 Views
EIFFEL. SWE 6743 MOHAMED HASSAN Language Research Project. Brief History. 1985: Bertrand Meyer and Jean Marc Nerson Development of Eiffel Language. 1986: First Eiffel compiler. Publication of “Eiffel The Language” by Bertrand Meyer.
E N D
EIFFEL SWE 6743 MOHAMED HASSAN Language Research Project
Brief History • 1985: Bertrand Meyer and Jean Marc Nerson Development of Eiffel Language. • 1986: First Eiffel compiler. • Publication of “Eiffel The Language” by Bertrand Meyer. • 1997: Publication of Object-Oriented Software Construction (OOSPLA).
Inheritance • Combination and specialization of existing classes rather than from scratch. • Multiples / Repeated inheritance • Example: class C inherit A rename x as x1, y as y1 end B rename x as x2, y as y2 end
Reusability • Class or component reuse through Genericity = Parametric classes • Ex: LIST [G] • G is formal generic parameter • Actual generic parameter • acc:LIST[int] or LIST[Account] • Deferred classes –implemented in other classes.
Polymorphism • Allows class to redefine features of an inherited class • Example • class RECTANGLE inherit POLYGON redefine perimeter end feature -- Specific features of rectangles, such as: side1: REAL; side2: REAL perimeter: REAL is -- Rectangle-specific version do Result := 2 * (side1 + side2) end
Design By Contract • Uses of assertions within methods by • Method Preconditions / Post conditions are compilibles. Example: class ACCOUNT create withdraw (sum: INTEGER) is -- Withdraw sum from the account. require sum >= 0 sum <= balance - minimum_balance do add (-sum) ensure balance = old balance - sum end
Information hiding • Selective Export (inheritance) • Component reuse, clients only need to know the interface but not how it is implemented.
Message binding • Uses dynamic binding at run-time • Ex: p: POLYGON; r: RECTANGLE ... create p; create r; ... if c then p := r end print (p . perimeter)
Database Support • Support of Matisse db through EiffelMatisse interface • EiffelMysql driver • Eiffel Versant driver
Usability, IDE • Eiffel Studio, SmartEiffel( open source): very intuitive, GUI based IDE. • Libraries: EiffelBase ->data structures • EiffelEnvison: plug-in from VStudio .net • EiffelVision2-> GUI libraries • EiffelNet -> used with .NET platform • EiffelJava -> Java Interface libraries
Cost • Eiffel studio • Windows + .NET: 5,999 $ upgrade( 2,499$) • Linux (fedora): 5,999 $ • Solaris 0n Sparc: 8,999$ • SGI: 8,999$ • Mac OS: 5,999$ • Free evaluation version • Dual licensing: Support purchasing commercial licenses or releasing their application under an Open Source license
Web development • Supported through Eiffel for ASP.NET • With .Net Framework, CGI scripts • Pros: • Reuse, Extensible, Design by contract, pure OO language, robust software design. • Cons: • Expensive IDE for commercial use • Limited resources and tutorials available • Limited support except from Eiffel group