Java 编程思想 1 (总述: 面向过程与面向对象)

有一本书《Thinking in Java》的中文译版就叫《Java 编程思想》, 里面写得很完备. 我没有太多耐心去把它从头到尾学习一遍, 这里仅根据自己编程实战的理解, 进行一定的描述. 本系列适用于已经有 500 行以上代码经验的程序猿, 初学者可能会看得一头雾水.

1. 什么是面向过程

面向过程以 how 为中心, 即怎么做.

  • 顺序结构: 第 1 步怎么做, 第 2 步怎么做.
  • 分支结构: 情况 1 怎么做, 情况 2 怎么做.
  • 循环结构: 情况满足时重复怎么做.

做这些事情的主体是机器. 因此, 我们可以看作是命令机器怎么做, 相应的程序叫做 “指令”. 机器是这个世界上最听话的东西, 绝不会违逆程序猿的意志. 因此, 程序猿经常有 “我说了算” 的君王的感觉, 这种快乐是别人体会不到的.

2. 什么是面向对象

面向对象以 who 为中心, 即谁去做.
为了制造机器人, 我们首先成立一个公司 (虚拟的, 下同), 公司是一个对象. 公司首先招收一堆员工, 每个员工都是一个对象, 其中有些特殊的员工, 他们构成了管理层. 公司还需要使用一些设备, 如车床等, 它们也是对象.
有了各种各样的对象后, 我们开始正式干活儿. 公司总经理下达一个指令: 本月生产 1000 个机器人. 这个命令被传递到每个车间主任那里, 他们根据自己的分工, 进一步向员工下达指令. 员工又操作设备, 让设备来执行.
与面向过程不同, 做事情的主体是对象. 杠精可能要说, 在虚拟世界, 事情最终不都是机器来干呀, 这和面向过程有啥区别? 这个问题要在后面慢慢说.

3. 面向对象相对于面向过程有什么优势

  • 更加靠近人类的思维. 我们会说: 阿汪, 去沙发上把手机拿过来; 喵主子, 去抓一只蝴蝶). 也就是说, 发号施令首先要有一个针对的客体 (对象: 阿汪、喵主子), 然后才是客体怎么做 (把手机拿过来).
  • 对象有更强的内部保护机制. 如果沙发上已经没手机了, 阿汪就不会给你叼过来, 甚至它还可以从书桌上把手机找到. 与之相比, 面向过程里面, 你要为所有事情操心, 否则机器干不了就给你出内部错误.
  • 对象更独立, 复用性更强. 面向过程中的函数有一定的复用性. 而对象有自己的数据和一系列与之相关的操作 (函数), 复用性强得多. 你可以把阿汪从家牵到公司, 它一样会吃饭睡觉叼手机. 机器是没有灵魂的, 而对象有.
  • 类可以继承, 导致代码复用性更强. 如果你已经有一只狗了, 你还可以弄一只哈巴狗. 它不但会找手机, 还会跟你打哈哈.

综上所述, 面向对象使得我们能够开发更强大、更复杂的程序系统. 虽然公司老总经常遇到员工不听话的情况, 总是比较省心呀! 再说了, 他们遇到什么事情, 也会自己想办法解决.

4. 面向对象与面向过程的关系

面向过程是面向对象的基础. “阿汪.拿手机过来” 遵循 who.how, 或 who.what 的范式. 最终还是要落足到 how.
换言之, 系统总体是面向对象, 而局部 (方法/函数内部) 是面向过程.

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值