成为会使用面向对象编程的程序员吧
From: 《计算机是怎样跑起来的》【日】矢泽久雄
读书笔记
面向对象编程(OOP,Object Oriented Programming)
旨在提升开发大型程序的效率,使程序易于维护。
对 OOP 的多种理解方法
将关注点置于对象(Object)本身,对象的构成要素包含对象的行为及操作,以此为基础编程。
观点 1:面向对象编程通过把组件拼装到一起构建程序
大型程序中需要用到大量的函数和变量。为使代码简洁,将有关的函数和变量汇集到一起。
类:把程序中有关联的函数和变量汇集到一起编成的组
观点 2:面向对象编程能够提升程序的开发效率和可维护性。
- 大部分的类都已内置于面向对象编程语言中了,将类组合在一起形成类库,类库可以为来自各个领域的程序员使用。
- 企业级的程序,需要高可维护性,如果程序使用一组类组装起来的话,就会使维护工作轻松。
- 创造类需要考虑程序的开发效率和可维护性,并决定将什么抽象为类,如果一个类的修改导致其他的类也要跟着修改就不行。
- 功能升级后,就组件能够被新组件所替换的设计也必不可少,由此对于类的使用者来说,要事先与类的创造者商定类的使用规范,这种规范描述叫做接口(interface)。面向对象的语言中提供了关于定义接口的语法。
观点 3:面向对象编程是适用于大型程序的开发方法
- 面向对象编程的方法是一种顺应人类思维习惯的方法,拉近了计算机与人的距离。因为在人的直觉中,大件物品都是由组件组装起来的。
观点 4:面向对象编程就是在为现实世界建模
- 程序可以在计算机上实现现实世界中的业务和娱乐活动。在 OOP 中,通过思考现实世界是由什么样的对象构成来分析并编写相应的程序,称为建模。
- 建模要进行“组件化”和“省略化”两步。
观点 5:面向对象编程可以借助 UML 设计程序
- UML:Unified Modeling Language,统一建模语言。
- 要一边观察作为程序参照物的现实世界, 一边思考解决的问题是由哪些事物(类)构成的。正因设计时要关注对象,这种方法才被称为面向对象编程。
- 在传统开发方法上,首先要考虑程序应该由什么样的功能和数据构成,然后立即确定与之相应的函数和变量。相对地,在面向对象编程的设计中,因为一上来就要确定有哪些类,从而构成程序的函数和变量就必然会被组织到类中。
观点 6:面向对象编程通过在对象间传递消息驱动程序
- 在面向对象语言中所说的消息传递指的是调用某个对象拥有的函数。
- 这符合人对现实世界的认知,在现实世界中,我们也是通过对象间的消息传递来开展业务或度过余暇的。
- 在面向对象编程中可以对对象间的消息传递建立模型。
观点 7:在面向对象编程中使用继承、封装和多态
- 继承(Inheritance)、封装(Encapsulation)和多态(Polymorphism)被称为面向对象编程的三个特性。
- 继承:通过继承已存在的类所拥有的成员而生成新的类。如果一个类被多个类所继承,那么修正了这个类,就相当于把继承了这个类的所有类都修正了。可以通过继承高效生成类。
- 封装:在类所拥有的成员中,隐藏掉没有必要展现给类调用者的成员。从而将类变为黑盒,易于使用便于维护。
- 多态:生成对同一个消息执行多种操作的一组类。减少需要记忆的东西。
类和对象的区别
- 类是对象的定义,而对象是类的实例(Instance)
- 在实际编程中,想使用类必须在内存上生成该类的副本,这个副本就是对象。
- 类是做饼干的磨具,用模具做出来的饼干是对象。
类的三种使用方法
- 仅调用类所持有的个别成员(函数和变量)
- 在类的定义中包含其他的类(组合)
- 通过继承已存在的类定义新的类。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AOHUI BLOG.!
评论