面向对象软件开发代码结构(2)

使用封装降低信息的复杂度

封装是面向对象编程的核心思想之一。

封装的过程,是将大量的信息(过程、数据),凝缩成满足特定需求的接口的过程。
从数量上来说,好的封装必然是将大量的、与业务交互无关的实现细节隐藏起来,只暴露出少量的交互接口。如果封装后比没有封装情况下信息增加了,那这种情况可以考虑不做封装或轻量级封装,当然这需要结合以后是否需要扩展来考虑。

当然与封装相反的是,信息体的访问完全可以在不封装的条件下访问。这种方式存在的问题是,如果访问的代码存在于多个地方的话,就会产生重复。重复的代码是对修改不友好的。因为一旦需要修改访问代码,就需要改动多个地方,会产生大量的工作量。

另外,封装后的接口相对于原有的信息体而言,一般信息量是大幅度减少的,只需要几个函数和较少的参数和返回值即可访问。这对使用此信息体的开发人员来说,只需要掌握必要接口的使用方法即可,无需每次使用此功能时,都重新回顾此信息体的内部运作原理。

由上可以看出,封装的作用有:

  1. 隐藏实现细节
  2. 提高代码复用率
  3. 减少思考负担

封装形式

函数是最基本的封装形式。
面向对象编程中,类是新的一种封装形式。
库/模块是更高级别的封装形式。
大到系统软件、工具软件也是一种信息体的封装形式。

另一种理解方式

既然封装是一种由多到少的过程,可以将一次封装理解为建立树的过程。
实际项目中,一个软件致力于解决某一领域的某一类问题。在分析需求时,需要将需求逐层分解,大问题化成小问题,不相关的问题之间相互独立,这是一种和封装相反的过程。但是其分解后的结果可以为封装提供依据。

封装相关的问题

封装要侧重对需求不易改变的部分进行。如果封装的部分需求易变,那么以后免不了要做出修改,而且修改的内容可能很多,这就导致以前的封装工作白费。在分析需求的基础上,一种可行的方法是对需求易变的部分进行相对宽松的、轻量级的封装。

封装范围问题。封装的范围要尽量小,要对具有高度关联的信息进行封装,实现高内聚。

减少嵌套。嵌套会增加耦合性,并导致访问路径变长。


未完待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么方式可以通过影子系统传播恶意代码_将恶意代码隐藏在图像中:揭秘恶意软件使用的隐写术...

概述本周,许多Facebook用户都会发现,一些用户发布图片上出现了原本应该隐藏的图像标签。由此可以证明,图像可以携带大量表面上不可见的数据。实际上,Facebook和Instagram所使用的图片元数据与恶意攻击者制作的特制图像相比显得非常…

一种类的渐进式开发写法

// 主类,一般为窗口类 class MainClass { public:FuncClass1 *a;FuncClass2 *b; }// 实现某个功能的类 class FuncClass1 { public:FuncClass1(MainClass *) }// 实现某个功能的类 class FuncClass2 { public:FuncClass2(MainClass *) }每加一个大的功能&#xff0c…

【转】SQL中where, group by, having的用法和区别

group by,where,having 是数据库查询中最常用的几个关键字。在工作中,时常用到,那么,当一个查询中使用了where ,group by ,having及聚集函数时 ,执行顺序是怎么样的?为了回答这个问题,将这个三个关键字的用…

无法嵌入互操作类型 请改用适用的接口_西门子COMOS软件开发定制学习7-嵌入谷歌浏览器内核...

首先需要声明的是,本篇并非COMOS实用案例,只是希望借此让大家了解,如何使用微软的WPF和C#语言开发COMOS插件。首先看下效果图功能说明:拖拽COMOS设备至定制的浏览器,自动根据设备的名称和其制造商参数值,搜…

Win10上VMware的问题汇总

装xp很卡顿的问题 卸载360,重启电脑即可。 拖拽文件/文件夹到虚拟机直接卡住 使用15.1版本的VMware即可。 资源: 链接:https://pan.baidu.com/s/1dtr_cPwzprRTznpxj-OKTw 提取码:1wpj

【转】C#与C++的发展历程第一 - 由C#3.0起

