面向过程

面向过程概念:是一种编程思想,就是分析出解决问题所需要的步骤,然后用方法把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
通过下面造车案例了解
面向过程特点:开发周期慢,但是性能高
假设我要造辆车,就需要以下步骤完成:
step1. 设计画图
step2. 找矿=>挖矿=>炼铁=>打铁=>制作车体
step3. 生产发动机、变速箱等
step4. 养牛=>庖丁解牛=>(如果没解好,牛皮破了—>重养)牛皮=>座椅
step5. 种树=>炼橡胶=>轮胎
step6. 组装
step7. 测试

面向对象

面向对象概念:就是一种编程思想,是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
通过下面造车案例了解
面向对象的思想:专业的人做专业的事情,责任分离,做一个完整的事情,是由多个团队组成,不需要亲力亲为(优点:开发周期快,它的性能较低)
假设我要造辆车,就需要以下步骤完成:
step1. 设计画图=>保时捷设计所
step2. 原材料:发动机=>秋名山神车五菱发动机;
变速箱=>巨力三轮车
24速手动变速箱;
轮胎=>青岛双星牌;
底盘=>兰博基尼大牛;
座椅=>香奈儿
step3. 组装=>东莞代工厂
step4. 贴牌=>Step5. 测试=>C-NCAP=>10星安全法兰保牌


通过下面五子棋案例了解 例如五子棋,面向过程的设计思路就是首先分析问题的步骤: 1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判断输赢, 5、轮到白子, 6、绘制画面, 7、判断输赢, 8、返回步骤2, 9、输出最后结果。 把上面每个步骤用分别的函数来实现,问题就解决了。

而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为
1、黑白双方,这两方的行为是一模一样的,
2、棋盘系统,负责绘制画面,
3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。


那么,面向对象和面向过程哪种好呢?各有各个好 面向对象和面向过程都是软件开发的一种编程思想,要真正的理解一种编程思想,或者说应用在实际的开发设计中,并不是看几本书,听我说几句就能搞定的事情,需要先了解,在实际开发中应用,这样不断的思考分析、积累,从而达到理解。 举个事例,现在我手上接了一个500W的项目,接下来我需要完成这个项目,现在我有两个选择:第一是自己一人开发;第二是组建团队或者说外包。 第一,自己一个人独立开发。那么我需要做的事情可能就包括了:需求搜集、分析,原型设计,项目架构设计,编码实现,项目测试,项目实施等等。其中每一件事情都必须亲力亲为,感觉心里倒也踏实,不过这个过程可能是这样:

哈哈,接了个单高高兴兴敲代码!!

丫,咋还出bug了呢,纳尼…

不会吧,我都调试3个通宵了…

糟糕,我要崩溃了…

算了,我想睡一会儿(安息吧!)

第二,组建团队开发

有了自己的团队之后,就可以不用再陪客户喝茶、吃饭、聊天、(售前售后);不用再排异常、找bug、调网络(攻城狮);不用再反复修改设计方案版本(射鸡湿)。那么我现在做什么呢?当然是数钱啦(嘿嘿…纯洁的笑容)。
其实我现在做的就是管理好我的团队,分配好任务,控制项目进度等,在整个过程中充当指挥者的角色。
上面的两个事例第一种是面向过程的做事方式,第二种是面向对象的做事方式。通过些列举的案例从面向对象某一些方面的特征来简单的让大家有一个认识而已,更深入地理解面向对象还需要在大量的编程实践中自己亲自去体会。

