1、任务任务6 面向对象编程面向对象编程学生信息管理程序学生信息管理程序任务6 面向对象编程学生信息管理程序目录CONTENTS1任务描述2面向对象编程概述3类和对象4类的方法5对象初始化6继承7任务实现目录C O N T E N T S 1 任务描述2 面向对象编程概述3 类和对象401 任务描述任务描述通过前面内容的学习,了解如何在Python 编程语言中进行程序调试与测试,掌握了调试和测试的方法,通过调试猜数程序详细介绍了调试的过程。本章将学习面向对象编程,并完成“学生信息管理”的实现。“学生信息管理”程序会通过面向对象的方法设计学生类Student,包含一个学生姓名(Name)、性别(Ge
2、nder)、年龄(Age),然后设计学生记录管理类StudentList来管理一组学生记录。0 1 任务描述通过前面内容的学习,了解如何在P y t h o n 编01 任务描述任务描述任务描述如下:(1)设计学生类Student和学生记录管理类StudentList;(2)增加学生记录的函数insert与_insert;(3)增加更新记录的函数update与_update;(4)设计删除记录的函数是delete与_delete;(5)启动无限循环,在命令提示符号“”后面输入show、insert、update、delete、exit命令,实现学生信息管理的功能。0 1 任务描述任务描述如下:
3、02 面向对象编程概述面向对象编程概述面向对象编程是最有效的软件编写方法之一,是软件工程领域中的重要技术,这种软件开发思想比较自然地模拟了人类对客观世界的认识,成为当前计算机软件工程学的主流方法。Python作为一门面向对象编程语言,掌握面向对象编程思想至关重要,因此,本章我们来学习面向对象编程,通过本章的学习,大家能够建立面向对象的编程思想,学会使用这种思想开发程序。0 2 面向对象编程概述面向对象编程是最有效的软件编写方法之一02 面向对象编程概述面向对象编程概述面向对象编程Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单
4、元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。0 2 面向对象编程概述面向对象编程O b j e c t O r i e03 类和对象类和对象(
5、1)类与对象简介在进行Python面向对象编程之前,首先了解几个术语:类、类对象、实例对象、属性、函数和方法。类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义:注意:类名后面有个冒号,block要向右边缩进,在block块里面就可以定义属性和方法了。0 3 类和对象(1)类与对象简介注意:类名后面有个冒号,b l03 类和对象类和对象(2)类属性类属性是与类绑定的,它是被这个类所拥有的,如果要修改类的属性就必须使用类的名称访问它,而不能使用对象实例访问它。Python的这个功能特性与JavaScript的特性很像,实例有结合任何属性的功能,只要执行:对象实例.属性=.为这个对
6、象实例赋值,那么如果该对象实例存在这个属性,这个属性的值就被改变,但是如果不存在该属性就会自动为该对象实例创建一个这样的属性。0 3 类和对象(2)类属性03 类和对象类和对象(3)访问的权限前面的Student中的name和age都是共有的属性,可以直接在类外通过对象名访问,如果想定义成为私有的,则需要在前面添加2个下画线“_”。创建一个文档Student3.py,具体代码如下。0 3 类和对象(3)访问的权限03 类和对象类和对象(4)案例:Student类属性执行后,运行结果如下。由此可见,通过对象p与Person类名称都可以读取到类属性name、gender、age。0 3 类和对象(
7、4)案例:S t u d e n t 类属性执行后,运行结04 类的方法类的方法(1)实例方法实例方法就是通过实例对象调用的方法,在类中可以根据需要定义一些方法,定义方法采用def关键字,在类中定义的方法至少会有一个参数,一般以名为self的变量作为该参数(用其他名称也可以),而且需要作为第一个参数。0 4 类的方法(1)实例方法04 类的方法类的方法(2)类方法在类中可以定义属于类的属性,也可以定义属于类的方法,这种方法要使用classmethod来修饰,而且第一个参数一般命名为cls(也可以是别的名称)。创建文档Student6.py,具体案例代码如下。执行后,运行结果如下。0 4 类的方
8、法(2)类方法执行后,运行结果如下。04 类的方法类的方法(3)静态方法静态函数通过staticmethod修饰,要访问类的静态函数,可以采用类名称调用。在调用这类的函数时,不会向函数传递任何参数。执行后,运行结果如下。0 4 类的方法(3)静态方法执行后,运行结果如下。04 类的方法类的方法(3)静态方法静态函数通过staticmethod修饰,要访问类的静态函数,可以采用类名称调用。在调用这类的函数时,不会向函数传递任何参数。执行后,运行结果如下。其中,display就是静态方法,show是类方法,它们都是用Student类名称调用,只是Student.show()会把Student传递给
9、def show(classme)的参数classme,但是Student.disp()不传递任何参数。classmethod修饰的函数与staticmethod修饰的函数最大的区别是classmethod的函数被类名称或者类调用时会传递一个类的名称给它的第一个参数,但是staticmethod的函数被类名称或者类实例调用时就不会传递任何参数给这个函数。0 4 类的方法(3)静态方法执行后,运行结果如下。其中,d i04 类的方法类的方法(4)案例:Student类方法通过编写学生个人信息类实例方法、类方法以及静态方法,然后通过程序分析其方法的调用。我们需要创建一个文档Student8.py,
10、具体案例代码如下。执行后,运行结果如下。使用类方法classShow()一般采用类的名称调用,调用时需要向类方法传递类参数,例如:Student.classShow();使用静态方法调用,一般采用类的名称调用,调用时不需要向静态方法传递任何参数。0 4 类的方法(4)案例:S t u d e n t 类方法执行后,运行结05 对象初始化对象初始化在面向对象的程序设计中,对象实例化往往要对实例做一些初始化的工作,例如设置实例属性的初始值,而这些工作是自动完成的,因此有默认的方法被调用,这个默认的方法就是构造函数,与之匹配的是析构函数。0 5 对象初始化在面向对象的程序设计中,对象实例化往往要对实
11、05 对象初始化对象初始化(1)构造方法与析构方法在Python中有一些内置的方法,这些方法命名都有比较特殊的地方,比如其方法名以2个下画线开始然后以2个下画线结束。类中最常用的就是构造方法和析构方法。构造方法_init_(self,.)在生成对象时调用,可以用来进行一些初始化操作,不需要显示去调用,系统会默认去执行。如果用户自己没有重新定义构造的方法,系统就会自动执行默认的构造方法。建立构造方法的格式如下:class 类名():Def _init_(参数):构造方法主体部分0 5 对象初始化(1)构造方法与析构方法05 对象初始化对象初始化(2)对象的初始化构造函数_init_是建立对象实例
12、的自动调用函数,可以在这个函数中为实例对象初始化属性值。下面,我们通过实例介绍对象的初始化,新建一个文档student11.py,代码如下。执行后,运行结果如下。在本程序中,执行语句p=Student(李丽,女,21)时调用_init_函数,并传递4个参数给它,通过以下语句这个实例生成了name,gender,age属性,而且值由参数n、g、a确定。注意这几个属性是实例对象自己的属性,不是类Student的类属性。0 5 对象初始化(2)对象的初始化执行后,运行结果如下。在本05 对象初始化对象初始化(3)self参数类的实例方法都至少带有一个参数,而且第一个参数通常命名为self,在实例调用
13、这个方法时会把实例自己传递给这个self参数。下面,我们通过实例来解释self参数,新建文档student13.py,代码如下。执行后,运行结果如下。其中Student.show(p)的效果与p.show()是一样的,只是Student.show(p)时直接把实例p传递给self参数,而p.show()调用时p默认自动传递给show的是self,因此在show中都可以使用self.name,self.gender,self.age访问到p的属性。0 5 对象初始化(3)s e l f 参数执行后,运行结果如下。其中05 对象初始化对象初始化(4)案例:日期类通过编写一个日期类MyDate,拥有
14、年月日的数据,定义MyDate._init_函数实现对象的初始化,在数据不合理时抛出异常。新建文档MyDate.py,代码如下。执行后,运行结果如下。0 5 对象初始化(4)案例:日期类执行后,运行结果如下。06 继承继承面向对象编程(OOP)语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无须重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类被称为“子类”或“派生类”,被继承的类被称为“基类”“父类”或“超类”,继承的过程,就是从一般到特殊的过程。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现
15、多重继承,可以通过多级继承来实现。0 6 继承面向对象编程(O O P)语言的一个主要功能就是“06 继承继承继承概念的实现方式主要有2类:实现继承、接口继承。实现继承是指使用基类的属性和方法,而无须额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力(子类重构父类方法)。在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。0 6 继承继承概念的实现方式主要有2 类:实现继承、
16、接口继承。06 继承继承(1)派生与继承定义一个学生类Student-com,包含姓名name、性别gender、年龄age,还包含所学专业的major、所在院系dept,那么就没有必要重新定义Student类,只要从已经定义的Student类继承过来就行。新建一个文档student14.py,代码如下。执行后,运行结果如下。0 6 继承(1)派生与继承执行后,运行结果如下。06 继承继承(2)构造函数的继承从Student-com类的定义可以看出派生类的构造函数除了完成自己新增加的major、dept属性的初始化外,还要调用基类Student的构造函数,而且还要显示调用,即:Student.
17、_init_(self,name,gender,age)通过类名称Student直接调用Student的_init_函数,并且提供所要的4个参数,继承类是不会自动调用基类的构造函数的,必须显示调用。0 6 继承(2)构造函数的继承06 继承继承(3)属性方法的继承如果一个基类中有一个实例方法,在继承类中也可以重新定义完全一样的实例方法,例如Student有show方法,在Student-com中也有一样的show方法,它们是不会混淆的,称Student-com类的show重写了Student的show。当然一个基类的实例方法也可以不被重写,派生类会继承这个基类的实例方法,派生类也可以增加自己的
18、新实例方法。0 6 继承(3)属性方法的继承06 继承继承(4)案例:日期时间类前面我们通过编写一个日期类MyDate,拥有年月日的数据,接下来,再增加时分秒的数据,派生出日期时间类MyDateTime。新建文档MyDateTime.py,代码如下。执行后,运行结果如下。0 6 继承(4)案例:日期时间类执行后,运行结果如下。07 任务实现任务实现本项目通过面向对象的方法设计学生类Student,包含一个学生姓名(Name)、性别(Gender)、年龄(Age),然后设计学生记录管理类StudentList来管理一组学生记录。代码如课表所示。在本程序中首先设计学生类Student,然后设计学生
19、记录管理类StudentList,在该类中有一个students=是一个列表,列表的每个元素是一个Student对象,这样就记录了一组学生。增加学生记录的函数是insert与_insert,其中insert函数完成学生信息的输入,_insert完成学生的真正插入,插入时通过扫描学生学号No确定插入学生的位置,保证插入的学生是按照学号从小到大排列的。0 7 任务实现本项目通过面向对象的方法设计学生类S t u d e n07 任务实现任务实现更新记录的函数是update与_update,其中update完成学生信息的输入,_update完成学生记录的真正更新,更新时通过扫描学生学号No确定学生的
20、位置,学号不能更新。删除记录的函数是delete与_delete,其中delete完成学生学号的删除,_delete函数完成学生的记录真正删除。Process函数启动一个无限循环,不断显示命令提示符号“”,等待输入命令,能接受的命令是show、insert、update、delete、exit,其他输入无效。0 7 任务实现更新记录的函数是u p d a t e 与_ _ u p d a t e小结小结通过本章内容,了解了 Python 对象编程的基本知识,包括面向对象概述,类和对象,介绍了类的3种方法,并通过设置Student类详细介绍类的属性和方法的设置然后介绍了对象初始化的实现,构造方法和析构方法的使用以及self参数的设置,最后介绍了继承的种类和使用。通过本章内容,即可成功使用 Python 创建学生信息系统,完成学生信息系统中学生信息的显示、增加、更新、删除等功能。小结通过本章内容,了解了 P y t h o n 对象编程的基本知识,谢谢PPT模板下载: 谢谢P P T 模板下载:w w w.1 p p t.c o m/m o b a n/