有一句名言:“软件领域的任何问题,都可以通过增加一个间接的中间层来解决”。分层架构的核心其实就是抽象的分层,每一层的抽象只需要而且只能关注本层相关的信息,从而简化整个系统的设计。

设计与分析的过程就是不停的进行抽象和封装,并且确定各个系统实体的细节。抽象是指将业务抽象为软件领域的元素(系统、模块或类);封装则是指定义元素的边界,隐藏实现,开放接口。

抽象,是指从众多的事务中抽取出具有共同的、本质性的特征作为一个整体。是共同特质的集合形式。
封装,是将通过抽象所得到的数据信息和操作进行结合,使其形成一个有机的整体。对内执行操作,对外隐藏细节和数据信息。
两者的区别,在于抽象是一种思维方式,而封装则是一种基于抽象性的操作方法。我们通过抽象所得到数据信息及其功能,以封装的技术将其重新聚合,形成一个新的聚合体,也就是类。或者说,两者是合作者的关系,如果没有抽象,封装就无从谈起,如果没有封装,抽象也将没有意义。

https://blog.csdn.net/dengminghli/article/details/70596498?locationNum=4&fps=1

转载于:https://www.cnblogs.com/softidea/p/9595200.html

谈谈封装和抽象的区别相关推荐

  1. 谈谈Java与C#的区别

    先听一个故事:Java与C/C++/C#的历史渊源 1972年的某一天,一个被称为"上帝的编程语言"的工具就此诞生,它是基于B语言的改进,并被正式命名为C语言.凭借着自身的优秀特性 ...

  2. 封装,抽象,继承,多态

    面向对象编程是一种编程范式或编程风格.它以类或对象作为组织代码的基本单元,并将封装.抽象.继承.多态四个特性,作为代码设计和实现的基石 . 封装(Encapsulation) 封装也叫作信息隐藏或者数 ...

  3. 七:Java之封装、抽象、多态和继承

    本文章介绍了关于Java中的面向对象封装.抽象.继承.多态特点 Java面向对象主要有四大特性:封装.抽象.继承和多态. 一.封装 封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的总体, ...

  4. 用Javascript实现面向对象编程(封装,抽象,继承,多态)

    OO的特点:封装.抽象.继承.多态. 封装:在 面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类,其中包括属性和行为(在Java中就是方法),就好像人类,可以具有 name, ...

  5. c语言如何编辑一个长方形,C语言对象编程第一弹封装与抽象(建立长方形对象)...

    前言 封装与抽象 https://m.toutiao.com/is/J92HgV9/ (建立一个rect.h的头文件声明对外提供的几个接口获取长方形对象) 封装性是面向对象编程的三大特性(封装性.继承 ...

  6. 【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性

    回看最初的目标:[Java设计模式 学习目标及大纲]高质量代码的标准及实现路径在这篇Blog里我们明确了什么是高质量的代码:易维护.易读.易扩展.灵活.简洁.可复用.可测试,也知道高质量代码的达成路径 ...

  7. 理论十二:如何通过封装、抽象、模块化、中间层等解耦代码?

    .对于大型重构来说,今天我们重点讲解最有效的一个手段,那就是"解耦".解耦的目的是实现代码高内聚.松耦合.关于解耦,我准备分下面三个部分来给你讲解. ● "解耦" ...

  8. 理论二:封装、抽象、继承、多态分别可以解决哪些编程问题?

    王争<设计模式之美>学习笔记 文章目录 理论二:封装.抽象.继承.多态分别可以解决哪些编程问题? 封装(Encapsulation) 抽象(Abstraction) 继承(Inherita ...

  9. 【每日一题~001】谈谈synchronized与ReentrantLock的区别?

    每日一题,共同成长,见证奇迹,加油老铁 问题:谈谈synchronized与ReentrantLock的区别?思考:2分钟...答案如下:1.底层实现:1)synchronized 是JVM层面的锁, ...

最新文章

  1. 用好ASP.NET 2.0的URL映射
  2. Silverlight专题(WatermarkedTextBox使用)--摘录 很受用
  3. python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法
  4. 在MyEclipse中更换或修改svn的用户名和密码
  5. 一年代码功能点的创新性怎么写_查新报告的查新点(创新点)写法,参考
  6. 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化...
  7. oracle索引大小暴增_Oracle创建索引前估算索引大小(dbms_space.create_index_cost)
  8. 网络人工智能研究方向有哪些?
  9. centos 7 8安装quaartus 遇到的问题及解决方法
  10. 使用frida获取微信EnMicroMsg.db 数据库密码
  11. 第五届电气学院比赛之XXX——数码管显示模块
  12. cmd命令 查询硬盘序列号,设备序列号,MAC地址,操作系统及安装时间,以及与AIDA64软件的对比
  13. 语音信号处理基础知识-常用特征及预处理
  14. win10调整鼠标滚轮方向
  15. cfree mysql_如何配置CFree才能开发MySql数据库应用
  16. Qt程序退出QThread: Destroyed while thread is still running问题
  17. 椭圆形建筑——逸夫演艺中心
  18. 怎么在搜索计算机学报的论文,计算机学报方面论文题目 计算机学报论文标题如何定...
  19. linux mono 安装步骤,如何在Ubuntu 18.04上安装Mono
  20. 《Android自定义控件》RulerView,仿唯品会身高、体重等标尺,尺码控件,滑动可修改刻度值

热门文章

  1. 推特图片搜索php,php – Twitter搜索API – since_id和max_id可生成更多结果
  2. CTFHub-Web-文件上传
  3. 2022-2028年中国光纤放大器行业投资机会分析及市场前景趋势报告
  4. C#处理生日提醒功能,最全面代码。
  5. python获取日期
  6. MySQL 8.0.11 不区分大小写启动报错解决
  7. 基于php的家装主题装修网站
  8. 金升阳:研发领跑 以技术推动市场
  9. 国家市场监督管理总局-食品安全抽检公布结果查询系统数据抓取
  10. 遥感图像计算机自动分类原理,遥感图像计算机自动识别ppt课件.ppt