1 / 18

胡轶文 5110379034

Eiffel. 胡轶文 5110379034. 历史与发展. Eiffel 是 由 ISE 公 司 ( Interactive Software Engineering )在 1985 年设计的。最初 ISE 在项目开发中,需要一种能体现现代软件工程学思想、现代的、面向对象的开发环境,但 ISE 认为当时没有这样的工具。因此, ISE 开发了 Eiffel 作为开发产品的内部工 具

Download Presentation

胡轶文 5110379034

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Eiffel 胡轶文 5110379034

  2. 历史与发展 • Eiffel是由ISE公司(Interactive Software Engineering)在1985年设计的。最初ISE在项目开发中,需要一种能体现现代软件工程学思想、现代的、面向对象的开发环境,但ISE认为当时没有这样的工具。因此,ISE开发了Eiffel作为开发产品的内部工具 • 1986年10月,Eiffel 1在OOPSLA(Object-Oriented Programming Systems Language and Applications)大会上一举成名,由此踏上了商业化之路。随后几年中,Eiffel在美国、加拿大、欧洲和远东地区迅速传播,实施了一系列成功的工程项目。同时,学术界也认为Eiffel是教授各种软件概念的理想途径,世界上很多大学都已经采用Eiffel作为主要的教学语言。

  3. Eiffel之父: 伯特兰·迈耶 • 于巴黎综合理工学院取得学士学位,美国史丹佛大学硕士,于法国南锡大学取得博士学位。 • 2001年10月,成为苏黎世联邦理工学院软件工程教授。 • 著作:《面向对象软件构造》(Object-Oriented Software Construction),为面向对象编程的经典作品。

  4. Eiffel的理论基础 • Design By Contract™     Design By Contract™(DBC,按契约设计)几乎是Eiffel方法的标志。对于DBC的直接支持是Eiffel最著名的特性。Bertrand Meyer以数学形式严格证明了DBC的合理性,并且建立了严格而有灵活的契约体系。DBC理论和机制在软件开发的分析、设计、文档、调试、测试甚至项目管理中都扮演着关键角色,这使得Eiffel历来以长于开发高质量软件而著称。 • DBC来源于对人类生活中契约的理解。DBC认为软件系统是由许多相互交流的组件构造的,这些组件在交流时应该遵守彼此共有的约定(权利和义务),这些规约应该被精确定义。断言就是很好的规约表达工具。

  5. Eiffel的语言特点 • 层次化的语言描述Eiffel仔细区分了语言描述的三个层次:语法、有效性、语义。语法是最低层次,有效性是中间层次,语义是最高层次。高层次语言描述是应用在低层次语言描述上的。每个层次都提供了丰富的规则进行约束。在实现上,语法和有效性由编译器保证,语义则依赖于契约检查和调试工具。 • 一致的类型系统Eiffel中所有的类型都是基于class的。从而被纳入到Eiffel整体类型体系中,因此,Eiffel与Smalltalk一样,都是最纯的面向对象语言。 • 静态编译型语言 • 引入了断言Eiffel语言中引入了断言(Assertion)使用Design By Contract™作为辅助设计工具,你可以在建立软件的同时,加入验证正确性的参数。使用Eiffel编译器作为测试和调试工具,开发者可以选择在运行时要监视的断言。开发者可以分别为每个类设置不同的监视级别(不检查、只检查前置断言、检查前置断言和后置断言、检查全部)。如果在运行时发现某个断言不成立,则意味着存在Bug,这时就会抛出异常中断运行。这不仅增强了测试和调试的针对性,而且有软件应作什么(断言)和作了什么(do子句中的可执行部分)的精确描述,所以能使软件尽快调试到正确状态。

  6. 多重继承和重复继承多重继承,是指一个程序单元可以同时继承多个其它类的特性。多重继承的好处很多,它有助于改善重用,优化整个系统结构设计,更加灵活,维护和调试也更加方便。不少面向对象流派都在警告开发者“警惕多重继承”。但在Eiffel中,多重继承是面向对象密不可分的特性之一。重复继承是指一个类通过两个以上路径继承到同一祖先类。它的难点在于子孙类如何对待祖先类的特性,是作为一个特性还是作为多个特性来继承。许多面向对象语言视重复继承为“死亡菱形”,不敢越雷池一步。Eiffel对重复继承的特性,明确规定了哪些特性需要共享,哪些特性需要复制,从而灵活地绕过了这块暗礁。多重继承和重复继承多重继承,是指一个程序单元可以同时继承多个其它类的特性。多重继承的好处很多,它有助于改善重用,优化整个系统结构设计,更加灵活,维护和调试也更加方便。不少面向对象流派都在警告开发者“警惕多重继承”。但在Eiffel中,多重继承是面向对象密不可分的特性之一。重复继承是指一个类通过两个以上路径继承到同一祖先类。它的难点在于子孙类如何对待祖先类的特性,是作为一个特性还是作为多个特性来继承。许多面向对象语言视重复继承为“死亡菱形”,不敢越雷池一步。Eiffel对重复继承的特性,明确规定了哪些特性需要共享,哪些特性需要复制,从而灵活地绕过了这块暗礁。 • 一致的编码风格Eiffel认为,作为工业级语言,编码风格应当作为语言规范规定下来,而不应该任由个人肆意发挥。因此,Eiffel编译器对于标识符大小写、下划线格式等进行了严格的检查,甚至连注释都作检查。这种近乎严苛的规则,使得世界上几乎所有Eiffel程序员写出来的Eiffel程序都像是一个模子里出来的。

  7. 不支持的语言特点 • Eiffel为了完整准确地表达“质量至上”的设计开发理念,舍弃了一些设计概念。 • 全局变量、union类型、类内重载(in-class overloading)、goto及类似的控制结构(break、exit等)、类型规则特例(exceptions to the type rules)、副作用表达运算符、底层指针和指针算法等。

  8. 开发平台和主要技术 • Eiffel的主要技术主要体现在专为Eiffel面向对象语言设计的集成开发环境EiffelStudio™中。EiffelStudio™是一个完全的图形环境,包含了有回溯功能的分析设计平台、快速重编译、编辑、浏览工具、自动生成文档、先进的调试机制等众多功能。整个IDE的设计都体现了Eiffel对开发环境构建的独特见解。 • 其产品族包括EiffelStudio for Windows、EiffelStudio for Unix、EiffelStudio for Linux、EiffelStudio for VMS等,EiffelStudio for MacOS也正在开发中。这极大地提高了Eiffel代码在各种操作系统平台上的可移植性。

  9. Hello world!

  10. 一个Eiffel "system"或"program"是指一个classes的集合。Eiffel系统有一个Cluster的概念。通过一个叫做ACE的外部组件描述类之间的组合关系的,Cluster可以是几个类,或者几个子Cluster,或者是它们的混合。但是Cluster不是Eiffel语言的一个概念,Eiffel语言中,CLASS是惟一的模块。 • 这支程式有类别(class)HELLO_WORLD.其建构元(create routine)名称是make,会呼叫print的系统函式程序(system library routine)将“Hello,world!”的讯息给输出。 Eiffel中不像C系列【C、C++、Java、C#】的语言,通过约定某个叫做main的函数来启动应用,而是通过ACE来指定一个类作为整个应用的启动。

  11. Type

  12. Arrays

  13. conditional instruction

  14. multi-branch instruction

  15. loop construct

  16. To learn more

  17. 谢谢观看!

More Related