《计算机是怎样跑起来的》 || 第七章 • 成为会使用面向对象编程的程序员

在这里插入图片描述
作者:矢泽久雄

——————————————————————————————————————

第七章 • 成为会使用面向对象编程的程序员

——————————————————————————————————————

【01】面向对象编程

面向对象编程(OOP,Object Oriented Programming)是一种编写程序的方法,旨在提升开发大型程序的效率,使程序易于维护,从而缩减企业成本(开发费用+维护费用)。

与面向对象编程相对的,就是是面向过程编程。

下面从多个角度对OOP理解剖析。

——

【02】观点1:面向对象编程通过把组件拼装到一起构建程序

  • 类就是OOP的组件
  • 把程序中相关联的函数和变量汇集到一起编程组,这个组就是类
  • OOP,就是把若干个类组装在一起构成完整的程序

——

【03】观点2:面向对象编程可以提高程序的开发效率和可维护性

  • OOP是通过如若干个“类”这样的组件拼装构成程序的
  • 所以可以以组件为单位对程序进行维护
  • 类与类之间是相互独立的,一个类的修改不会影响其他类的变化
  • 对于类的使用者来说,“类看起来是什么样子的”这种关于规范的描述通常被称为“接口”。

——

【04】观点3:面向对象编程是适用于大型程序的开发方法

假设一个程序需要10000个函数和20000个边浪,如果把这个程序用100个类组织起来,那么平均一个类里就只有100个函数和200个变量。

程序的复杂度也就降低到了原来的1%。

如果在此基础上使用封装这种编程技巧(将函数和变量放入黑盒,使其对外界不可见),还能够进一步降低复杂程度。

所以说这也是为什么面向对象编程使用过于大型程序的开发。

——

【05】观点4:面向对象编程就是在为现实世界建模

我们通过程序在计算机上实现现实世界的各种业务和娱乐活动。

在面向对象编程中,可以通过“这个是由什么样的对象构成的呢?”这样的观点来分析,将现实世界的各种各样的活动拆分为一个一个对象,然后转化为程序。

这样的分析过程就叫做“建模”。

在实际建模的过程中有两大步骤,“组件化”和“省略化”。

组件化,就是将由若若干个对象构成的集合的现实世界分割成若干个组件。

省略化,就是将组合成实现世界的组件中非关键组件进行省略掉,从而专注于涉及核心功能和属性的重要组件。

——

【06】观点5:面向对象编程可以借助UML设计程序

为了把对现实世界建模的结果以图形的形式展示出来,会经常使用UML(Unified Modeling Language,统一建模语言)的标记方法。

UML是通过统一历史上曾经出现的各种各样的标记方法而发明出来的,且UML已经成为了建模标记方法中的世界标准。

UML中规定的九种图
在这里插入图片描述
面向对象编程,就是从类图角度出发的。

在进行面向对象编程的时候,从一开始就要把所需要的的类确定下来,再列举每个类中应该具有的方法和变量。
在这里插入图片描述

要一边观察作为程序参照物的显示世界,一边思考待解决的问题是由哪些类构成的。正式因为在设计时要去关注对象,这种编程方法才被称为面向对象编程。

——

【07】观点6:面向对象编程通过在对象间传递消息驱动程序

程序可以通过由一个对象去调用另一个对象所拥有的函数,从而运行起来。

这种调用方式被称为对象间的 “消息传递”

以“判定石头剪刀布输赢”案例为例。

如果采用面向过程编程方式,它可能是这样的

# 纯粹使用独立的函数
a = GetHand()
b = GetHand()
winner = GetWinner(a,b)

可以用“流程图”来表示程序的运行过程
在这里插入图片描述

如果使用面向对象编程放,它会是这样的

# 调用某个对象所拥有的函数

a = PlayerA.GetHand()
b = PlayerB.GetHand()
winner = Judge.GetWinner(a,b)

可以使用UML中的“时序图”来表示程序的运行过程
在这里插入图片描述

——

【08】观点7:在面向对象编程中使用继承、封装和多态

继承、封装和多态是面向对象编程的三个基本特性。

继承:通过继承已存在的类所拥有的成员(变量和方法)而生成新的类,被继承者与继承者之间称为父类和子类的关系。通过继承能够高效地生成和修正类。

封装:在类所拥有的的成员中,隐藏掉那些没有必要展现给该类调用者的成员。类就可以被当作黑盒,变成易于使用且便于维护的组件。

多态:针对同一种消息,不同的对象可以进行不同的操作。使用这样的类能够大大减少程序员的记忆量。

——

【09】类的三种使用方式

  1. 仅调用类中的个别成员(变量、方法)
  2. 在类的定义中包含其他的类(这种方法被称为组合)
  3. 通过继承已存在的类从而定义出新的类

采用哪种使用方式,是根据目标类的性质以及个人的目的决定的。

——

【10】个人总结

面向过程和面向对象两种编程方式之间并不绝对地存在谁优谁劣,它们是两种不同的编程思维方式。

我们需要根据自己所编写的程序代码去选择合适的方式,只不过在越大的编程项目总,采用面向对象编程能够更加提高效率、便于维护。

——
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值