某日小明上数学课,他的老师给了很多个不同的直角三角板让小明用尺子去量三角板的三个边,并将长度记录下来。两个小时过去,小明完成任务,把数据拿给老师。老师给他说,还有一个任务就是观察三条边之间的数量关系。又是两个小时,聪明的小明连蹦带跳走进了办公室,说:“老师,我找到了,三条边之中有两条,它们的平方和约等于另外一条的平方。”老师拍拍小明的头,“你今天学会了一个定理,勾股定理。它就是说直角三角形有两边平方和等于第三边的平方和”。

另一个故事,某日老师告诉小明“今天要教你一个定理,勾股定理。”小明说,“什么是勾股定理呢?”“勾股定理是说,直角三角形中有两条边的平方和等于第三边的平方。”然后老师给了一大堆直角三角板给小明,让他去验证。两个小时后,小明告诉老师定理是正确的.

第一个故事说的是自底向上的设计分析方法,第二个故事说的是自顶而下的设计分析方法。

我们用领域建模DDD这种方式,从一个一个用例去推导然后建模一个的业务的方式是自底向上的方式。

而我们在抽象的角度去定义问题,然后问题拆解,这是一个自顶向下的方式。自顶向下最重要的是定义问题,而如何定义问题的前提是知道问题的定义。

阿尔伯特· 爱因斯坦曾经说:“ 提出一个问题往往比解决一个问题更重要。因为解决问题也许仅是一个数学上或实验上的技能而已,而提出新的问题,却需要有创造性的想象力,而且标志着科学的真正进步。”

两种分析方法的根本区别是:自底向上的分析,是从具体到抽象;自顶向下的分析,是从抽象到具体。两种分析思路恰恰又是哲学思考问题的两大方向。

自底向上和自顶向下的区别相关推荐

  1. 【转】自底向上和自顶向下的区别

    用两个简单的例子说明一下: 某日小明上数学课,他的老师给了很多个不同的直角三角板让小明用尺子去量三角板的三个边,并将长度记录下来.两个小时过去,小明完成任务,把数据拿给老师.老师给他说,还有一个任务就 ...

  2. 红黑树 自底向上和自顶向下插入, 自顶向下删除

    本文主要参考 Mark Allen Weiss 的 Data Structures and Algorithn Analysis in Java (Second Edition) 的中译本,对其中省略 ...

  3. 【算法】归并排序:自底向上、自顶向下(分治思想)的实现

    [算法]归并排序:自底向上.自顶向下(分治思想)的实现 1 自底向上 算法 import java.util.Arrays;/*** 归并排序:自底向上*/ public class Sort {/* ...

  4. 分治法 —— 快速排序和归并排序(自底向上和自顶向下)

    问题: 对于给定的含有n个元素的数组a,对其按元素值递增排序. - 快速排序 1.基本思想: 划分:在待排序的n个元素中任取一个元素(通常取第一个元素)作为基准,把该元素放入最终元素后,整个数据 序列 ...

  5. 算法导论之贪心算法(Huffman编码和拟阵)

    贪心算法,在解决最优化问题上,通过得到子问题的局部最优解来合成问题的一个解,以局部最优选择来输出一个全局最优解. 问题要用贪心算法来求解,需满足和动态规划一样的最优子结构特征,同时还需要再每个子问题最 ...

  6. [递归]一文看懂递归

    1. 递归的定义 编程语言中,函数 Func(Type a,--) 直接或间接调用函数本身,则该函数称为「递归函数」. 在实现递归函数之前,有两件重要的事情需要弄清楚: 递推关系:一个问题的结果与其子 ...

  7. 浅谈动态规划和分治、贪心算法的区别

    一个问题必须拥有重叠子问题和最优子结构,才能使用动态规划去解决. 一.动态规划与分治算法 分治和动态规划都是将问题分解为子问题,然后合并子问题的解得到原问题的解. 但是不用的是,分治法分解出的子问题是 ...

  8. 机器视觉与计算机视觉的区别与联系

    机器视觉和计算机视觉是两个既有区别又有联系的专业术语. 机器视觉(machine vision)偏重于计算机视觉技术工程化,能够自动获取和分析特定的图像,以控制相应的行为.计算机视觉(computer ...

  9. 模块化程序设计之自顶向下、逐步求精

    模块化程序设计最早出现在汇编语言中,在结构程序设计的概念提出以后,逐步完善并形成了模块化的程序设计方法.按照模块化程序设计思想,无论多么复杂的任务,都可以划分为若干个子任务.若子任务较复杂,则可以继续 ...

  10. 五大算法设计思想,你都知道吗?

    作者:叫我不矜持 链接:https://www.jianshu.com/p/bf8b0668d191 一.分治法 1.概念: 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分 ...

最新文章

  1. 群雄逐鹿,谁将赢得5G时代的物联网战争?
  2. [实现]Javascript代码的另一种压缩与加密方法——代码图片转换
  3. 【正一专栏】读《摆渡人》——原来你在这里
  4. 德哥:从Oracle DBA到PostgreSQL布道者
  5. What are definitions of ​Model, Inference and Algorithm and its associations ?
  6. iOS开发中对NSArray或者NSMutableArray中的内容排序
  7. Web Application Security 网络应用程序安全 - (二)2010年网络安全威胁排行榜TOP 10...
  8. python编写函数_如何用Python编写自己喜欢的R函数
  9. excel保存快捷键_电脑技巧篇之快捷键
  10. 电子相册系统(七)查看原图
  11. WebStorm介绍
  12. python爬虫,短短25行代码批量下载豆瓣妹子图片
  13. (阅读笔记)脑中线偏移测量及其自动化技术与算法综述
  14. 手机邮箱怎么发送电子邮件?163邮箱登陆界面好看么?
  15. c#实现 正弦sin、反正弦arcsin,正切tan、反正切arctan:求角度值
  16. 如果VxRail要发朋友圈
  17. 中兴力维喜获“中国智慧城市创新应用金奖”
  18. 钢铁是怎样炼成的之彭明盛
  19. 视频服务器托管如何选择数据中心
  20. arduino与语音模块LDV7(LD3320)的串口通信实现简单语音控制

热门文章

  1. OpenCore 启动菜单界面美化增加gui界面
  2. 预加重——语音信号处理之一
  3. f1c100s 源码_全志 F1C100S/200S Ucos Kile MDK emwin 408M-ARM9内置DDR 源码
  4. Qt界面开发(一)(各种控件以及图表)
  5. qgis打开shp数据_关于QGIS打开SHP文件属性表乱码
  6. mysql导出表数据到文件_MySQL导出数据到文件中的方法
  7. arcgis创建城市路网
  8. 分布式与微服务☞web组件kafka
  9. Delphi 导出Excel功能
  10. extjs6整合到web项目中