第二节课,老师正式开始给我们介绍OOAD。她首先介绍了软件开发初期的一些问题,包括开发周期长,维护困难等。然后引出面向对象的方法来有效提高软件开发的效率,并对其概念以及一些基本特性作出了介绍。
现在来谈谈我对OOAD的引入的理解。首先是软件危机,其实这个并不是生产软件独有的问题,任何一个产业在发展初期都会遇到一个瓶颈,然后就会引入工程化管理思想,对生产过程进行细分,并用严格的规定来管理。其核心在于对生产的管理。软件行业也相应地产生了软件工程的概念。但是软件行业也有它的特性,那就是生产的中间产品是很难管理的 ,例如写一个程序 ,你可以把所有代码都写在一个文件里,得出来的程序在外人看来只能看到其功能,但是很难对该程序的结构进行拆分,研究,更不用说对中间过程进行管理了。而OO就是解决这个问题的方法。OO是一种模仿真实世界的技术,用OO的方法生产软件的中间产品是一个个的类,其规模可以很小,可以通过封装将其逐步构建成更大的类,其具有高内聚,低耦合的特点。这样子,软件开发的中间结果就成了一个个能看得到的东西,这样子才能真正对其进行管理。这就是OO带来的好处,方便对软件生产过程进行管理。 OO也有其不好的地方,那就是利用其生产出来的产品的性能不一定是最优的,OO对软件编程的结构带来限制,产生了冗余,过多的类会带来不必要的管理麻烦。这也是一些OO的攻击者的言论。关于这一点,我在看MIT的《算法导论》公开课时,《算法导论》的作者在讲到算法带来更高的效率,而效率是什么呢?效率是一种类似于货币的东西,是拿来换取别的特性的。他举Java为例子,Java要在虚拟机上运行,效率不高,可是却带来了多平台的特性,这样子是值得的。同样的,OO也是这样的,用效率换取了方便管理的特性。这样子值不值呢,就要看开发者在其中的决策了,小软件不一定值,因为其结构简单,不需要太强的管理,为此减低效率就不值了。大软件结构复杂,为了管理上的便利,效率是可以牺牲的,这就是值得的。所以采用OO没有绝对的好,也没有绝对的坏,只是看合不合适。 最后再讲一个我认为OO可能会带来的一个好处,始终,计算机软件是为了解决现实生活中的问题而存在的。而要由int a,if之类的语言成分来与现实生活进行联系可能还是比较难。而OO可以通过建立与现实世界相对于的模型,也就是类,能更方便地套用已经存在的解决问题的方法。例如,做一个足球动画的时候,建立一个球员类,规定他的动作,再调用动作还完成动画,比一帧一帧地来做动画要轻松一点。 |
浅谈OO
最新推荐文章于 2021-02-12 15:04:53 发布