前言
有编程经验的读者可能经常听说面向过程编程和面向对象编程。那么,你深入了解过这两个概念吗?两者有什么区别?下面简单介绍一下。
例1
首先用一个很简单的例子,对这两个概念有一个宏观的认识。
假设我明天离开上海去北京,为了流程导向我会这么做:打开地图搜索,哪条路离自己开车更近,选择哪条国道,走哪座桥,过哪条隧道,这些都是我需要考虑的。最后一步一步实现了,到了北京。
而面向对象我会这样做:打开旅行APP选择是坐飞机还是火车,选择哪趟车,选择好之后去车站坐大巴到达目的地。
面向过程要求控制每一个细节,而面向对象只需要选择合适的工具。
例2
我是NBA的数据分析师。我的工作是记录球队的统计数据。显然,我需要计算机的帮助。
过程程序员可能会考虑这样做:
我要输入每个球员的名字,投篮次数,命中次数,命中率等基本统计,篮板,助攻等。为了简化我的工作,我需要一台计算机来计算数据,我也想让程序显示数据。那我该怎么办呢?我可能会想到调用一个函数完成输入工作,调用另一个函数完成计算工作,然后调用第三个函数完成显示工作。那么,拿到下一场比赛的数据后,我们该怎么办呢?我不想从头再来。这时候我会选择调用一个更新数据的函数。在这些的基础上,我会想做一个菜单来选择是输入、计算、显示还是更新。那么这些数据是如何存储的呢?这个时候我会用string数组存储名字,另一个数组存储镜头,其他数组存储其他数据。好像太麻烦了。你可以直接设计一个结构来存储每个球员的所有信息,然后用这个结构来代表整个球队。
总之,在采用过程化编程方法时,先考虑要遵循的步骤,再考虑如何存储这些数据。
这个时候OOP(面向对象编程)程序员会怎么做?
首先要考虑的是数据,不仅要考虑如何表示数据,还要考虑如何使用数据:
我在定位什么?当然是参赛选手。所以需要一个对象来代表整个玩家的方方面面(不仅仅是投篮次数或者命中率)。这将是数据的基本单位——一个代表球员姓名和统计数据的对象。我需要一些方法来处理这个对象。首先,需要一种向单元添加基本信息的方法。其次,计算机要计算一些东西,比如命中率,所以需要增加一些计算方法。该程序应自动完成这些计算,无需用户干预。此外,还需要一些更新和显示信息的方法。因此,用户有三种方式与数据交互:初始化、更新和报告——这是用户界面。
总之,采用OOP方法时,首先要从用户的角度考虑对象——描述对象所需的数据,描述用户与数据交互所需的操作。在描述了接口之后,需要确定如何实现接口和数据存储。最后,用新的设计方案编制了程序。
本文来自不茫然未来投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/552691.html