初识面向对象(OOP)的基本概念
面向对象编程 —— Object Oriented Programming 简写 OOP。
如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于更容易的学习 Python 的面向对象编程。
面向对象编程是在在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性。
面向对象编程是程序员发展的分水岭,很多初学者会因无法理解面向对象而放弃学习编程。
一、面向过程和面向对象的基本概念
1、面向过程
- 把完成某一个需求的所有步骤从头到尾逐步实现。
- 根据开发需求,将某些功能独立的代码封装成一个又一个函数。
- 最后完成的代码,就是顺序地调用不同的函数。
特点
- 注重步骤与过程,不注重职责分工。
- 如果需求复杂,代码会变得很复杂。
- 开发复杂项目,没有固定的套路,开发难度很大!
2、面向对象
相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法。
- 在完成某一个需求前,首先确定职责——要做的事情(方法)。
- 根据职责确定不同的对象,在对象内部封装不同的方法(多个)。
- 最后完成的代码,就是顺序地让不同的对象调用不同的方法。
特点
- 注重对象和职责,不同的对象承担不同的职责。
- 更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路。
- 需要在面向过程的基础上,再学习一些面向对象的语法。
二、面向对象的思维方式
面向对象是一种思维方式,也是一门程序设计技术。
要解决一个问题前,首先考虑由谁来做,怎么做事情是谁的职责,最后把事情做好就行!
对象就是找谁解决问题,要解决复杂的问题,就可以找多个不同的对象,各司其职,共同实现,最终完成需求。
三、通过实例讲解面向对象
我们来看植物大战僵尸的例子。
向日葵可以生产阳光,在植物大战僵尸中,生产阳光这件事情就是向日葵的职责,同时,向日葵没事干的时候,也会摇摇晃晃,另外向日葵还有一个生命值,僵尸在啃向日葵的时候不是一口吃掉的,而是要啃好几口。
当我们把生产阳光和摇晃这两件事情封装到向日葵这个对象里面之后,生产阳光和摇晃就是向日葵来负责了,而我们的主程序只需要把向日葵往地上一摆就完成了。
其他的对象如僵尸、射手也是这个道理。使用面向对象开发,主程序的功能就大大简化了。
在面向对象开发的时候,由于明确了职责,所以在各个对象中的方法很少会出现彼此调用的情况。
四、类和对象的概念
类和对象是面向对象编程的两个核心概念。
1、类(class)
类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用。
其中特征被称为属性,行为被称为方法。
举例说明下:
可以把类看作是制造飞机时的图纸,当工厂拿到这张图纸之后,就可以使用这张图纸制造出飞机了。我们可以在这张图纸上指定飞机具体什么样的特征,以及飞机具有什么样的行为。
在面向对象开发中,我们通常把特征叫做属性,把行为叫做方法。
类可以理解为是一个模板,通过它可以创建出无数个具体实例。它的职责很单一,就是负责创建对象的。
2、对象
对象是由类创建出来的一个具体存在,可以直接使用。
由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法。
可以把对象理解为根据图纸制造出来的飞机。
在程序开发中,应该先有类,再有对象。
总结:
类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象。
类只有一个,而对象可以有很多个。不同的对象之间属性可能会各不相同。
类中定义了什么属性和方法,对象中就有什么属性和方法,不可能多,也不可能少。