《面向对象分析与设计》一1.4面向对象方法的主要优点

简介: 本节书摘来自华章出版社《面向对象分析与设计》一书中的第1章,第1.4节,作者 麻志毅,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.4面向对象方法的主要优点

本节从认识论的角度和软件工程方法的角度看一下面向对象方法带来的益处,并把面向对象方法与传统方法进行比较,看面向对象方法有什么优点。

  1. 从认识论的角度面向对象方法改变了开发软件的方式
    面向对象方法从对象出发认识问题域,对象对应着问题域中的事物,其属性与操作分别刻画了事物的性质和行为,对象的类之间的继承、关联和依赖关系能够刻画问题域中事物之间实际存在的各种关系。因此,无论是系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射到问题域。这使得运用面向对象方法有利于正确理解问题域及系统责任。
  2. 面向对象语言使得从客观世界到计算机的语言鸿沟变窄
    图1.4为一个示意图,说明了面向对象语言如何使得从客观世界到计算机的语言鸿沟变窄。

机器语言是由二进制的“0”和“1”构成的,离机器最近,能够直接执行,却没有丝毫的形象意义,离人类的思维最远。汇编语言以易理解的符号表示指令、数据以及寄存器、地址等物理概念,稍稍适合人类的形象思维,但仍然相差很远,因为其抽象层次太低,仍需考虑大量的机器细节。非OO的高级语言隐蔽了机器细节,使用有形象意义的数据命名和表达式,这可以把程序与所描述的具体事物联系起来。特别是结构化编程语言更便于体现客观事物的结构和逻辑含义,与人类的自然语言更接近,但仍有不少差距。面向对象编程语言能比较直接地反映客观世界的本来面目,并使软件开发人员能够运用人类认识事物所采用的一般思维方法来进行软件开发,从而缩短了从客观世界到计算机实现的语言鸿沟。
3面向对象方法使分析与设计之间的鸿沟变窄
本书所讲的传统软件工程方法是指面向对象方法出现之前的各种软件工程方法,此处主要讨论结构化的软件工程方法。图15是结构化的软件工程方法的示意图。

image

在结构化方法中,对问题域的认识与描述并不以问题域中的固有事物作为基本单位,并保持它们的原貌,而是打破了各项事物间的界限,在全局的范围内以功能、数据或数据流为中心来进行分析。所以运用该方法得到的分析结果不能直接地映射到问题域,而是经过了不同程度的转化和重新组合。这样就容易隐藏一些对问题域理解的偏差。此外,由于分析与设计的表示体系不一致,导致了设计文档与分析文档很难对应,在图15中表现为分析与设计的鸿沟。实际上并不存在可靠的从分析到设计的转换规则,这样的转换有一定的人为因素,从而往往因理解上的错误而埋下隐患。正是由于这些隐患,使得编程人员经常需要对分析文档和设计文档进行重新认识,以产生自己的理解再进行工作,而不维护文档,这样使得分析文档、设计文档和程序代码之间不能较好地衔接。由于程序与问题域和前面的各个阶段产生的文档不能较好地对应,对于维护阶段发现的问题的每一步回溯都存在着很多理解上的障碍。

image

面向对象开发过程的各个阶段都使用了一致的概念与表示法,而且这些概念与问题域的事物是一致的,这对整个软件生命周期的各种开发和管理活动都具有重要的意义。首先是分析与设计之间不存在鸿沟,从而可减少人员的理解错误并避免文档衔接得不好的问题。从设计到编程,模型与程序的主要成分是严格对应的,这不仅有利于设计与编程的衔接,而且还可以利用工具自动生成程序的框架和(部分)代码。对于测试而言,面向对象的测试工具不但可以依据类、继承和封装等概念与原则提高程序测试的效率与质量,而且可以测试程序与面向对象分析和设计模型不一致的错误。这种一致性也为软件维护提供了从问题域到模型再到程序的良好对应。

4面向对象方法有助于软件的维护与复用
需求是不断变化的(尽管可阶段性地“冻结”),这是因为业务需求、竞争形式、技术发展和社会的规章制度等因素都不断地在发生变化。这就要求系统对变化要有弹性。
在结构化方法中,所有的软件都按功能(可用过程或函数实现)来划分其主要构造块,最终的系统设计往往如图17所示。

image

从图17中能够看出,数据结构与算法是分别组织的,对一处修改,可能会引起连锁反应。这种建模的缺点是模型脆弱,难以适应不可避免的错误修改以及需求变动,以至于系统维护困难。算法和数据的分离,是造成这种状况的根本原因。算法和数据间的可能的紧密耦合,也使得复用难以实现。
在面向对象方法中,把数据和对数据的处理作为一个整体,即对象。该方法以对象及交互模式为中心,如图18所示。

image

