面向对象技术总论优秀课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象的程序结构要比面向过程的程序结构更复杂, 因此可以实现的功能也就更加强大。程序设计语言技术的发 展历史充分证明了客观和主观系统进化中,功能和结构之间 关系的一般规律。图7.2表现了系统外部功能和内部结构之 间的关系,其内部结构也是分层次的,这也符合了人认识世 界的一般规律:由外向内、由表及里。
在程序设计语言中,类是一个完整的、独立的、可重用 的,具有低耦合、高内聚特性的程序模块。类相当于一种自 定义数据类型,它类似于C语言中的结构体类型(C++本身就 可以使用strut关键字来定义类),不仅包含数据结构也包含 操作结构。数据类型作为程序语言中进行变量内存分配、类 型匹配、操作检查的基础,为程序的一致性和安全性提供了 重要的保证。因此,类概念的引入从类型角度进一步提高了 程序的安全性。
软件系统分析方法研究将问题域(现实世界)向求解域(程 序域)转换和映射的方法,其目的是把问题域(现实世界)中的 概念或者处理过程转换或映射成程序的元素和算法。问题域 (现实世界)相对来说是不变的或者变化较缓慢的,但系统分 析方法却根据程序设计方法的不同而改变,因此系统分析方 法依赖于程序设计技术,依赖于程序设计元素,参见图7.1。 结构化分析方法和面向对象分析方法则又分别依赖于结构化 程序设计语言和面向对象程序设计语言。
面向对象程序语言中的类是一个代码的预定义模块或者 程序结构元素,类似于函数、结构体或者记录类型定义,其 中包含了相关的变量和函数定义。类中的变量称为属性或者 成员变量;类中的函数称为成员函数(操作和方法)。操作和 方法的区别在于:操作强调其操作接口,方法则强调实现方 式和算法。可以把现实世界中的对象映射为程序语言中的类, 有时候这种映射比较困难且不明显,则可在其间增加一个概 念世界或者概念模型。这种映射的过程即为面向对象的系统 分析,如图7.4所示。
如上所述,新一代的程序设计语言技术并不是简单地否 定上一代语言,而是在上一代语言的基础上增加新的程序结 构元素(函数、类),从而实现更复杂的程序结构。这种新的 程序元素更直观、更真实、更自然、更完整地抽象了现实世 界中的数据和处理(或者事物与概念),更好地抽象了程序中 的变量和代码,也进一步增强了程序的易读性、安全性、稳 定性和重用性,同时改变了系统的分析和设计方法。归根结 底,程序设计语言的发展就是程序结构以及建立在其基础上 的分析、设计方法的发展。
结构化技术的基本元素是定义良好的程序结构元素,如 子程序(函数)结构和单入口/单出口的控制结构。前者是程序 的静态结构,后者则是程序的动态结构。子程序结构构成了 整个程序的静态结构,是动态控制结构的基础(严格地说, 每个语句都可以看成是对函数的调用)。结构化分析方法就 是要把问题域(现实世界)中的问题(概念、处理)转换成程序 中的数据结构和子程序(函数)。在这类方法中,可以认为: 程序=数据结构+函数结构+函数调用。相应的数据流分析方 法则将现实世界或者问题域中的业务处理转换为程序的函数 结构,这个过程称为分析过程,将系统的结构变成更适合于 程序域的形式,比如说具有重用、高效、稳定等特征的结构, 则是设计过程。
图7.2 软件系统外部功能和内部结构之间的关系
图7.3 软件系统外部功能和内部结构关ຫໍສະໝຸດ Baidu的例子
7.2 面向对象技术的基本概念
7.2.1 类 对象是指现实世界或者概念世界中的任何事物,类是具
有相同结构特征的对象的结构抽象。此结构特征包括对象的 属性特征和操作接口特征。属性特征定义了所有对象都具有 的属性名称及类型;操作接口特征则定义了所有对象都具有 的操作和方法。
图7.4 现实世界向计算机世界的转换
现实世界中的对象一定能够抽象成类,但程序语言中的 类则不一定有现实世界原型。这种不对称性反映了信息系统 的特殊性,即程序模型并不一定是现实世界的原始或者简单 的等价。因为现实世界中的任何事物都可以被抽象为类,因 此可以把面向对象看成是一种世界观和方法论,在这种世界 观和方法论基础上,现实世界被转换成程序世界就显得比较 自然。例如:企业中的员工、仓库、库存帐目、商品及类别、 物体、力等。
图7.1 系统分析方法对程序设计技术的依赖性
非结构化分析方法就是要把问题域或现实世界中的概念 和处理,如员工工资、计算工资等转换成变量定义和对变量 进行处理的语句,其基本元素是变量和语句,即所谓的数据 结构+算法。由于当时程序规模普遍比较小,运行和应用环 境也比较单一,因此不太考虑程序结构或者软件结构问题。 整体来说,非结构化技术是重视算法轻视结构的一种方法。
上面的例子表明,实现同样的功能可以采用不同的程序 元素、程序结构或者程序设计技术。高级的程序设计方法更 擅长解决复杂的问题,因为其程序元素和程序结构更为复杂。 这实际上是自然界和社会系统的一个普遍规律,即内部结构 决定外部功能。如果把系统解决的问题比做该系统实现的外 部功能,而把实现这些功能的程序元素及其关系看做是内部 结构,越复杂的内部结构就预示着系统的功能越复杂、越强 大,比如说,人的大脑结构要比动物的大脑结构复杂得多, 因此其功能也要强大得多。
面向对象技术总论
7.1 概述—面向对象方法论
面向对象技术的内容包括面向对象系统分析技术、系统 设计技术、程序设计技术、测试技术以及各种基于面向对象 技术的体系结构、框架、组件、中间件等。
面向对象技术的基础是面向对象程序设计,后者是程序 结构化发展的必然产物。众所周知,高级程序设计语言经历 了非结构化、结构化、面向对象三个发展阶段,这三个阶段 的进化都是针对程序的结构和系统分析方法而做出的。程序 的结构是指程序代码之间的关系。每到一个新的阶段,程序 的结构就更加完善、更加复杂,代码也更容易重用,抽象程 度也更高。
到了面向对象技术阶段,程序的基本元素是数据结构和 函数结构的统一体“类”。类是程序中的静态元素,而动态 元素是对象和消息。面向对象方法认为:程序=类结构+对 象+消息。面向对象分析的任务则是把现实世界中的概念或 者处理都转换为程序域中的类和方法,将现实世界中的过程 转换为对象之间的交互过程。面向对象设计使这种类和对象 交互更加适合于计算机系统实现,更加合理和高效,更加容 易重用。例如将员工、工资都转换成求解域中的类,计算某 位员工工资的过程称为向该员工对象发消息。