返回介绍

4.1 简介

发布于 2024-01-21 22:13:25 字数 1508 浏览 0 评论 0 收藏 0

1.简单的例子

面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。面向过程是分析出解决问题所需要的步骤,然后用函数一步一步实现这些步骤,使用的时候一个一个依次调用就可以了。而面向对象是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。例如五子棋,面向过程的设计思路就是首先分析问题的步骤:①开始游戏,②黑子先走,③绘制画面,④判断输赢,⑤轮到白子,⑥绘制画面,⑦判断输赢,⑧返回步骤2,⑨输出最后结果。把上面每个步骤分别用函数来实现,问题就解决了。而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为:①黑白双方,这两方的行为是一模一样的;②棋盘系统,负责绘制画面;③规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的输入就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,在面向过程的设计中,需要多个步骤执行该任务。但这样很可能导致不同步骤的绘制棋局程序不同,因为设计人员会根据实际情况对绘制棋局的程序进行简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

2.面向对象的优点

在面向过程程序设计中,问题被看作一系列需要完成的任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有它们自己的局部数据。这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证。面向对象程序设计的出发点之一就是弥补面向过程程序设计中的一些缺点:对象是程序的基本元素,它将数据和操作紧密地连接在一起,并保护数据不会被外界的函数意外地改变。因此面向对象有如下优点:

1)数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰。

2)通过继承可以大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也降低了出错概率,降低了软件维护的难度。

3)结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程。

3.何时使用面向对象编程

面向对象的程序与人类对事物的抽象理解密切相关。举一个例子,虽然我们不知道精灵宝可梦这款游戏(又名口袋妖怪)的具体源码,但可以确定的是,它的程序是通过面向对象的思想编写的。我们将游戏中的每种精灵看作一个类,而具体的某只精灵就是其中一个类的一个实例对象,所以每种精灵的程序具有一定的独立性。程序员可以同时编写多只精灵的程序,它们之间不会相互影响。为什么这里我们不能使用面向过程编程呢?大家试想一下,如果程序员要开发新的精灵,那么就必须对之前的程序做大规模的修改,以使程序的各个函数能够正常工作(以前的函数没有新精灵的数据)。现在的程序和软件开发都是使用面向对象编程的,最重要的原因还是其良好的抽象性。但对于小型程序和算法来说,面向对象的程序一般会比面向过程的程序慢,所以我们编写程序需要掌握两种思想,发挥出它们的长处。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文