面向对象编程,你值得拥有

沐浴录

  • 面向对象编程,你值得拥有
    • 一、一个故事带你了解 面向过程 与 面向对象 的天差地别
    • 二、面向过程到面向对象的思维转换
      • (1)面向过程
      • (2)面向对象
    • 三、总结

一、一个故事带你了解 面向过程 与 面向对象 的天差地别

你可能不知道的唐僧创业的故事
时代变了,守着铁饭碗过活的日子一去不复返了。唐僧越来越感觉生活不如意了,原来给人讲讲经就可以让自己的精神生活和物质生活得到极大的满足,现在不行了,现在是“酷”“富”“吐”这三类人生活得比较滋润。
酷,能唱的、能跳的、能吹的、能耍的,等等。只要你某一方面“酷”,就会有“粉丝儿”跟着,就会给你带来精神和物质的满足,这样的人生过得滋润。
富,即有本事赚钱的人。做个“传奇”游戏就能挣几千万,等等,各有自己的招,这样的人过得也得意。
吐,这是网络时代的新产物,能让大家为之吐槽的,像“哥哥”“姐姐”之类的,也能拿个头彩,过得逍遥。
唐僧琢磨了自己的情况,讲“酷”,不如孙猴子,怎么着都能“酷”出个样;讲“吐”,不如猪八戒,怎么着都能让人“吐”;又不想像沙和尚那样,一辈 子没啥大出息。看来只有赚个“富”字了。
于是,唐僧东拱西凑了5千块钱注册了一家公司,专营图书出版,也就是撺掇手里那些佛经。租了个小门脸,简单装饰了一下,就开始创业了。
第一天上班,感觉有点儿惨,光杆司令一个,但想到自己是老板了,还是有些得意,想着将来总会好起来的。
办公室既是营业厅,也是前台,坐在这里唐僧就开始琢磨了,该做点什么呢? 于是开始规划自己一天的工作了…
先打扫一下卫生间吧,擦擦玻璃,拖拖地,拾掇下桌椅。
刚收拾完,居委会大妈就来收垃圾处理费了,没办法,接待吧。给了钱,大妈还得唠叨几句,防火啊,防贼啊,好不容易把大妈给送走了。
接下来,该记账了,刚开业还没挣呢就花了一笔。
记完账,想想该给认识的人打个电话,也算招揽一下生意, 跑跑业务啊。 于是又打了一通电话,朋友大都很热情,很肯帮忙的样子。放下电话,唐僧又觉得啥事也没成。
到中午了,肚子开始闹情绪了,只好先安抚它吧,于是订了个盒饭吃了。
下午,唐僧百无聊赖地坐了会儿,想写点儿什么,没纸也没笔,想起来要买些办公用品,好歹是个公司啊。
买完东西,回来把账一记,时间也差不多了,就锁了门,结束了当老板的第一天工作。想想也挺好,至少自己的事自己说了算啊。
就这样,唐僧熬了三个月,每天上班,开门,打扫卫生,接待各方来的大爷大妈们,打电话联系业务,买东西,偶尔也去人才市场看看,找点儿当老板的感觉,虽然没钱招人,但总得准备着吧。日子很快就过去了,三个月一分钱没赚,倒贴出去两万块。
三不月后,猪八戒想要一套书送给“丝”儿们,这家伙几天的时间就把握住了大局,成了名副其实的“吐”星,也拥有了众多的“吐丝儿”。于是猪八戒想给他的众多“吐丝儿”点儿回报,就委托唐僧出了一本书, 要有点儿新意。这倒帮了唐僧,不但添了原有的窟座,还赚了不少。
更没想到从此一发不可收拾, 业务一单又一单,钱赚了一笔又一笔。唐僧现在最忙的不是业务,而是招聘人才。
先招个保洁,当老板了总不能自己打扫卫生吧,开门关门、打扫卫生、打水、送水都是保洁的事;再招个秘书,帮自己打理日常的业务,接电话,接待每天大爷大妈的事就归秘书干吧;再后来事情越来越多,秘书也忙不过来了,就招业务经理,招业务员,招保安,招财务,招人力资源经理。没两年的时间,公司已经有50多人了,唐僧自己也成了名副其实的百万富翁。
唐僧现在发现自己每天考虑得最多的问题就是人的问题。有人抱怨自己做的都是别人该干的事,有人抱怨别人不配合,有人抱怨别人抢了自己的事。在自己一个人的时候,一切都很简单,那时没有多少事情,所以怎么都行。现在再想单打独斗是不可能的了,现在最讲究的是管理,如何安排人,如何调整人与人的关系成为唐僧现在每天必须要解决的问题,以后公司的人还会更多,关系还会更复杂,公司也会发展得更大,这都是必然。
几年后,唐僧想自己也算小有成就,该参加个什么评选赛的。十大杰出青年是没份了,岁数太大。年度经济人物评选还不够资格,人家玩的都是亿。最后选来选去,选了最佳面向对象程序设计师。

