资料抽象与封装(Data Abstraction vs Encapsulation)

人们经常会被资料抽象和封装混淆,把抽象的概念当作封装或信息隐藏。事实并非如此。以下定义来自 ISO/IEC/IEEE 24765:2017 系统和软件工程 — 词汇。

资料抽象(Data Abstraction)

  1. 通过定义资料类型及其相关功能特徵并忽略表示细节来提取资料本质特徵的过程
  2. (1)中的过程的结果

封装(Encapsulation)

  1. 软件开发技术,包括在模块内隔离系统功能或一组资料和对这些资料的操作,并为模块提供精确的规范
  2. 对类的职责的名称、含义和值的访问与对其实现的访问完全分开的概念 [IEEE 1320.2-1998 (R2004) IEEE IDEF1X97 概念建模语言语法和语义标准 (IDEFobject),3.1。 54]
  3. 的想法,一个模块具有一个外面是不同於其内部,它有一个外部接口和内部执行

资讯隐藏(Information Hiding)

  1. 一种软件开发技术,其中每个模块的接口尽可能少地透露模块的内部工作,并且防止其他模块使用模块接口规范中没有的模块信息
  2. 将设计或实现决策包含在单个模块中,以便对其他模块隐藏该决策

资料来源: Wentz Wu 网站
My Blog: https://choson.lifenet.com.tw/


<<:  Javascript档案中使用Django template 变数

>>:  在 Fedora 34 上安装官方呒虾米的 iBus 表格档 (影片录制步骤)

Day 26 Docker-Compose nginx + flask container with filebeat-another structure

Day 26 Docker-Compose nginx + flask container with...

14. 解释 Event bubbling & Event delegation

Event Bubbling 定义 Event bubbling跟操作DOM元素的事件有关,是指当子...

IT 铁人赛 k8s 入门30天 -- day18 Task Configure Default Memory Requests and Limits for a Namespace

前言 今天要完成的项目 k8s Task: Memory-default-namesapce 这个 ...

【Day26】快速乘法器的实作(Booth演算法)

为什麽要自己写乘法器? 这篇会来教大家写一个乘法器,那麽你可能会想:为什麽会需要乘法器呢?像我在 q...

【在 iOS 开发路上的大小事-Day14】Firebase 的登入验证服务介绍

前情提要 在前一篇有提到说,Firebase 有提供许多服务供开发者使用 登入验证服务算是蛮常会被使...