| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1234 人关注过本帖
标题:抽象 封装
只看楼主 加入收藏
wsaaa
Rank: 1
等 级:新手上路
帖 子:136
专家分:0
注 册:2007-5-8
收藏
 问题点数:0 回复次数:13 
抽象 封装
c++是如何实现抽象与封装的
搜索更多相关主题的帖子: 封装 
2007-07-03 22:17
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
oop & class……

Fight  to win  or  die...
2007-07-03 22:26
wsaaa
Rank: 1
等 级:新手上路
帖 子:136
专家分:0
注 册:2007-5-8
收藏
得分:0 
回复:(aipb2007)oop & class……

什么意思啊,我是个新手,刚学c++,能说的明白一点吗?

2007-07-03 23:26
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
既然是新手,就不应该问的这么笼统。
自己好好体会。等你有一定基础了,自然会明白。
GOOD LUCK……

Fight  to win  or  die...
2007-07-03 23:28
wsaaa
Rank: 1
等 级:新手上路
帖 子:136
专家分:0
注 册:2007-5-8
收藏
得分:0 
回复:(aipb2007)既然是新手,就不应该问的这么笼统...

关键这是个考试的题目啊,没有办法啊,老师用90分钟就把类 这一张讲完了啊,出的考试题目也不懂,而且在书上也找不到啊,急啊,不然就不会再论坛上问了,自己可以 慢慢的看,在慢慢的理解啊。

2007-07-03 23:35
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
收藏
得分:0 
怎么考概念啊 网上查的
封装是人们对现实世界中解决问题时,为了进行简化问题,对研究的对象所采用的一种方法,一种信息屏蔽技术。例如:打电话的时候,我们只需简单的按几个按钮就可以了,我们没有必要去了解电话内部的线路、网络的连接,这样一来通过对实现细节的封装,就使得本身很复杂的问题变得非常简单,容易操作,并且出错的几率大大减小

封装的主要目的:
就是达到接口和实现的分离。通过封装,对内我们将实现细节隐藏起来,对外我们则通过接口向客户提供相应的服务。将接口和实现分离是避免所谓的“涟漪现象”的关键(涟漪现象,即“一石激起千层浪”。在软件开发过程中,经常会出现为了某个目的,修改一个文件A,结果必须修改与之相关的其他文件B、C,修改文件B、C就要修改相关的文件D、E、F、G,如此循环往复,就会造成大规模的修改,最终会以瀑布式扩散到系统的各个地方。就象在湖中央投下了一颗石子,造成整个湖面的波动,“涟漪现象”由此而得名)。
将接口和实现分离是软件重复使用的一个手段,其作用主要体现在以下4个方面:
1、降低了系统内部各个模块之间的耦合,使系统更有弹性。
2、将软件中的BUG精确定位到较小的模块,有助于软件的调试工作。
3、降低系统的复杂性

fighting!from now on!
2007-07-03 23:59
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
收藏
得分:0 

抽象是对象的最简化的接口,他向客户提供了所期望的服务。理解抽象的关键,在于接口,抽象是对象接口的抽象,对于特定的对象,抽象就是一个明确的接口,对于电话,按钮就是他的接口(抽象)。

用好抽象的关键在于对所研究问题的深刻理解。设计的比较好的抽象可以把说明从实现中分离出来,通过提供必备的信息,隐藏起实现的细节,让客户以较为安全和客预测的方式使用对象,同时通过降低复杂性,以简单接口的方式降低学习难度,提高学习效率。

好的抽象,应该使客户打消“偷窥”的念头(不过总是有些人想方设法去窥视具体的实现),按照抽象编程,使得最终的客户代码更加的简单、安全和稳定,在这方面,标准程序库和各种准标准程序库做得最为出色。

一个好的抽象必须提供明确的、完整的、易于理解的说明,依赖抽象编程,实际上就是依赖这些说明进行编程,他比依赖实现编程有很大的优势:

1、阅读说明比阅读源代码容易得多,时间节省了很多,也更容易理解。

2、通过说明的完整性(例如先置条件、后置条件、适用范围等),我们可以很清楚的了解一个类的完整性。

3、通过说明,我们的接口具有更大的弹性和可扩展性(例如我们可以采用更加有效的方法实现sort接口)。

4、规定接口必须有说明,把那些没有相应说明的接口定义为错误,使得类的维护更加容易。

一个好的说明应该是规定接口必须提供的服务,必须完成的任务,而不是已经做过的事情。


fighting!from now on!
2007-07-04 00:03
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
收藏
得分:0 
封装通过提供抽象,隐藏了实现的细节,通知客户那些是可以随便使用的稳定的服务,那些是随着版本的更新有可能发生变动的细节,例如有一个接口:void sort();通过接口的说明,客户可以知道这个接口用来进行排序,具体的排序方法是什么,客户无需关心,可能在版本1中,采用的是冒泡排序,在升级的版本2中,采用的则是快速排序。客户既然不用关心细节,那么使用什么方法对客户的代码不会带来任何影响。对于一个已经公布的接口/抽象,我们不能够随意更改,例如在版本1中提供了sort接口,那么在升级的版本2中必然也要有这个接口,因为版本公布之后,我们就无法知道,这个接口是不是有人在使用,如果我们在版本2中禁止了sort接口,那么所以使用版本1的客户代码无法升级,若强行升级,势必带来客户代码的中断,这个特点在COM中尤为明显。

fighting!from now on!
2007-07-04 00:04
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 
以下是引用wsaaa在2007-7-3 23:35:48的发言:

关键这是个考试的题目啊,没有办法啊,老师用90分钟就把类 这一张讲完了啊,出的考试题目也不懂,而且在书上也找不到啊,急啊,不然就不会再论坛上问了,自己可以 慢慢的看,在慢慢的理解啊。

大学就是这样的啦,自己去看呗


Viva,espana!
2007-07-04 08:19
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 
那确实

Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-07-04 09:42
快速回复:抽象 封装
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017445 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved