前言
上周上课,老师提出了一个问题,程序设计有面向对象和面向过程两种常用设计理念。请你回答他们各自的目的和各自的有缺点。请举例,进行详细的论述。
我发现我怎么也搞不清楚,按老师的话说就是良莠不齐,如果现在不将面向对象和面向过程搞清楚,那么以后写的代码维护起来相当麻烦,开发成本太大。以后可能就加班改代码。。。。
下面就让我来总结一下面向对象与面向过程各自的目的,各自的优缺点。
面向对象与面向过程的区别
面向对象的关注点是对象。
面向对象:是我们要注重多少人来干事,而不是干多少事。我们要注重谁来干事,而不是怎么干事。
面向过程的关注点是过程。
拿生活中的例子举例,如让某人帮我打杯水。面向过程的设计思路是分析出实现的步骤:1.找到一个人、2.告诉他打水的地点、3.告诉他用那个杯子打水、4、进行打水,5、将水送给我。
面向对象的设计思路是:整个打水可以分为:参与者(受水人、打水人)、打水工具、打水地点、水。
面向对象与面向过程的各自的目的
面向对象和面向过程没有好坏之分。
面向对象目的是通过建立对象使构成的程序,可维护,可扩充,可复用。所以面向对象主要侧重于
面向过程的目的:运用逻辑分析出解决问题所需要的步骤,然后把这些步骤一步一步实现。主要侧重于小型程序。
面向对象与面向过程的有缺点
面向过程
优点:由于不涉及到类的调用,以及类的实例化。效率高、开销小。
缺点:不宜维护、不宜复用、不宜扩展
面向对象
优点:易扩展、易维护、易复用
缺点:转变看问题的角度需要训练,专注的不是细节而是参与者和表现者、开销大。
那么像linux这样的大型系统,为什么要用C语言这样的面向过程的语言去开发呢?面向过程的语言,它最大的优势就是他的实时性和效率高。而linux是操作系统,操作系统它要求尽可能快的响应用户要求,同时减少资源的占用。所以尽管面向过程复用性不好,维护性不好,扩展性不好,单依旧必须选择面向过程的语言。因为我们第一要求施响应速度开,占用资源少。现在linux基本上不用C语言了,基本上用的是C++(面向对象语言)开发,因为使用C语言开发成本太高了,另一方面的原因也是由于目前技术的进步。