C#5.0作为第五个C#的重要版本,将异步编程的易用度推向一个新的高峰。通过新增的async和await关键字,几乎可以使用同编写同步代码一样的方式来编写异步代码。 本文将重点介绍下新版C#的异步特性以及部分其他方面的改进。同时也将介绍WinRT程序一些异步编…

python数据库实例_Python操作MySQL数据库9个实用实例

用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示。下边是打包了32与64版本。MySQL-python-1.2.3.win32-py2.7.exeMySQL-python-1.2.3.win-amd64-py2.7.exe实例 1、取得 MYSQL 的版本实例 2、创建一个表并且插入数据实例 3、 python 使…

Win10+VMware上安装macOS过程记录

2021年更新 主要参考文章:https://blog.csdn.net/qq_40143985/article/details/104011778 参考了其他一些文章,最后会出现…not successfully错误,安装失败。建议参考这篇文章。 FAQ 安装好macOS后,电脑运行有点卡的问题&#x…

【转】5.2高性能IO模型浅析

服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO&#xff0…

vba 修改文本文档 指定行_VBA程序报错,用调试三法宝,bug不存在的

如果把VBA比作一门刀法,那么经过前面内容的操练,大家已经掌握了很多实用的招式。如果我们在刀法招式的基础之上,再掌握更多的“磨刀”心法,那么我们的刀用起来才会又好又快。所以今天主要和大家分享——VBA“磨刀”心法之程序调试…

VMware使用

重要功能 快照 快照就是保存当前虚拟机完整状态,相当于手动克隆一个虚拟机副本,也相当于是git中的一个提交点。在安装好一个新的虚拟机之后,一般都要创建一个快照,便于日后恢复。

【转】VS TFS源码分析软件PATFS使用方法一:配置团队项目

# 项目交付用正版,省下一台Iphone12 # # 31款JAVA开发必备控件和工具 # 相关链接: VS TFS源码分析软件PATFS使用方法二:设置新数据检查间隔VS TFS源码分析软件PATFS使用方法三:数据附件大小限制的自定义设置VS TFS源码分析软件P…

python selenium api_Selenium2+python自动化-查看selenium API

前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有。pydoc是Python自带的模块,主要用于从pytho…

软件开发

1、先后台后前台,先功能后界面。 2、结构化,是指分层、分模块软件设计,简化复杂的软件系统。非结构化的,例如使用GOTO语句,会导致模块间高度耦合。

mqtt协议详解_IoT物联网设备上云技术方案详解

随着传感器和通信技术的不断发展,物联网行业方兴未艾,业务链路涉及数据采集,通信连接,数据存储,数据可视化,洞察,行动决策。但,在实施过程中,碎片化的设备端通信连接难题…

【转】基于WebSocketSharp 的IM 简单实现

websocket-sharp 是一个websocket的C#实现,支持.net 3.5及以上来开发服务端或者客户端。本文主要介绍用websocket-sharp来做服务端、JavaScript做客户端来实现一个简单的IM。 WebSocketBehavior WebSocketBehavior是核心对象,他包含了OnOpen,OnMessage…

我的技术观

变化 技术是日新月异层出不穷的。人类在不断实践,技术也在不断更新变化。 选择 有的技术只是为了解决某一领域内的问题,有的技术只有在某个领域的某个时期才有用。 一个人没有必要也不可能掌握所有技术。 个人要首先熟练掌握自己涉猎领域内的相关技术…

【转】极限编程一览

极限编程(XP)起源始于1990年代。当时肯特布莱克(Kent Black)在戴姆勒克莱斯勒(DaimlerChrysler)处理项目时,试图寻找一种更好的软件开发方法。他的创立新方法后来被称为极限编程方法论&#xff…

mysql 关联更新_跳出初学MySQL知识的原理整理(一)

一、基础架构MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。支持 InnoDB、MyISAM等多…

如何看待编程语言

什么是语言 语言是用来传递信息的交流工具。它的常见形式有:文字(视觉上)、话语(听觉上)。 语言是如何表达信息的 语言提供了模型和规则。 语言模型必须有足够的信息复杂度,如字、词、短语。只有语言本身…