返回介绍

面向对象编程

发布于 2023-05-23 15:33:22 字数 781 浏览 0 评论 0 收藏 0

眼下另一个争论的热点则是面向对象编程。它是一种不同的组织程序的方法。假定你要写一个程序,计算二维图形的面积。首先,你必须知道到底是圆形还是正方形。一种解决方法是用一整块的代码判断遇到的是什么图形,然后再用相应的公式计算面积。面向对象编程不是这样,它的方法是写出两个类,一个是圆形类,另一个是正方形类,然后每个类里面用一小块代码(叫做方法)计算该类图形的面积。求面积的时候,你就问要用哪一个类,然后再使用相应的方法得出最后答案。

这两种不同的计算方法可能听上去很相似,事实上,运行代码后,实际计算面积的运算过程也很相似。(这不奇怪,因为你本来就在解决同一个问题。)但是,代码的形式却是大相径庭。在面向对象编程的方式中,计算圆面积和正方形面积的代码可能分散在不同的文件中。与圆形有关的代码都放在一个文件中,与正方形有关的代码则放在另一个文件中。

面向对象编程的优点在于,如果你需要修改程序,计算另一种图形的面积,比如三角形,你只需要再另外增加一块相应的代码就可以了,甚至可以不修改程序的其他部分。但是,批评者会反驳说,这种方法的缺点是,由于增加代码不用考虑其他部分,结果往往导致写出性能不佳甚至有副作用的代码,就好比造房子不考虑已经完成的部分一样。

关于面向对象编程优劣的争论并不像静态类型与动态类型之争那样壁垒分明,因为编程的时候你只能在静态类型和动态类型之中选一种。但是,面向对象编程只是程度不同的问题。事实上有两种程度的面向对象编程:某些语言允许你以这种风格编程,另一些语言则强迫你一定要这样编程。

我觉得后一类语言不可取。允许你做某事的语言肯定不差于强迫你做某事的语言。所以,至少在这方面我们可以得到明确的结论:你应该使用允许你面向对象编程的语言。至于你最后到底用不用则是另外一个问题了。

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

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

发布评论

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