二、面向过程到面向对象的思维转换

故事虽然没有什么现实意义,但却最好地解释了面向过程到面向对象的思维转换的过程。下面来具体分析面向过程与面向对象之间的区别。

(1)面向过程

面向过程是分析出解决问题所需要的步骤,然后用函数把这些步骤一步步地实现,使用的时候一个一个依次调用。
面向过程考虑的是我们要做什么。就像没钱的唐僧,每天考虑的事就是做什么。如下所述:
(1)打扫卫生。
 擦玻璃
 拖地
 拾掇桌椅
(2)接待客人。
 接待居委会大妈
 交垃圾处理费
 把大妈给送走
(3)记账。
(4)跑业务,打电话。
(5)买办公用品。
(6)记账。
(7)下班锁门。
这就是一个典型的面向过程的生活。总体看下来,这一天是由七件事组成的,前两件事又是由若干件小事组成的。在面向过程的程序设计中,“事”是用函数来实现的,所以我们可以把没钱的唐僧一天的生活用程序描述如下:

void CleanTheWindow(){}void CleanTheFloor(){}void CleanTheDesk(){}void Takein(){}void Pay(){}void Packoff(){}void DoCleaning(){CleanTheWindow();//清洁窗户CleanTheFloor();//清洁地板CleanTheDesk();//清洁桌子}void DoReception(){Takein();//接待Pay();//付款Packoff();//送人}void KeepAccounts(){}void DoBussiness(){}void BuySomething(){}void LockTheDoor(){}void WorkofOneDay(){DoCleaning();//保洁DoReception();//接待KeepAccounts();//记账DoBussiness();//跑业务BuySomething();//采购KeepAccounts();//记账LockTheDoor();//锁门}

从上述一段代码可以看出:
 一件事就是一个函数:

void KeepAccounts(){//记账}

 处理一件事就是调用一个函数:

   KeepAccounts();//记账

 几个小事执行下来就是一件大事:

 void DoCleaning(){CleanTheWindow();//执行清洁窗户CleanTheFloor();//执行清洁地板CleanTheDesk();//执行清洁桌子}

(2)面向对象

面向对象是把构成问题的事务分解成各个对象。建立对象的目的不是为了完成一个步骤,而是为了描述某个事务在整个解决问题的步骤中的行为。
唐僧能从没有钱的老板转变成百万富翁,是因为他很好地遵循了面向对象的思想,并充分利用了它。一起来看看他是如何实现转变的:
(1) 招保洁。
开门关门
打扫卫生
打水
送水
(2) 招个秘书
打理日常的业务
接电话
接待大爷大妈
(3) 招业务经理
(4) 招业务员
(5) 招保安
(6) 招财务
(7) 招人力资源经理
到最后人员越来越多,公司也就逐渐壮大起来。而唐僧每天必须解决的问题变成了如何管理人,如何安排人,如何调整人与人的关系。现在我们一起通过程序来看看唐僧咋做的:

    class Dustman{//保洁员void openTheDoor(){//开门}void dightSanitation(){//打扫卫生}void acceptWater(){//打水}void givewater(){//送水}}class Secretary{//秘书void neatenOperation(){//打理业务}void liftTheTel(){//接电话}void receivePepole(){//接待人们}}class OperationManager{//业务经理}class OperationEmployee{//业务员}class Triggerman{//保安}class Finance{//财务}class ResourceManager{//人力资源经理}

可以看,面向对象是以功能来划分问题,而不是步骤。在程序中,可以用一个类来创建一个对象。比如保洁员类,就可以创建一个对象:

class Dustman{//保洁员void openTheDoor(){//开门}void dightSanitation(){//打扫卫生}void acceptWater(){//打水}void givewater(){//送水}}

由于功能上的统一保证了面向对象设计的可扩展性,所以如果公司在后期继续壮大,出现一个国际交流中心,就可以这样写:

class ItnCommunionCenter{}

三、总结

面向对象编程是Java得核心,它使得软件具有更强的适应能力,后续会写面向对象编程的三个重要原则:封装、继承、多态性。
学习从点滴开始,学到的东西可能会忘记,记得点赞收藏哦

System.out.println("我选择滑稽取宠");

没有对象,你凭什么成为百万富翁相关推荐

  1. java_B站_面试题

    Java面向对象有哪些特征,如何应用 ​ 面向对象编程是利用类和对象编程的一种思想.万物可归类,类是对于世界事物的高度抽象 ,不同的事物之间有不同的关系 ,一个类自身与外界的封装关系,一个父类和子类的 ...

  2. 史上最详细的23中设计模式解析,一个不落,理论搭配简单案例,更好理解哦

    目录 一.软件设计模式的产生背景 二.软件设计模式的概念与意义 1. 软件设计模式的概念 2. 学习设计模式的意义 三.23 种设计模式的分类和功能 1. 根据目的来分 2. 根据作用范围来分 3. ...

  3. java数组有跨类建立对象_必会的 55 个 Java 性能优化细节!一网打尽!

    程序员的成长之路互联网/程序员/成长/职场 关注 阅读本文大概需要 10 分钟. 来源:https://yq.aliyun.com/articles/662001 在 Java 程序中,性能问题的大部 ...

  4. 未来3年,非常赚钱的6个行业,将又会造就一批百万富翁!

    未来3年,非常赚钱的6个行业,将又会造就一批百万富翁! 未来5非常赚钱的6个行业,将又会造就一批百万富翁! 现在是个全民创业的时代,谁都可以当老板,今天小编总结了六大行业,未来几年会造就出一批富翁. ...

  5. 在kotlin companion object中读取Bean,注入Bean对象

    在kotlin companion object中读取Bean,注入Bean对象 在使用kotlin时,或多或少地会使用到一些公共组件,如 http. mongo. redis相关的组件.   使用组 ...

  6. IDEA自动生成对象所有set方法

    idea中有一款插件能够生成对象所有的set方法,GenerateAllSetter :下载地址 步骤1:将下载好的压缩包放在自己记得的文件夹中,在idea中进行导入 步骤2:在本地选中刚才的压缩包, ...

  7. 基于Golang的对象序列化的程序包开发——myJsonMarshal

    基于Golang的对象序列化的程序包开发--myJsonMarshal[阅读时间:约10分钟] 一.对象序列化概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体程序设计及 ...

  8. java 捕获异常并存入数据库_java异常处理,报异常的话怎么处理对象值,并持久化到数据库中...

    展开全部 //没看到有人回e68a843231313335323631343130323136353331333365646233答你,我还没学到框架,不知道那个是不是可以很便捷操作你说的这样过程 / ...

  9. python程序如何执行死刑图片_如何判断对象已死

    已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...

  10. Go 学习笔记(64)— Go error.New 创建接口错误对象、fmt.Errorf 创建接口错误对象、errors.Is 和 errors.As

    1. error 接口定义 除用 panic 引发中断性错误外,还可返回 error 类型错误对象来表示函数调用状态.error 接口是 Go 原生内置的类型,它的定义如下: // $GOROOT/s ...

最新文章

  1. 北理工计算机学院专业确认,北理工 2021 强基计划报名增加确认环节,限报 1 校 1 专业...
  2. 求有多少个数是这个数的约数
  3. [Vue warn]: Failed to mount component: template or render function not defined. 错误解决方法
  4. cmake之 ADD_LIBRARY()
  5. 《极乐迪斯科》:醉鬼神探的深邃人生
  6. OpenCV4.0-alpha发布!新增多个深度学习特性
  7. oform java_客户端表单通用验证checkForm(oForm)(1)
  8. position绝对定位后,a中使用display:block 无效的解决办法
  9. 056 日志的正则式方式加载
  10. Spring之Aop代理对象的产生(二)
  11. 关于AMS1117-ADJ 电压调节计算
  12. CUDA编程1--GPU内存模型
  13. 域名申请:一定要进行实名认证吗?
  14. python中encode函数_python中文处理之encode/decode函数
  15. 苹果手机更新ios9后,APP设置
  16. MQTT-SN协议阅读之MQTT-SN vs MQTT
  17. echarts 桑基图sankey
  18. 如何制作一个简单的机械臂
  19. ffmpeg 解码视频小例子
  20. 【Android】openGL单位光的问题

热门文章

  1. 为什么书上说是 TCP 四次挥手,但是实际会出现 TCP 三次挥手?
  2. 使用Intellij来实践测试驱动开发 TDD Kata
  3. Hadoop Failover
  4. 金蝶K3添加触发器实现-生产领料单打印即时库存
  5. Markdown语法手册
  6. win10装win7装win7
  7. 使用busybox制作rootfs
  8. seaborn的多样化图表及图表样式设置
  9. Linux手动释放显卡内存
  10. 使用Python对视频任意矩形区域进行裁剪