• ALevel CS里的分解和抽象


    大纲一览,引用自第9单元,23页

    1、Show an understanding of abstraction 

    Needfor and benefits of using abstraction 

    Describe the purpose of abstraction, Produce an abstract model of a system by only including essential details 

    2、Describe and use decomposition 

    Break down problems into sub-problems leading to the concept of a program module (procedure / function) 

    大纲里要求我们掌握抽象和分解的概念,事实上,历年真题里也有很多反应这两种方法的题目,抽象和分解也是我们解决问题的一种思路,那么什么是抽象?什么是分解呢? 

    315690e20498e9be989b165174e46122.jpeg

    抽象 abstraction

    1、抽象是指看问题时过滤调所有不必要的信息。识别问题的关键部分有助于人们找到问题的解决办法。

    2、基本要领

    抽象是确定对象或者系统的哪个元素是必要的特征的过程,没有他们,物体就不会是他们本身的样子。

    西班牙艺术家毕加索经常画抽象的肖像,画中人物的脸部看起来与现实世界完全不同,然而,由于他们有一张脸的基本特征-眼睛鼻子嘴巴,所以我们可以认出那是一张脸。

    即使没有细节,人们也能认出来以上图片是个房子。

    什么是不必要的细节?

    房子必要的细节是墙壁,屋顶,门和窗户,像窗户的颜色或者数量之类的东西并不是必不可少的细节。

    抽象关键:找到必要的细节

    抽象的诀窍是在基本信息和非基本信息之间找到平衡,例如在传递任务的指令时,步骤太多就会引起混乱,步骤太少就可能无法完成任务。

    比如,查找某个序列中的特定值,计算机程序员为了程序需要,将查找步骤按照正确的顺序排列,从而解决这个问题。

    洗衣机的控制步骤就是一个抽象的例子,使用洗衣机洗衣服时,我们不必确切了解洗衣机是如何工作的,只需要打开洗衣机,然后按下所需要的模式即可。

    案  例

    链接:真实的世界

    7b95bf4b30e37fa138e79d32d9a545b7.jpeg

    许多列车和地铁的现代地图就是抽象的例子,早期的地图准确地显示了一条铁路的所有路线,其中还包括了车站之间的距离,然而这让人很难阅读,因为他们提供了乘客不需要的信息,如确切路线等,并且使乘客很难看到他们真正需要的信息,就比如线路上的车站顺序

    新的地图简化了信息,所有乘客可以看到从A到B站最高效的路径。

  • 相关阅读:
    数据结构时间复杂度(补充)和空间复杂度
    【LeetCode】快乐数
    小型架构实验模拟
    # 技术栈知识点巩固——消息队列
    【Linux从0到1】第十七篇:高级IO
    机器学习介绍与分类
    leetcode 347.前 K 个高频元素
    进阶C++__STL__容器list使用方法【简单易懂】
    【微服务】Spring条件注解从使用到源码分析详解
    springboot 集成阿里云 OSS
  • 原文地址:https://blog.csdn.net/Alevel3/article/details/126250761