[此贴子已经被作者于2004-09-22 21:35:53编辑过]
隐蔽 - 不可见调用类内变量
封装 - 指整个为你的目的所设计的算法,用一个完整的类实现,封装,如其名。
封装 封装(Encapsulation)是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。 封装是面向对象方法的一个重要原则,系统中把对象看成是属性和对象的结合体,使对象能够集中而完整地描述一个具体事物。封装的信息隐蔽作用反映了事物的相对独立性,当我们从外部观察对象时,只需要了解对象所呈现的外部行为(即做什么),而不必关心它的内部细节(即怎么做)。 举例:电视机包括外形尺寸、分辨率、电压、电流等属性,具有打开、关闭、调谐频道、转换频道、设置图象等服务,封装意味着将这些属性和服务结合成一个不可分的整体,它对外有一个显示屏、插头和一些按钮等接口,用户通过这些接口使用电视机,而不关心其内部的实现细节。 与封装密切相关的概念是可见性,它是指对象的属性和服务允许对象外部存取和引用的程度。 在软件上,封装要求对象以外的部分不能随意存取对象的内部数据(属性),从而有效地避免了外部错误对它的"交叉感染",使软件错误能够局部化,大大减少了查错和排错的难度。另外,当对象内部需要修改时,由于它只通过少量的服务接口对外提供服务,便大大减少了内部修改对外部的影响,即减少了修改引起的"波动效应"。 封装也有副作用,如果强调严格的封装,则对象的任何属性都不允许外部直接存取,因此就要增加许多没有其他意义、只负责读或写的服务,从而为编程工作增加了负担,增加了运行开销。为了避免这一点,语言往往采取一种比较灵活的做法,即允许对象有不同程度的可见性。
信息隐蔽 – 也称封装。 – 模块内部的实现细节与外界隔离 面向对象技术充分体现了分解,抽象,模块化,信息隐蔽等思想,可以有效地 – 提高软件生产率 – 缩短软件开发时间 – 提高质量 面向对象技术的优势
[此贴子已经被作者于2004-09-24 23:04:13编辑过]
我已经举过例子了,封装就是为了数据的安全性,把一些私有属性或方法封装。你可以把类看成你家,你在家里使用你家里的东西没有任何限制,你可以随便使用。外人是无法使用的,而且外人也进不去你家除非你同意(否则那就叫小偷了)。而外人要进你家或使用你家的物品必须你同意才行,你不同意他就进不去。所以说你就好比那个公开的函数或方法,因为你出了你家的门别人能够看见你,别人不会说还能看见你家的东西吧?别人也只能看见你。你家里有什么别人是看不见的,刚才说了别人要想使用你家里的东西只能管你借或让你同意。比如
class 你家
{
private:
//你家里的东西(家俱和物品等)比如有椅子钢笔;
钢笔;
public:
你
//你可以把东西借给人家
借的东西 你借东西()
{
借给谁某某东西
}
};
void main()
{
你家 你;
//这就好比你从家里出来了
外人 小王;
小王=你.你借东西()
//小王管你借东西,比如你同意把钢笔借给小王,那小王就得到了钢笔
}
上面的例子已经够明白的了吧。
同样如果
小王=你.钢笔;
就是小王直接拿了你的钢笔没向你借,那你肯定不干。
所以你在c++里直接用对象访问类的私有变量编译器就会报错就是这个问题。
一些软件的词汇都是从硬件上来的,比如你买一个cpu ,你看到的只是看到cpu的管脚 ,你不需要知道cpu怎么制造,你只要通过这些管脚向cpu来传递信号就可以了
一个软件模块,你不必要知道它是怎么写的代码,你知道知道它完成哪些功能就可以了,你通过它给你的函数调用来跟它进行访问
欢迎光临 编程论坛 (https://bbs.bccn.net/) | Powered by Discuz! 6.1.0 |