面向对象的思维方法和编程语言,提供了强有力的抽象和建模工具。软件开发人员分析现实世界的问题和概念,然后建立对应的 class 来描述不同概念的属性和方法,把更一般性的共性用 “泛化” 抽象成公共的父类,根据需要 “派生” 出特化的子类,就能建立一个现实世界在计算机里的模型,而当现实世界的事物发生变化,只要找出变化部分对应的 class 进行相应修改就好了。
[x] 所有 class 都来源于现实世界的事物吗?
现实世界映射 是面向对象方法中常用的手段,但也有很多 class 并不来源于现实世界的事物,而只是为了满足我们的抽象需要,比如上面那个 “可开关设备”,就是一个抽象的共性特征而已。
历史上面向对象的发展其实有两个分支,一个以 Smalltalk 语言为代表,另一个以 C++ 语言为代表,他们都有 class 和 object 的概念,但也有非常大的差异,最后 C++ 依靠 C 的兼容性赢下了标准之争,成为实际上面向对象的 “正宗”,而 Smalltalk 只能作为一个小众语言存在,虽然在很多专家心目中 Smalltallk 才是更优秀/先进的那个,这也是计算机行业屡见不鲜的事了。
不过 Smalltalk 有个大弟子叫做 Objective-C,是 Steve Jobs 离开 Apple 创办 NeXT 的时候选择的系统语言,后来被带回苹果,成为苹果生态下 OS X 和 iOS 的唯一开发语言,直到 Swift 语言出现。顺便说一句,Objective-C 也是兼容 C 语言的,在 Web 成为一大主流之前 C 语言简直是编程世界的主宰。
[x] 这两个派系有何差异?
这两个派系有些东西是各自独有的,有些东西虽然两边都有,但是叫法和实现思路迥异,最大的一个差异就是前面提过的 Joe Armstrong 喜欢的 “messaging”,Smalltalk 的这个概念用了一个独特的隐喻,不强调对象的属性和方法,而代之以 “消息”,当要使用某个对象时唯一的操作就是向这个对象发送一条消息,这个消息说明了发送方想要什么(获取信息或请求对象执行某些操作),接受消息的对象响应这些消息返回相应数据或者执行相应操作,这个隐喻也很直观,而且从这个概念发展开去,Smalltalk 建立了一套简洁灵活的面向对象编程工具集。
1. 了解 面向对象的争议
2. 认识 面向对象的两个核心特性
3. 了解 类和对象
4. 了解 访问控制
5. 了解 抽象层次
6. 了解 多态
7. 了解 面向对象编程的分支
8. 记住叮嘱
Logging
2020-02-22 23:01:12 initialize