(以下内容有从网上复制的他人内容,但我忘记从哪看到的了,如有侵权请告知)

面向对象软件开发的一个基本方法就是抽象,到底什么是抽象呢?

抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。

例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。 得出水果概念的过程,就是一个抽象的过程。

要抽象,就必须进行比较,没有比较就无法找到共同的部分。 共同特征是指那些能把一类事物与他类事物区分开来的特征, 这些具有区分作用的特征又称本质特征。 因此抽取事物的共同特征就是抽取事物的本质特征,舍弃不同特征。 所以抽象的过程也是一个裁剪的过程,不同的、非本质性的特征全部裁剪掉了。

所谓的共同特征,是相对的,是指从某一个刻面看是共同的。 比如,对于汽车和大米,从买卖的角度看都是商品,都有价格, 这是他们的共同的特征,而从其他方面来比较是,他们则是不同的。 所以在抽象时,同与不同,决定于从什么角度上来抽象。 抽象的角度取决于分析问题的目的。

在软件开发过程中, 识别稳定的需求、识别核心的需求、识别概念性的需求、 设计系统的架构、定义系统中构件之间的接口关系等等都是抽象的过程, 都是反应系统的本质特征的过程。 抽象的,才是稳定的,才是永恒的。

抽象的反义词是具体。 人员往往会说:“你讲的太抽象了,能不能讲的具体一点?”在开发语言中, 有抽象类,有具体类,具体类可以继承自抽象类,可以实例化。 抽象类可以派生出众多的不同的具体类。所谓:“一生二,二生三,三生万物”。 系统的稳定体现在抽象类,系统的变化体现在具体类。抽象类的层次要高于具体类。 系统因抽象而稳定,因抽象而生动。

编程中怎么理解抽象的概念相关推荐

  1. 什么叫抽象,编程中怎么理解抽象的概念。

    面向对象软件开发的一个基本方法就是抽象,到底什么是抽象呢? 抽象是从众多的事物中抽取出共同的.本质性的特征,而舍弃其非本质的特征. 例如苹果.香蕉.生梨.葡萄.桃子等,它们共同的特性就是水果. 得出水 ...

  2. Objective-C向面向对象编程中添加了一个新概念:类别(categor)。

    类别 Objective-C向面向对象编程中添加了一个新概念:类别(categor).类别被设计用于解决这样的问题:基类被认为是很脆弱的,即便是看似无害的改动也不能引入,否则可能会破坏更复杂的派生类. ...

  3. 并发编程中你需要知道的基础概念

    多线程是Java编程中一块非常重要的内容,其中涉及到很多概念.这些概念我们平时经常挂在嘴上,但是真的要让你介绍下这些概念,你可能还真的讲不清楚.这篇博客就总结下多线程编程中经常用到的概念,理解这些概念 ...

  4. 我对响应式编程中Mono和Flux的理解

    1. 前言 很多同学反映对响应式编程中的Flux和Mono这两个Reactor中的概念有点懵逼.但是目前Java响应式编程中我们对这两个对象的接触又最多,诸如Spring WebFlux.RSocke ...

  5. 函数式编程中的重要概念

    函数式编程中的重要概念 函数式编程范式的意义 函数类型与高阶函数 部分函数 柯里化 闭包 递归 记忆化 原文地址 函数式编程范式的意义 在众多的编程范式中,大多数开发人员比较熟悉的是面向对象编程范式. ...

  6. AQS理解之五—并发编程中AQS的理解

    AQS理解之五-并发编程中AQS的理解 首先看下uml类图: AbstractOwnableSynchronizer 这个类定义是提供一个创建锁的基础,设置一个排它线程,帮助控制和监控访问. 先看下A ...

  7. socket编程中常见的概念问题!

    socket编程一般指的就是网络编程,常见的服务端和客户机都是必不可少的,今天小千就来给大家介绍一下socket编程中常见的概念问题. 一.常见传输协议 1.tcp协议 TCP (Transmissi ...

  8. java中对象 引用的概念_java中的对象 方法 引用 等一些抽象的概念是什么意思呢?...

    2020-03-14 最近这一段时间有点忙,好久都没有更新博客了,之后我会一直坚持下去的,和大家一同进步的. 这段时间一直在学java,相信刚开始学习java的小白,刚开始接触那么些抽象的概念一定和我 ...

  9. 函数式编程中的副作用概念

    前言 为了清楚起见,请记住,副作用不是必需的坏事,有时副作用是有用的(尤其是在函数式编程范式之外). 今天聊一聊函数式编程中的隔离思想,它所想隔离的就是"副作用" 我们先从其他角度 ...

  10. 在java中等等什么意思_java中的对象 方法 引用 等一些抽象的概念是什么意思呢?...

    2020-03-14 最近这一段时间有点忙,好久都没有更新博客了,之后我会一直坚持下去的,和大家一同进步的. 这段时间一直在学java,相信刚开始学习java的小白,刚开始接触那么些抽象的概念一定和我 ...

最新文章

  1. 数据库:数据库优化(一)
  2. java 学习心得 (近期的)
  3. 30个数据可视化超级工具_Python5个数据可视化工具
  4. qt连接mysql创建表_Qt编译mysql以及创建表后进行导入操作
  5. java ftp 连接超时时间_ftpClient的连接超时设置(setConnectTimeout,setSoTimeout) | 学步园...
  6. MySql 创建utf-8格式的数据库
  7. bee 字符串转int_beego中gbk和utf8编码转换问题
  8. iOS开发总结(A0)- Localization
  9. 调查全球 98,000 名程序员发现,PHP 遭厌弃,前端岗已饱和!
  10. 教你制作自己的linux
  11. 软件测试工程师的核心竞争力是什么
  12. ubuntu之修改登陆密码
  13. mysql数据库笔记 约束_MySQL数据库笔记四:MySQL的约束
  14. [导入]使用ASP.NET AJAX的注意事项
  15. 重新回来,介绍一下Android Studio 如何继承腾讯云直播 以及 腾讯云通信
  16. 编译器处理虚函数的原理
  17. c语言解三色旗问题加注释,C语言经典算法——三色旗问题
  18. 2018VMware虚拟机安装ghost win7系统正确方法
  19. 实验三 基于A*算法的迷宫游戏
  20. 百度AI的2020:新基建铺路,硬实力出圈

热门文章

  1. deepfacelab SAE 模型训练参数详解
  2. gta5服务器端文件夹,GTA5路径在steam哪个文件夹里面
  3. postgresql 清理磁盘空间
  4. latex大括号 多行公式_【干货】四招教你如何快速写公式!
  5. 如何让图片按照1 2 3排列不带括号
  6. zigbee 协调器与终端通信问题
  7. 222Beta多样性限制性排序CPCoA/CCA/RDA/LDA
  8. word 制作流程图
  9. LINUX下截图快捷方式
  10. 2021-2027全球与中国大数据工程服务市场现状及未来发展趋势