1.面向对象编程概述
1.1程序设计的思路
面向对象,是软件开发中的一类编程风格、开发范式。除了面向对象,还有面向过程、指令式编程和函数式编程。在所有的编程范式中,我们接触最多的还是面向过程和面向对象两种
早期现有面向过程思想,随着软件的扩大,问题复杂度的提高,面向过程的弊端越来越明显,出现了面向对象思想并成为主流思想
1.面向过程的程序设计思想(Process-Oriented Programming),简称POP
- 关注的焦点是过程:过程就是操作数据的步骤。如果某个过程的实现代码重复出现,那么就可以把这个过程抽取为一个函数。这样可以大大简化冗余代码,便于维护
- 典型的语言:C语言
- 代码结构:以函数为组织单位
- 是一种执行者思维,适合解决简单问题。扩展能力差、后期维护难度大
2.面向对象的程序设计思想(Object-Oriented Programming),简称OOP
- 关注的焦点是类:在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,用类来表示
- 典型语言:Java,C#,C++,Python,Ruby,PHP等
- 代码结构:以类为组织单位。每种事物都具备自己的属性和行为/功能
- 是一种设计者思维,适合解决复杂问题,代码扩展型强,可维护型强
注意:我们千万不能把面向过程和面向对象对立起来。他们是相辅相成的。面向对象离不开面向过程!
3.如何掌握这种思想
在学习面向对象编程时,我们要通过不断地敲代码去感受面向对象与面向过程两种编程思想的不同,这个过程应该是渐悟的
1.2面向对象编程和面向过程编程的差异
- 编程模型
- 面向对象的编程主要以对象为中心,以类和对象的形式组织代码。类是对某种类型的对象定义的一种抽象模型,它包括属性(数据函数)和方法(操作或函数)的定义。对象是根据类创建的实例,每个对象都有其自身的属性和方法
面向 - 面向过程的编程则以过程或函数为中心,重点关注程序的执行流程。这种编程方式主要通过函数或过程(包括子程序或方法)的调用和返回值来实现程序的功能
- 面向对象的编程主要以对象为中心,以类和对象的形式组织代码。类是对某种类型的对象定义的一种抽象模型,它包括属性(数据函数)和方法(操作或函数)的定义。对象是根据类创建的实例,每个对象都有其自身的属性和方法
- 抽象级别
- 面向对象编程通过将数据(对象的状态)和操作数据的代码(对象的方法)封装在一起,实现了数据和行为的抽象,从而使代码更易于理解和维护
- 面向过程编程主要关注程序的行为,它通过一系列线性步骤或函数调用来实现程序的功能。虽然它也可以一定的抽象,但这种抽象主要集中在程序的行为上,而不是数据
- 形象的解释
假如我们正在准备一顿饭,面向过程的编程可能会按照以下的步骤来进行:
1.淘米,洗米,放入电饭锅包中煮熟
2.清洗蔬菜
3.炒菜
4.完成烹饪
在这个过程中,每一个步骤都是独立的,并且按照顺序一个接着一个地进行
而面向对象的编程可能会将这个过程抽象为几个对象,比如”厨师“,”电饭煲“,”蔬菜“等,这些对象不仅有各自的状态(比如电饭煲的状态可能包括米饭的煮熟程度,厨师的状态可能包括他的技能水平),还有各自的行为(比如电饭煲可以煮饭,厨师可以烹饪)
通过这种方式,面向对象编程可以将实际生活中的事物和过程抽象为程序中的对象,也更容易理解和维护
相比之下,面向过程编程更加简单和直观,易于理解和掌握。它适用于一些较为简单的问题,并且性能通常比面向对象编程更高。然而,面向过程编程的缺点在于代码的复用性较差,对于复杂问题的处理可能会变得困难。
因此,**在选择编程方式时,需要根据具体的需求和场景进行考虑。**对于需要高重用性、更好的适应性和可维护性的项目,面向对象编程可能是更好的选择。对于一些简单的问题或对性能要求较高的场景,面向过程编程可能更为合适。在实际开发中,通常会结合使用面向对象编程和面向过程编程的方式,根据需要选择最适合的编程方式。