下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

软件设计:封装

作者:a-leon     来源: https://www.cnblogs.com/aleon/p/11401160.html点击数:875发布时间: 2020-04-13 15:54:36

标签: 面向对象编程软件开发软件测试

  封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成"类",其中数据和函数都是类的成员。

  在以面向过程的思维来解决问题时,我们需要分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现。

  如在这个场景中:“汤姆和玛丽把一只大象往一个冰箱里面装”。需要按照以下步骤来做:

  1、汤姆或玛丽打开冰箱门。

  2、汤姆和玛丽把大象装进冰箱里。

  3、汤姆或玛丽关闭冰箱门。

软件设计:封装_面向对象编程_软件开发_软件测试_课课家

  可以看到,大象是被汤姆和玛丽装进冰箱里的。那能不能用其他方式把大象装进冰箱里呢?或者说能不能就让冰箱自己装就行?而对于汤姆和玛丽来说,他们根本不用关心是谁负责去装,他们只管提供要装的东西即可。

  此时可以回顾下类和对象的一些概念,类的成员中有属性和方法。那么我们可以将上面装大象的具体步骤交给某个对象去处理,所以现在定义一个冰箱的类,其内部成员有:品牌名(属性)、开门(方法)、关门(方法)、装东西(方法)。

  现在把它的4个方法进行实现:

  开门(私有):方法中的逻辑只管负责开门

  关门(私有):方法中的逻辑只管负责关门

  装东西(公共):1、调用自己的开门方法,2、装东西具体操作,3、调用自己的关门方法

  从上面的解决方案中,将原本装大象的具体步骤交给了冰箱类自己去处理。那么对于汤姆或玛丽对象来说,他们只需要有一个冰箱的对象实例即可,然后把要装的东西交给冰箱对象实例的公共方法【装东西】就行,且自己完全不必关心冰箱是怎么开门、装东西、关门的,只关心冰箱的公共方法【装东西】反回给自己的结果是什么。(如果将这种【面向对象】的思想换种思维场景的话,就相当于你去饭店点了一份蛋炒饭,做一份蛋炒饭是厨师的职责,而你只管吃就行。但是在【面向过程中】你要吃一份蛋炒饭得自己准备材料,然后自己亲自下厨)

  所以可以将【封装】理解为:将具有相同特征的数据和方法组合包装到单个单元中。

  而这个单元就是“类”,所以一个类是封装后的产物。属性和方法属于类的成员,它们是构成一个对象的主要部分,如果没有了这两样东西,那么对象也没什么存在意义了。

  在冰箱类中有自己的私有和公共方法,隐藏了应该隐藏的内容,并使可见的内容可见,这叫成员的访问权限。

  由此可见,封装目的是:

  1、减少程序间的耦合。

  2、类内部的结构可以自由修改。

  3、可以对成员变量进行更精确的控制。

  4、隐藏信息,实现细节。

  这就是【面向对象】思想中的特征之一:封装

  在面向对象编程中,封装(encapsulation)是将对象运行所需的资源封装在程序对象中--基本上,是方法和数据。对象是"公布其接口"。其他附加到这些接口上的对象不需要关心对象实现的方法即可使用这个对象。这个概念就是"不要告诉我你是怎么做的,只要做就可以了。"对象可以看作是一个自我包含的原子。对象接口包括了公共的方法和初始化数据。

赞(10)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程