面向对象实现课件.pptxVIP

  • 0
  • 0
  • 约1万字
  • 约 73页
  • 2023-10-24 发布于山东
  • 举报
基于面向对象的课程设计主要由两个阶段组成:面向对象设计阶段和面向对象实现阶段。面向对象设计阶段主要是通过编写面向对象程序来实现设计意图。面向对象程序的核心是类,每个类都有自己的数据成员和行为。在这个阶段,我们需要根据设计意图来确定程序的功能和数据模型。面向对象实现阶段则是将设计好的程序转换为可运行的形式。实现过程主要包括以下几个步骤:1.创建新的类和相关的头文件。2.定义类的属性和方法。3.编写相应的接口和构造函数,使其与类的特性匹配。4.运行程序并查看输出。总之,

面向对象实现;面向对象实现主要包括两项工作: 把面向对象设计结果翻译成用某种程序语言书写的面向对象程序; 测试并调试面向对象的程序。 ;面向对象测试的目标,也是用尽可能低的测试成本发现尽可能多的软件错误。 面向对象程序中特有的封装、继承和多态等机制,也给面向对象测试带来一些新特点,增加了测试和调试的难度。 必须在实践中努力探索适合于面向对象软件的更有效的测试方法。;面向对象设计的结果既可以用面向对象语言、也可以用非面向对象语言实现。; 选择编程语言的关键因素,是语言的一致的表达能力、可重用性及可维护性。 从面向对象观点看来,能够更完整、更准确地表达问题域语义的面向对象语言的语法是非常重要的,因为这会带来下述几个重要优点:;1. 一致的表示方法 面向对象开发基于不随时间变化的、一致的表示方法。 表示方法应该从问题域到OOA,从OOA到OOD,最后从OOD到面向对象编程(OOP),始终稳定不变。 一致的表示方法既有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。;2. 可重用性 为了能带来可观的商业利益,必须在更广泛的范围中运用重用机制,而不是仅仅在程序设计这个层次上进行重用。 在OOA,OOD直到OOP中都显式地表示问题域语义,其意义是十分深远的。 随着时间的推移,软件开发组织既可能重用它在某个问题域内的OOA结果,也可能重用相应的OOD和OOP结果。;3. 可维护性 尽管人们反复强调保持文档与源程序一致的必要性,但是,在实际工作中很难做到交付两类不同的文档,并使它们保持彼此完全一致。 特别是考虑到进度、预算、能力和人员等限制因素时,做到两类文档完全一致几乎是不可能的。因此,维护人员最终面对的往往只有源程序本身。;两大类面向对象语言。 一类是纯面向对象语言,如Smalltalk和Eiffel等语言,着重支持面向对象方法研究和快速原型的实现. 另一类是混合型面向对象语言,也就是在过程语言的基础上增加面向对象机制,如C++等语言,着重提高运行速度和使传统程序员容易接受面向对象思想。;1. 支持类与对象概念的机制 允许用户动态创??对象,并且可以用指针引用动态创建的对象。 系统必须处理内存管理问题,如果不及时释放不再需要的对象所占用的内存,动态存储分配就有可能耗尽内存。;有两种管理内存的方法, 语言的运行机制自动管理内存,即提供自动回收“垃圾”的机制; 程序员编写释放内存的代码。 自动管理内存不仅方便而且安全,但是必须采用先进的垃圾收集算法才能减少开销。;2. 实现整体-部分(即聚集)结构的机制 两种实现方法,分别使用指针和独立的关联对象实现整体-部分结构。;3. 实现一般-特殊(即泛化)结构的机制 既包括实现继承的机制也包括解决名字冲突的机制。 解决名字冲突,指的是处理在多个基类中可能出现的重名问题,这个问题仅在支持多重继承的语言中才会遇到。 某些语言拒绝接受有名字冲突的程序,另一些语言提供了解决冲突的协议。不论使用何种语言,程序员都应该尽力避免出现名字冲突。;4. 实现属性和服务的机制 实现属性的机制应该着重考虑几个方面: 支持实例连接的机制; 属性的可见性控制; 对属性值的约束。 服务应该考虑下列因素: 支持消息连接(即表达对象交互关系)的机制; 控制服务可见性的机制; 动态联编。;所谓动态联编,是指应用系统在运行过程中,当需要执行一个特定服务的时候,选择(或联编)实现该服务的适当算法的能力。 动态联编机制使得程序员在向对象发送消息时拥有较大自由,在发送消息前,无须知道接受消息的对象当时属于哪个类。;5. 类型检查 如果语言仅要求每个变量或属性隶属于一个对象,则是弱类型的; 如果语法规定每个变量或属性必须准确地属于某个特定的类,则这样的语言是强类型的。面向对象语言在这方面差异很大,例如,Smalltalk实际上是一种无类型语言(所有变量都是未指定类的对象);C++和Eiffel则是强类型语言。混合型语言(如C++, Objective_C等)甚至允许属性值不是对象而是某种预定义的基本类型数据(如整数,浮点数等),这可以提高操作的效率。;强类型语言主要有两个优点: 有利于在编译时发现程序错误, 增加了优化的可能性。 通常使用强类型编译型语言开发软件产品,使用弱类型解释型语言快速开发原型。 总的说来,强类型语言有助于提高软件的可靠性和运行效率,现代的程序语言理论支持强类型检查,大多数新语言都是强类型的。;6. 类库 大多数面向对象语言都提供一个实用的类库。 类库中往往包含实现通用数据结构(例如,动态数组、表、队列、栈、树等等)的类,通常把这些类称为包容类。在类库中还可以找到实现各种关联的类。 更完整的类库通常还提供独立于具体设备的接口类(例如,输入输出流),此外,用于实现窗口系统的用户界面类也非常

文档评论(0)

1亿VIP精品文档

相关文档