C++ 封装 & 信息隐藏

  • 概述
  • 类的公用接口
  • 类的私有实现
  • 方法与消息

概述

封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念. 这样能避免受到外界干扰和误用.

数据隐藏包括数据封装和数据抽象两部分. 数据封装是一种把数据和操作数据的函数捆绑在一起的机制. 数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制.

类的公用接口

C++ 通过类来实现封装性, 把数据和与这些数据有关的操作封装在一个类中. 在声明了一个类以后, 用户主要是通过调用公用的成员函数来实现类提供的功能, 称为消息传递.

公用成员函数是用户使用类的公用接口 (public interface), 或者说是类的对外接口. 在类外不能直接访问私有数据成员, 但可以通过调用公用成员函数来引用甚至修改私有数据成员.

类的私有实现

用户不必关系这些功能实现的细节, 而只需要知道调用哪个函数会得到什么结果, 实现什么功能即可. 通过成员函数对数据成员进行操作称为类的实现. 实现的细节对用户是隐蔽的. (信息隐藏)

类中被操作的数据是私有的, 实现的细节对用户是隐蔽的. 这称为私有实现. (private implementation)

类的公用接口与私有实现的分离形成了信息隐蔽. 将接口与实现分离是软件工程的一个最基本的原则.

优点:

  1. 如果想扩充累的功能, 只需要修改本类中有关的数据成员和它有关的成员函数. 程序中类外的部分可以不必修改
  2. 如果在编译时发现类中的数据读写有错, 不必检查整个程序. 只需检查本类中访问这些数据的少数成员函数

方法与消息

方法 (method) 指类的成员函数在面向对象程序理论中被称为方法, 是指对数据的操作. 一个 “方法” 对应一种操作. 只有被声明为公用的方法才能被外界所激活.

消息指对公用函数的调用. 外界是通过发 “消息” 来激活有关方法的. 调用对象的成员函数, 就是向对象发出的一个 “消息”. 通知它执行其中的方法.

面向对象的特点:

  1. 封装性: 各个对象间相对独立
  2. 抽象性: 类是对象的抽象, 对象是类的实例
  3. 继承性: 解决重用问题
  4. 多态性: 由继承产生的相关的不同的类. 其对象对同一消息会做出不同的响应

C++ 封装 信息隐藏相关推荐

  1. JS设计模式——3.封装与信息隐藏

    封装.信息隐藏与接口的关系 信息隐藏是目的,封装是手段. 接口提供了一份记载着可供公共访问的方法的契约.它定义了两个对象间可以具有的关系.只要接口不变,这个关系的双方都是可以替换的. 一个理想的软件系 ...

  2. java 隐藏了什么_JAVA程序中封装与隐藏是什么意思

    qq_遁去的一_1 隐藏就是封装吧....封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个 ...

  3. 信息隐藏(Information Hiding)原则

    信息隐藏(Information Hiding)原则 黄国强 2006-10-25 信息隐藏是结构化设计与面向对象设计的基础.在结构化中函数的概念和面向对象的封装思想都来源于信息隐藏.软件业对这个原则 ...

  4. 面向对象的特征一:封装和隐藏

    使用者对类内部定义的属性(对象的成员变量)的直接操作会导致数据的错误.混乱.或安全性问题. public class Animal{ public int legs; //动物的腿的的个数 //应该将 ...

  5. 软件工程与计算II-13-详细设计中的模块化与信息隐藏

    13-详细设计中的模块化与信息隐藏 1. 内聚和耦合 概念重要 内聚:内聚表达的是一个模块内部的联系的紧密型:包括信息内聚.功能内聚.通信内聚.过程内聚.时间内聚.逻辑内聚和偶然内聚. public ...

  6. LSB图像信息隐藏算法matlab,实验二LSB信息隐藏实验.doc

    实验二LSB信息隐藏实验.doc 实验二LSB信息隐藏实验 综合评分: [实验目的]: 掌握MATLAB基木操作 实现LSB信息隐藏和提取 [实验内容]:(请将你实验完成的项11涂"■&qu ...

  7. 设计的核心任务之二:信息隐藏

    假使说我们认同软件的构造是一个复杂的过程,那么管理这种复杂度必然需要一些技巧.而为了找出这些技巧,则需要先瞄一眼这种复杂度的基本构成. 软件的构造过程牵涉了两个最为基本的要素:一是软件,一是构造软件的 ...

  8. java bmp信息隐藏_BMP图像信息隐藏及检测

    1.实验目的 (1)了解BMP图像文件格式 (2)了解利用BMP图像文件隐藏信息的原理 (3)掌握基于24位真彩色BMP图像的文件信息隐藏方法 2.实验内容 (1)在图像数据后隐藏信息 (2)文件头与 ...

  9. [数据加密]GIS空间数据水印信息隐藏与加密技术方法[转]

    到目前为止,国内外数字水印技术的研究主要集中在图像.视频和声音等多媒体信息的版权保护上,在GIS空间数据中,通过隐藏水印信息并对其加密.压缩以实现其安全保护的研究还很少,这是数字水印技术应用的一个新领 ...

最新文章

  1. Mysql 查询主键未指定排序时的默认排序问题
  2. [2018-08-03] python开发个人资源共享网--第一天
  3. python程序员薪资-作为Python程序员,薪资一般是多少?
  4. Aux函数java,verse.aux
  5. 力扣453.最小操作次数使数组元素相等
  6. 【渝粤教育】电大中专营销策划原理与实务 (2)_1作业 题库
  7. Raki的PRML阅读笔记 第1章:Introduction
  8. Gram 矩阵及其主要性质
  9. 开关电源/LDO反馈电阻辅助计算工具PowerHelper使用介绍
  10. vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数
  11. 帮你选处理器:CPU T9500-p9500-T9400-T9300-p8700对比分析!
  12. 裸金属服务器启动之PXE与IPXE实践
  13. 【嵌入式】上学期末整理的一些知识点
  14. linux获得命令使用帮助
  15. java微信公众号自动回复文字加图片
  16. 【阿里云天池大赛赛题解析】 刷书笔记 Lesson 1 数据探索基础知识
  17. 【ARM-Linux开发】【QT开发】Couldnt load module input, no modules loaded
  18. hadoop101: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
  19. 准确率100%,阿里商旅账单系统架构设计实践
  20. pdf怎么压缩到又小又清晰?

热门文章

  1. 产品故事:一家服装厂的创新之路
  2. Stripe 2 (前缀和计数)
  3. Jedis分析一-Pipeline is currently not supported for JedisClusterConnection.
  4. u盘文件变成快捷方式怎么恢复,恢复U盘文件的五种方法
  5. Unity局部坐标与世界坐标
  6. dopra linux 补全shell,HS8546V5光猫补全Shell 改华为原厂界面
  7. Daily English-问爱好
  8. 区块链网络性能的关键衡量指标
  9. Pinta 1.6发布!在 Ubuntu 和 Linux Mint 上安装
  10. ACM / ICPC 在线OJ(Online judge)