大话设计模式中,讲到了“超模大赛”,“面向对象”先生,一登台就从oo的诞生开始,最后讲到了“面向对象”。接触面向对象有一段时间了,但还没有真正从实践中领悟到他。

下面参照一个经典五子棋例子,认识认识他的........

概述分析:

面向过程:分析出解决问题所需要的步骤,用函数步骤一步一步的实现。

面向对象:建立对象,定义它的责任,履行责任,不是为了完成一个步骤。

实例分析

五子棋

用面向过程思路:

发问:------“你先告我,步骤是什么?”

1.开始 2.黑棋先走3.记录棋局4.判断胜负5.白棋走6.记录棋局7.判断胜负8.返回步骤2

面向对象思路:

发问----------”你先告我,都有谁啊?从哪里来的?都是干啥的?“

对象1,棋子双方

对象2.棋盘系统,负责记录棋局

对象3.规则系统,负责判定输赢,和监督游戏规则

对象1负责执行用户操作,然后告诉对象2去记录棋局,显示变化;对象3负责游戏中监督,和对棋                  局胜负的判断

假如1:加入悔棋功能,对于面向过程,可能会对一连串的步骤进行改动,这就更改了业务流程,需要大规模调整。

对于面向对象,只要将对象2改动就行了,不用担心前后的逻辑判断,改动只是局部的。

这就避免了业务流程的改变,是系统可以扩展。

假如2:改为围棋游戏,面向过程恐怕,要将全部的业务流程进行改变,因为,每一步都有五子棋的身影。

面向对象,则可以只将对象1稍作改动,将对象3的规则进行改动,下棋的大致步骤都没有变                        化。

可以看出:

面向对象是以功能划分问题,而不是步骤。

从面向过程到面向对象,其实就是为了应对需求的复杂化。

总结:面向对象中表面看每个步骤中只有一个入口,一个接口,当出现了两个假如时,要不去更改其中一个步骤,但这个步骤可能会关联多少个数据,怎么办?要不就更改整个业务流程,要知道,整个改变流程这会付出很大的代价!而面向对象,将可能的变化封装起来,独善其身,使变化不至于产生太大影响。

面向对象与面向过程小结相关推荐

  1. 编程思想:面向对象和面向过程的区别与联系

    前言 何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中.我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起.而这种茫然,其实就是对这两大编程思想 ...

  2. 面向对象与面向过程区别

    面向对象:用线性的思维.与面向过程相辅相成.在软件开发过程中,宏观上,用面向对象来把握事物间复杂的关系,分析系统.微观上,仍然使用面向过程. "面向过程"是一种是事件为中心的编程思 ...

  3. 面向对象编程(一)——面向对象和面向过程

    面向对象(Object Oriented),通过对象来封装我们的数据.(组织代码,封装数据) 面向对象和面向过程: 面向过程:procedure oriented programming,POP 面向 ...

  4. python面向对象和面向过程的区别_Python11-01_面向对象----面向对象和面向过程的区别...

    面向对象编程 面向对象(OPP)编程思想主要针对大型软件设计而来的.面向对象编程使程序的扩展性更加强,可读性更好.使得编程可以像搭积木一样简单. 面向对象编程将数据和操作数据的方法封装到对象中,组织代 ...

  5. 面向对象和面向过程,python中的类class,python中程序的入口——main方法,

    1.程序入口,让main显现出来: print(__name__)#__name___是模块中的隐藏字段,当前模块运行的函数名 if __name__ == __main__ __main__() # ...

  6. 详解:面向对象与面向过程的比较 类之间的关系:泛化、实现、依赖、关联、聚合、组合

    文章目录 1.面向对象程序设计概述 1.1 面向对象程序设计 1.2 传统结构化程序设计 1.3 面向对象与面向过程举例 2.类之间的关系 2.1 泛化/继承 2.2 实现 2.3 依赖 2.4 关联 ...

  7. 面向对象与面向过程在软件开发中的应用

    今天设计一个功能模块,深入进去后突然对面向对象和面向过程有了些认识.赶紧记下来以免忘了. 在设计和开发一个软件或是功能的时候,眼光或是站的位置决定了你对软件的理解程度.如果你 以软件的设计者的角度你会 ...

  8. python 递归函数_Python尚学堂高淇|P82P86面向对象和面向过程的区别LEGB规则nonlocal_global递归函数阶乘计算案例...

    P82-递归函数-阶乘计算案例 #使用递归函数计算阶乘def factorial(n):if n==1:return 1else:return n*factorial(n-1)result=facto ...

  9. 面向对象和面向过程的区别个人觉得是目前解释最好的

    面向对象 首先,一言不和先百度,得到如下定义: 一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类.继承,帮助人们实现对现实世界的抽象与数字建模. 我们知道,编写 ...

最新文章

  1. 100行php代码实现加密端口转发
  2. 巧用Mono.Cecil反射加载类型和方法信息
  3. bms_output.put_line使用方法
  4. 【快报】基于K2 BPM的新一代协同办公门户实践交流会
  5. 天猫精灵方糖拆解报告和芯片详解
  6. org.apache.jasper.JasperException: Unable to compile class for JSP:
  7. Ubuntu 安装调整工具移动 Launcher 启动器位置
  8. 型管件的作用_管道工程基础 - 管件和管道附件的布置规定
  9. Windows2008+MyEclipse10+Android开发环境搭配
  10. 如何选择商业智能BI工具
  11. 管理_立项任务书怎么写——毛宇菲
  12. 复数fft的时间复杂度_DFT算法与FFT算法的优劣分析
  13. 女 java转行项目经理_28岁的出路:我转行做了项目经理之后……
  14. Wireshark: Getting Started
  15. Intel TBB 开发指南 3 parallel_reduce
  16. Android 超高仿微信图片选择器
  17. 【程序厨】学习 Redis ,可以看看这个
  18. 位图与普通图片的区别
  19. ASEMI整流桥GBU410参数,GBU410介绍,GBU410代换
  20. iOS 使用Zebra打印机打印标签

热门文章

  1. js 正则匹配字符串中最后一个字的代码
  2. python怎么把特殊字符打出来_python 过滤特殊字符 (emoji)
  3. python收集论文数据造假_现在的学术论文里存在数据造假的情况吗?
  4. 8月产品升级,为新基建发展注入新动能
  5. 传统企业的人才们,先别忙着跳“互联网”!
  6. MySQL 查询优化(八):分组查询该怎么优化?
  7. printf(XXX YYYY... ZZZZ, ...) is OK
  8. 【运维规划、管理、体系建设】一位女运维的自述:三年为公司节省十亿元现金,我们怎么做到的
  9. HTML5+规范API-拍照功能
  10. java问题收集 | 限时抢购