[Basic]面向对象之信息隐藏(一)

开博之语

开技术博客,始源于与本科毕设老师的一次交谈。在那次交谈中,老师针对毕设期间对我的了解,给我提出了几点建议。针对我如今的技术实践能力强于文档写作这一环节,老师提出的建议就是写技术博客。于是在本科毕设结束后,我采纳了老师的建议,最终开设了这个技术博客。开设这个技术博客,一则对自己的写作有所提高,而更大的意义则在于能与更多的人进行交流,交流可以促进你我的共同进步,不是吗?所以我乐于、渴望于倾听到你们的声音!

至于开博要写的内容,最初准备于将本科毕设做的有关操作系统的东西写出来,然则操作系统的内容读起来比较困难,做相关的实验操作也是非常费时,所以我放弃了最开始就写作操作系统有关的东西。基于开设本博客是想有更大的交流,我也咨询了周围几位同学的意见,最终决定于先写点比较通用的东西。而这通用性的东西又应该写哪一些呢?于是在和OO同学聊天时,我问她希望看到一些什么东西?她说希望看到我写一些Java有关的东西。我想了一下,就说不如我来把C++和Java混合起来讲吧,然后用C++和Java的角度来理解一下面向对象。然后,这个博客开始写的主题也就定下来了。后来,在构思中,发现只用C++和Java纯讲面向对象也没有多少意思,不如再加点“料”进去。所以,当你看见我的文章突然冒出一些甚至讲编译原理、操作系统等东西时,请不要觉得奇怪,我的思维比较“跳跃”,我只是想从更多的角度去认识一些东西,如C++实质、Java原理、面向对象思想.....而这些东西,均会由面向对象基本思想来引出,所以最后文章的题目还是定于了面向对象。同时,我其实也只是本科毕业,待读研究生的小小学生党一枚,所以肯定有疏忽纰漏、甚至可能有错误之处,欢迎留言提出,我会立马改正。正如上文提出,交流可以促进你我的共同进步!

面向对象之信息隐藏

“来,谈谈你对面向对象的理解”;“说说面向对象的几个基本特征”等问题似乎仍然被一些面试官钟爱,无论是研究生复试还是职场应聘场合。那么,何谓面向对象呢?(当然我们这里谈论的是计算机世界中的面向对象,严格来说,也许叫面向对象编程(Object-Oriented Programming))Hmm...此时的我,抱着笔记本,望着窗前的景物,略微思考后,写下答案:”我想这是一种思想,一种编程策略。当我们面对复杂的应用与设计时,它是自然而然的一种思考方式与解决办法,你可以认为这是一种哲学。”——老实说,我似乎把问题变得更复杂了。那么,让我们再详细谈谈面向对象。让我们想象,此时我们需要设计的系统具有5000个功能模块,我们现在选择的编程策略,是让团队的组员去各自负责一部分功能模块,再组合起来。Hmm...这似乎看起来不错。随着编程的进行,我们很自然的发现一些数据成为了“全局”数据,每一个子模块都可以去直接访问、修改它,这可不是一个好消息,当出现Bug时,这个Bug就是具有大范围杀伤力的恐怖存在!那么,如果这个程序后面再有新的功能模块,规模越来越大,OMG,这个Bug的威力会更大......这时候的我们,心情是无比沮丧,想着如果有办法可以将这些可以直接访问的数据封装起来,达到控制访问权限的目的,那该有多好。然后我们整个团队进行了开会,思考策略,最后经过集思广益,我们找到了应付策略。我们决定采用这种编程策略,那就是我们去用一个一个的方法(method)(注:如果你习惯C/C++中的function叫法,我想我也没有意见)去获取、修改特定的数据,而不是直接去修改数据,这样一来真是好多了。于是,我们很自然的发现一些方法与数据连接的很紧密了,那么我们将这样的数据与方法连接在一起,我想我们应该给这个聚合体取个名字吧,Hmm...我想我们不如就叫它Object吧,翻译成中文就是对象,这时候我们发现了,原来我们是很自然的在运用面向对象这种思想、这种策略在编程、在解决问题。我们再回过头看,我们为什么想去用一个一个的方法去获取、修改数据,而不是直接去修改数据呢?因为我们发现当我们要设计的程序规模很大时,如果让这些数据成为任何一个子模块都可以直接访问的“全局”数据,如果出现了Bug,会给我们的程序有灾难性的危害!我们针对于此,也提出了一个很自然的解决方案:访问控制。让数据不能直接被访问,而只能通过一些特定的方法而被访问、被修改,我们实际上就相当于对数据进行了封装(Encapsulation),也就是达到了信息隐藏(Information hidding)的目的。

那么,访问控制与信息隐藏是否还可以有其它作用,有更重要的意义呢?C++与Java提供怎么样的机制与方法来支持信息隐藏呢?

Next

面向对象之信息隐藏(二)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值