1、面向对象编程的概念
- Python从设计之初就已经是一门面向对象的语言,正因为如此,我们肯定听过Python中
一切皆对象
的说法。 - 面向对象编程(Object-oriented Programming,简称 OOP),是一种程序设计思想。
- 面向对象编程把对象作为程序的基本单元,一个对象包含了数据(属性)和操作数据的函数。
- 在面向对象的设计思想中,将程序视为多个对象共同协作的结果。程序被划分为多个子模块,再由多个对象完成各自模块最终实现程序的功能。
- 面向对象编程,是一种封装代码的思想。
- 面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性。
2、面向对象编程和面向过程编程的区别
(1)面向过程编程
面向过程的程序设计把函数作为程序的基本单元。程序设计时,编写一组一组的函数,然后一步一步按照顺序的执行各个函数,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。
面向过程编程,核心是"过程",关注的是解决问题的步骤,即先做什么再做什么。面向过程的编程就像一个流水线,是一种机械式的思维。若程序一开始是要着手解决一个大问题,面向过程的编程思维会把一个大问题分解为很多个小问题,这些小问题还可以继续分解,直到小问题足够简单可以在一个小步骤中解决。
- 优点:
- 极大的降低了写程序的复杂度,只需要顺着执行的步骤,堆叠代码即可。
- 复杂问题流程化,进而简单化。
- 缺点:
- 一套流水线或者流程就是来解决一个问题,如果其中一个方法修改了,那其他组件也要跟着作相应的修改。
- 也就是出现问题,牵一发而动全身。
(2)面向对象编程
而面向对象的程序设计把对象作为程序的基本单元,程序设计时,设计许多的对象(类创建而成),每个对象都有能力解决一些相应的问题。而我们面向对象编程是基于面向过程编程的,类是将功能(小步骤)进行了封装,只要找到了具体的类,创建出对象,就可以调用其中的具体功能。
面向对象是用来解决问题的一种思维模式,在以后开发中,先找对象,调用对象中的具体功能。如果真的没有能够完成需求的对象,这时就自己定义类,并将所需的功能定义到对象中,方便以后使用。
- 优点
- 面向对象是一种更符合人们思考习惯的思想。
- 面向过程中更多的体现的是执行者,面向对象中更多的体现是指挥者,指挥对象做事情。
- 面向对象将复杂的问题简单化。
- 由于面向对象有封装、继承、多态性的特性,使系统更加灵活、易维护、易复用、易扩展,可以设计出低耦合的系统。
- 缺点:
- 性能比面向过程低。
- 所谓有得必有失,但在如今硬件疯狂发展,系统又越来越复杂的情况下,权衡利弊,我们选择面向对象编程。
3、举例理解面向对象
面向对象是一种抽象化的编程思想,很多编程语言中都有的一种思想。
(1)需求
例如:洗衣服
思考:几种途径可以完成洗衣服?
答: 手洗 和 机洗。
(2)面向过程洗衣服
手洗就相当于面向过程洗衣服:
- 找盆
- 放水
- 加洗衣粉
- 浸泡
- 搓洗
- 拧干水
- 倒水
- 晾晒
- 收起叠好
在经历这么多步骤后,你终于把衣服完了,但是自己已经精疲力尽。
(3)面向对象洗衣服
机洗就相当于面向对象洗衣服。
这个洗衣机就是对象,衣服放进洗衣机中:
- 开启洗衣机(类创建创建对象)
- 洗衣服(调用对象中的方法)
- 洗衣机--加水
- 洗衣机--加洗衣粉
- 洗衣机--浸泡
- 洗衣机--搓洗
- 洗衣机--脱水
- 洗衣机--排水
- 洗衣机--烘干
- 关闭洗衣机(程序执行结束收起衣服)
你坐在窗边看着夕阳,感叹生活真是太美好了!
(4)总结:
思考:对比两种洗衣服途径,哪种方式更简单?
答:机洗更简单。
机洗只需要找到一台洗衣机,加入简单操作就可以完成洗衣服的工作,而不需要关心洗衣机内部发生了什么事情。
面向对象就是将编程当成是一个事物,对外界来说,事物是直接使用的,不用去管他内部的情况。而编程就是设置事物能够做什么事。
4、Python的面向对象编程
面向对象编程是利用类
和对象
来创建各种模型,来实现对真实世界的描述。
使用面向对象编程的原因:
- 一方面是因为它可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 。
- 另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。
5、面向对象的几大核心特性
- Class 类:一个类指相同事物相同特征提取,把相同的属性方法提炼出来定义在类中。
- Object 对象:一个对象是类的实例,对象是具体的,类是抽象。
- 封装:对外部世界隐藏对象的工作细节。
- 继承:一个子类继承基类的字段和方法。
- 多态:对不同类的对象使用同样的操作。