首先说明一下,python既是面向过程的语言,也是面向对象的语言,所以说python很灵活。
一句话简单说一下什么叫做面向对象编程OOP(object-oriented programing):面向对象就是将现实中的实物进行抽象化然后在编程中用类表示对象,用方法表示对象的活动。
下面详细讲一下面向对象。
1、为什么要面向对象?面向过程的程序设计的局限
在面向过程程序设计中,被操作的数据仍然是嵌入在编程语句中的,并且与程序逻辑混合在一起,计算机的信息世界与现实世界之间的映射关系仍然不直接,不明确。用面向过程的方法开发较大的软件系统,数据缺乏保护。使用面向过程程序设计方法建立的应用程序是很难修改。
Python中一切皆对象。
2、面向对象程序设计的概念
面向对象程序设计是建立在结构化程序设计基础上的,但它不再是从功能入手,而是从对象(人、地方、事情等)入手;
面向对象程序设计以类作为构造程序的基本单位,它具有封装、数据抽象、继承、多态等特点;一般意义上的对象是现实世界中的一个实际存在的事物,可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划),是构成世界的一个独立单位,具有:
对象标识:即对象名,是一个对象区别于其他对象标识符。
对象状态:可以用某种数据来描述
对象行为:对象所表现的行为或具有的功能
对象、实体与类之间的关系
类是具有相似属性和行为的一组具有实例(对象)的抽象集合。组成类的对象均为此类的实例,类与实例的关系可以看成是抽象与具体的关系
3、面向对象的四大特点
抽象:抽象就是忽略一个主题中与当前目标无关的方面,以便更充分的注意与当前目标有关的方面。抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于描绘程序结构,从而实现这种模型。
继承:是一种联结类的层次模型,并且鼓励类的重用,它提供了明确表述共性的方法。对象的一个新类可以从现有的类中派生。
封装/接口:是把过程和数据包围起来,对数据的访问只能通过已定义的界面,实现一个完全自治、封装的对象 。封装描述了对数据/信息进行隐藏的观念,它对数据属性提供接口和访问函数。在python中不想Java中对变量进行访问控制,所以要用接口对特定数据进行访问。
多态:多态的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需考虑他们具体的类。多态表明了动态(又名,运行时)绑定的存在,允计重载及运行时类型确定和验证。不同类的对象对同意消息作出响应,包括参数化多态性和包含多态性
4、面向对象设计思路
自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。
程序结构:
按功能划分为若干个基本模块,形成一个树状结构。
各模块间的关系尽可能简单,功能上相对独立;每一模块内部均由顺序、选择和循环三种基本结构组成。
其模块化实现的具体方法是使用子程序。