16
我们真的需要OO语言来管理软件复杂性吗?
这将是一个非技术性的软性问题,我不确定这是否是正确的平台。但是我是CS的初学者,所以我希望你们能容忍它。 在第一学期中,我们通过Java和UML介绍了OOP概念,例如封装,数据隐藏,模块化,继承等。(Java是我的第一门编程语言) 以我的理解,OOP是一种管理软件复杂性的方法。但是它的原理并不是新的或独特的,它们在某种意义上在所有工程领域都是通用的。 例如,汽车是一种非常复杂的结构,其复杂性由具有明确定义的行为和接口的模块化和封装组件的层次结构来管理。 但是我不明白引入新的编程范例的原因。我认为,用于管理复杂性的所有原理都可以通过过程编程语言来实现。例如,对于模块化,我们可以将程序分为许多小程序,这些小程序执行定义明确的任务,其代码包含在单独的文件中。这些程序将通过其定义明确的输入和输出相互交互。可以对文件进行保护(加密?)以实现封装。为了重新使用代码,我们只要在新程序中需要它们时就可以调用它们。这不是捕获所有的OOP还是我缺少非常明显的东西? 我不是要证明OOP可以管理复杂性。我认为确实可以。但是我认为,用于处理复杂性的所有原理(例如模块化,封装,数据隐藏等)都可以很容易地由过程语言实现。那么,如果我们不进行复杂性管理,为什么要真正实现面向对象设计呢?