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)
  • 在实际编程中,想使用类必须在内存上生成该类的副本,这个副本就是对象。
  • 类是做饼干的磨具,用模具做出来的饼干是对象。

类的三种使用方法

  1. 仅调用类所持有的个别成员(函数和变量)
  2. 在类的定义中包含其他的类(组合)
  3. 通过继承已存在的类定义新的类。