理解面向对象编程思想相关推荐

  1. java 以一个例子来理解面向对象编程思想

    在面向对象的编程中,面向对象的应用是检验你对现实中实际物体和及其关系的抽象能力.在实际编程过程中,你的能力并不是你掌握了多少新的技术,而是对你当前问题的认识的深度,当你理解的足够深的时候,你的框架就出 ...

  2. js_高级_面向对象编程案例---理解面向对象编程思想很重要

    1.使用面向对象的方式来做这个案例---注意:面向对象是面向过程的封装,不是完全替代了面向过程 案例一:随机生成小方块 思考:1.这个案例里可以抽象出哪些对象---方块对象 2.随机生成颜色.随机生成 ...

  3. Java学习——面向对象编程思想

    目录 一. 基本概念 二. 面向对象与面向过程的区别 三. 面向对象程序设计的类与对象 3.1 对象 3.2 类 四. 面向对象的四大特征 4.1 抽象 4.2 继承 4.3 封装 4.4 多态 1) ...

  4. 我们程序员眼中的对象-看完华华的文章妈妈再也不担心我找不到对象了-Java面向对象编程思想理解系列(1)

    大家好!!!我叫霜华,是一个帅到没天理 骚里骚气,热爱人生与绿色 是一个不像程序员的程序员 作为一个在java这门领域沉迷一年半的人,如今在技术栈广度和深度 还是业务能力在客观层面讲确实进步迅速 (可 ...

  5. 如何理解Python 面向对象编程思想

    Python 面向对象编程思想 1. 宽泛的面向对象的概念 举例说明 面向过程:做一件事情,从头到尾,每一个细节都要关注,重点在于过程 面向对象:做一件事情,用对象去做,不关心细节和过程,万物皆对象 ...

  6. 面向对象编程思想概览(三)继承

    一.简介 本讲以大家耳熟能详的<西游记>中的唐僧师徒四人为例,介绍了类的继承的概念和实现方法,总结了继承的特性和优点,帮助同学们理解面向对象编程中继承的用法,进而掌握面向对象程序设计的基本 ...

  7. 面向对象编程思想 以及类与对象

    一.面向对象编程思想 众所周知,我们常见的编程思想有面向过程和面向对象两种,像我们最基础的c语言,就是一种以过程为中心的编程思想,不关注具体的事件和对象而是针对于解决问题的思路和目标,这种编程思想由于 ...

  8. 基于STM32F103移植华为LiteOS_任务挂起与恢复_面向对象编程思想之按键状态机

    华为LiteOS_任务挂起与恢复_面向对象编程思想之按键状态机 因为在做华为LiteOS任务挂起和恢复需要使用到按键去触发任务挂起和恢复动作,因为我就萌发出使用状态机这种架构做一个按键检测触发.回想已 ...

  9. 面向对象编程思想及入门知识

    这几天在调程序,所以想写写自己对"面向对象编程"的一些理解,希望对打算入门计算机编程的同志们有所帮助.之前,好几个师弟问过我,C++与C有什么区别,学习面向对象语言需要掌握哪些基础 ...

最新文章

  1. htc one m7刷Linux,HTC One M7刷机教程 HTC One M7线刷教程
  2. 大数据环境下数据科学的知识体系
  3. struts2+spring3+hibernate3整合(二)转载
  4. gradle 的cas 转maven_Gradle 历险记(二):从 maven 到 gradle 迁移的一些坑
  5. foxmail卡顿_Foxmail
  6. nginx整合php+lua+oracle环境搭建
  7. 51nod 1536不一样的猜数游戏 思路:O(n)素数筛选法。同Codeforces 576A Vasya and Petya‘s Game。
  8. [SQL Server]树形结构的创建
  9. SAP Kyma上mqtt前缀的endpoint
  10. Java 8:对集合中的值进行排序
  11. 查找任意数目参数的最大值
  12. 自定义字体 (暂不支持中文)
  13. SCOPE 中 SPFILE、MEMORY、BOTH 的小小区别
  14. 高效集成连接管理与平台运营 中琛物联赋能智慧城市建设
  15. java int a=b指向_java里int a=3,给a赋值的时候,是给它3的地址,还是直接赋值二进制3?...
  16. c语言按照字节读取任何文件,【文件操作】【按字节读取】求鉴定问题……
  17. VS2017安装方法
  18. 脱硫塔发生堵塞,会产生什么影响?怎么应对?基于钙法、镁法、双碱法、氨法脱硫技术比较分析
  19. k8s集群安装traefik 2.x (保证成功版)
  20. 惠州龙门大米飘香 国稻种芯-中国水稻节:广东乡村振兴样板

热门文章

  1. RTD LCD/OLED显示芯片系列
  2. python开发的游戏怎么赚钱_什么是现金流游戏_怎么赚钱_人生目标
  3. StackExchange.Redis官方文档(四)【键、值以及通道】
  4. SQL 求TOP N(多种解法)
  5. 网络通信优化-传统IO流及如何优化IO操作
  6. mysql myisam 并发_MySQL的myisam解决并发读写解决方法
  7. Linux useradd命令详解
  8. ORACLE 10046 10053 EVENT
  9. mooc作业怎么上传附件_当下不考虑5G,坚果Pro3与一加7t,你怎么选?
  10. 电脑维修中的八先八后