欢迎光临深圳市昶丰科技有限公司官方网站!现在的时间是:
 
 
服务与支持
  技术文章
  成功案例
  解决方案
  下载专区
 
  技术文章
数据的抽象与封装


                                                        数据的抽象与封装

  面向对象系统中最突出的特性是封装性,继承性和多态性.我们首先来讨论封装性.封装与数据抽象的概念密切相关.

1.现实世界中的抽象与封装
  抽象和封装的概念在现实世界中广泛存在,尤其在科学技术日益发展的今天,大量的电器被人们使用,对电器的使用体现了抽象与封装的概念.
  以录音机为例,录音机上有若干按键,但人们使用录音机时,只要根据自己的需要怕,如放音,录音,停止,倒带等.按下与之对应的键,录音机就会完成相应的工作.这些按键安装在录音机的便面,人们通过他们与录音机交互.我们无法(当然也没必要)操作录音机的内部电路,因为他们被安装在机壳的内部,录音机的内部情况对于用户来说是隐蔽的,不可见的.这就是所为封装原理.
  那么,我们是如何知道放音按哪个键,停止又按哪个键呢?是录音机的操作说明书告诉我们的,但操作说明书并不告诉我们录音机的内部将如何去做这些事.操作说明书在录音机做什么(what to do)与怎样做(how to do)之间做出了明确的区分.这就是所谓抽象的原理.抽象出来的是做什么,而不是关心如何实现这些操作.
  以一般观点而言,抽象是通过特定的实例或例子抽取共同性质以后形成概念的过程.抽象是对系统的简化描述或规范说明,它强调了系统中的一部分细节和特性,例如做什么,而忽略了其他部分,例如如何做.抽象的描述被称为它的规范说明,例如录音机的操作说明书,而对抽象的解析称为它的实现.
2.数据的抽象与封装的基本概念
  将上述观点用在数据结构上,就不难理解数据的抽象与封装.将数据结构和作用用于数据结构上的操作组成一个实体,数据的表示方式和对数据的操作细节被隐藏起来,用户通过操作接口对数据进行操作.对用户来说,只知道如何通过操作接口对该数据进行操作,而并不知道是如何做的,也不知道数据是如何表示的.这就是数据封装.
  数据的抽象则是通过对数据实例的分析,抽取共同性质的结果.数据的抽象和我们前面讨论的类的概念之间显然存在这很强的相似性.
  在面向对象程序设计中,数据的抽象是在确定类时强调对象的共同点而忽略他们的不同点的结果.也可以说,在一个类的说明中我们只表示那些主要特性,而忽略次要的,引不起我们兴趣的东西.
  数据封装则是隐藏了抽象的内部实现细节的结果.封装是将数据抽象的外部接口与内部的实现细节清楚地分离开.抽象和封装是互补的.好的抽象有利于封装,封装的实体则帮助维护抽象的完整性.重要的是抽象先于封装.
  以一行账户类为例,balance,interestYTD,owner,account_number等私有数据是被封装的数据,MakeDeposit,WithDraw,Transfer等成员函数的细节也同时被封装,用户看到的是MakeDeposit,WithDraw,Transfer操作提供的接口.
  在上面的讨论中,我们并没有严格区分银行账户是类还是对象,因为封装性不仅涉及到类的描述,也涉及到组成软件系统的对象.
  从类的实例--对象--的角度来讨论封装似乎更合理,因为类并不真正占有存储空间.封装的单位是实际是对象,但是对象的结构和行为是用它自己的类说明来描述的.对象的封装比类更具体化.

上一条新闻:对象的交换 2014-10-30
下一条新闻:没有了
友情链接:掉货检测
Copyright © 2013-2015 深圳市昶丰科技有限公司 All Rights Reserved. 粤ICP备2023005930号    深圳网络公司-龙腾盛世提供技术支持
地址:深圳市宝安区福海街道展城社区福园一路35号天瑞工业园A5栋912    电话:0755-29308961    传真:0755-29308961    邮箱:chn_cf@163.com    
热门关键字:掉货检测