通过与结构化方法的比较,能够看出,面向对象方法还具有如下的主要优点:
1)把易变的数据结构和部分算法封装在对象内并加以隐藏,仅供对象自己使用,这保证了对它们的修改并不会影响其他的对象。这样对需求的变化有较强的适应性,有利于维护。对象的接口(供其他对象访问的那些操作)的变化会影响其他的对象,若在设计模型时遵循了一定的原则,这种影响可局限在一定的范围之内。此外,由于将操作与实现的细节进行了分离,这样若接口中的操作仅在实现上发生了变化,也不会影响其他对象。对象本身来自于客观事物,是较少发生变化的。
2)封装性和继承性有利于复用对象。把对象的属性和操作捆绑在一起,提高了对象(作为模块)的内聚性,减少了与其他对象的耦合,这为复用对象提供了可能性和方便性。在继承结构中,特殊类对一般类的继承,本身就是对一般类的属性和操作的复用。
5面向对象方法有助于提高软件的质量和生产率
按照现今的质量观点,不仅仅要在编程后通过测试排除错误,而是要着眼于软件开发过程的每个环节开展质量保证活动,包括分析和设计阶段。系统的高质量不是仅指系统没有错误,而是系统要达到好用、易用、可移植和易维护等,让用户由衷地感到满意。采用OO方法进行软件开发,相对而言更容易做到这些。
有很多数据表明,使用OO技术从分析到编程阶段能大幅度地提高开发效率,在维护阶段提高得就更多。这主要体现在如下几方面:
 OO方法使系统更易于建模与理解。
 需求变化引起的全局性修改较少。
 分析文档、设计文档、源代码对应良好。
 有利于复用。

相关文章
|
Java 关系型数据库 MySQL
文件在线压缩与解压|基于Springboot实现文件在线压缩与解压
文件在线压缩与解压|基于Springboot实现文件在线压缩与解压
535 0
|
10月前
|
JSON 自然语言处理 数据格式
智能问答助手判断节点
本工具通过判断节点识别用户是否上传文件或图片,结合LinkReaderPlugin读取文档内容、imgUnderstand解析图像信息,并由大模型整合文本、文档与图像数据,精准提取问题与答案,实现多源信息的自动化处理与分析。
452 3
|
SQL 人工智能 自然语言处理
EMR Serverless StarRocks AI Function新能力亮点与解读
阿里云 EMR Serverless StarRocks 发布 AI Function,将多模态 Embedding、AI 聚合及向量混合检索原生融入 SQL 链路。支持图片/视频/文本统一向量化、自然语言过滤及跨行语义汇总,无需外部向量库。架构上采用异步 Pipeline、资源有界控制及多账号 AI 网关,保障高吞吐与稳定性。通过“数据不搬家”实现极简运维,广泛应用于广告素材闭环、游戏聊天分析及金融 RAG 场景,构建生产级 AI 数据计算体系。
351 0
EMR Serverless StarRocks AI Function新能力亮点与解读
|
3月前
|
弹性计算 人工智能 缓存
最新阿里云服务器价格表:轻量38元起、ECS99元起,按量/包月/包年,新老用户同享优惠明细参考
在云计算普及的当下,阿里云服务器凭借高稳定性、弹性扩展、安全可靠的优势,成为个人开发者、中小企业、大型企业部署业务的首选。阿里云服务器产品线覆盖轻量应用服务器、ECS云服务器、GPU云服务器三大核心品类,针对不同场景推出经济型、通用型、企业级等多类实例,搭配灵活的计费模式与丰富的优惠政策,形成了从入门级到高性能、从低成本到高可靠的完整价格体系。最新版阿里云服务器配置价格表全面更新,清晰呈现各实例类型、配置规格、计费周期、地域差异的价格明细,同时提供新老用户同享的普惠优惠,帮助用户精准选型、合理控制成本,实现业务部署与成本效益的最优平衡。
486 0
|
6月前
|
设计模式 缓存 测试技术
Python 装饰器很难?那是你没看到这篇文章!
Python装饰器是高效复用代码的利器!本文用通俗语言拆解其本质:从函数是一等公民、闭包原理,到手写计时装饰器、@语法糖、支持参数的万能版,再到保留元信息的完美实践。零基础也能轻松掌握!
259 3
|
8月前
|
数据库
私域直播系统盈利能力分析:不同模式收益结构排行
私域直播系统价值不在功能,而在盈利结构!本文深度剖析三大模式:SaaS租赁(稳定但天花板低)、源码自营(多元利润、可放大)、平台招商(杠杆分润、盈利能力最强),揭示“是否参与交易分润”才是利润差异的核心。
|
9月前
|
编解码 安全 Android开发
数字短信是什么?一篇读懂多媒体短信
数字短信支持2MB容量图文、视频内容,全终端覆盖,点击率提升3倍。现已面向电商、本地、旅游、出行行业企业开放,即将全量发布!
780 0
|
10月前
|
机器学习/深度学习 人工智能 并行计算
DeepSeek 开年王炸:mHC 架构用流形约束重构 ResNet 残差连接
大过节DeepSeek在arXiv发布mHC新论文,挑战Transformer残差连接范式。通过流形约束(谱范数+双重随机矩阵),在保持高带宽信息通路的同时恢复恒等映射稳定性,解决深层网络梯度传播难题,理论扎实且兼顾系统效率,或成“后Transformer时代”架构新方向。
778 7
DeepSeek 开年王炸:mHC 架构用流形约束重构 ResNet 残差连接
|
10月前
|
监控 数据可视化 前端开发
紧急Bug处理:流程、四阶段控制法及工具方法
本文系统阐述了紧急Bug处理的核心原则、四级分类标准(P0-P3)及四阶段标准化流程(响应、诊断、执行、复盘),强调“控制影响优先于完美修复”。配套工具链涵盖告警聚合、协作指挥、诊断分析与知识沉淀,并提供自动化脚本示例,提升团队应急响应效率与系统稳定性。