第6章面向对象程序设计.ppt

上传人:可****阿 文档编号:75316920 上传时间:2023-03-03 格式:PPT 页数:18 大小:276KB
返回 下载 相关 举报
第6章面向对象程序设计.ppt_第1页
第1页 / 共18页
第6章面向对象程序设计.ppt_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《第6章面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《第6章面向对象程序设计.ppt(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第6章章 面向对象程序设计面向对象程序设计主讲主讲 夏敏捷夏敏捷计算机学院副教授计算机学院副教授6.1面向对象程序设计基础现实生活中的每一个相对独立的事物都可以看做一个对象,例如,一个人,一辆车,一台电脑等。对象是具有某些特性和功能的具体事物的抽象。每个对象都具有描述其特征的属性及附属于它的行为。面向对象程序设计是一种计算机编程架构,它具有以下3个基本特性。(1)封装性(Encapsulation)(2)继承性(Inheritance)(3)多态性(Polymorphism)Python完全采用了面向对象程序设计的思想,是真正面向对象的高级动态编程语言,完全支持面向对象的基本功能,如封装、继

2、承、多态以及对基类方法的覆盖或重写。但与其他面向对象程序设计语言不同的是,Python中对象的概念很广泛,Python中的一切内容都可以称为对象,而不一定必须是某个类的实例。例如,字符串、列表、字典、元组等内置数据类型都具有和类完全相似的语法和用法。创建类时用变量形式表示的对象属性称为数据成员或成员属性,用函数形式表示的对象行为称为成员函数或成员方法,成员属性和成员方法统称为类的成员。6.2类和对象面向对象程序设计的一个关键性观念是将数据以及对数据的操作封装在一起,组成一个相互依存、不可分割的整体,即对象。对于相同类型的对象进行分类、抽象后,得出共同的特征而形成了类,面向对象程序设计的关键就是

3、如何合理地定义和组织这些类以及类之间的关系。6.2.1类定义语法Python使用class关键字来定义类,class关键字之后是一个空格,然后是类的名字,再然后是一个冒号,最后换行并定义类的内部实现。类名的首字母一般要大写,当然您也可以按照自己的习惯定义类名,但是一般推荐参考惯例来命名,并在整个系统的设计和实现中保持风格一致,这一点对于团队合作尤其重要。例如:class Car:def infor(self):print(This is a car)6.2.1类定义语法定义了类之后,可以用来实例化对象,并通过“对象名.成员”的方式来访问其中的数据成员或成员方法,例如下面的代码:car=Car(

4、)car.infor()This is a car在Python中,可以使用内置方法isinstance()来测试一个对象是否为某个类的实例,下面的代码演示了isinstance()的用法。isinstance(car,Car)True isinstance(car,str)Falseself参数类的所有实例方法都必须至少有一个名为“self”的参数,并且必须是方法的第一个形参(如果有多个形参的话),“self”参数代表将来要创建的对象本身。在类的实例方法中访问实例属性时需要以“self”为前缀,但在外部通过对象名调用对象方法时并不需要传递这个参数,如果在外部通过类名调用对象方法则需要显式为s

5、elf参数传值。【例6-2】定义一个复数类Complex,构造函数完成对象变量初始化工作。class Complex:def _init_(self,realpart,imagpart):self.r=realpart self.i=imagpartx=Complex(3.0,-4.5)print(x.r,x.i)6.2.2构造函数_init_Python中类的析构函数是_del_,用来释放对象占用的资源,在Python收回对象空间之前自动执行。如果用户未涉及析构函数,Python将提供一个默认的析构函数进行必要的清理工作。6.2.3析构函数classComplex:def_init_(sel

6、f,realpart,imagpart):self.r=realpartself.i=imagpartdef_del_(self):print(Complex不存在了)x=Complex(3.0,-4.5)print(x.r,x.i)print(x)delx#删除x对象变量实例属性属于实例(对象)只能通过对象名访问;类属性属于类可通过类名访问,也可以通过对象名访问,为类的所有实例共享。6.2.4实例属性和类属性【例6-3】定义含有实例属性(姓名name,年龄age)和类属性(人数num)的Person人员类。classPerson:num=1#类属性def_init_(self,str,n):

7、#构造函数self.name=str#实例属性self.age=ndefSayHello(self):#成员函数print(Hello!)defPrintName(self):#成员函数print(姓名:,self.name,年龄:,self.age)defPrintNum(self):#成员函数print(Person.num)#由于是类属性,所以不写self.num#主程序P1=Person(夏敏捷,42)P2=Person(王琳,36)P1.PrintName()P2.PrintName()Python并没有对私有成员提供严格的访问保护机制。在定义类的属性时,如果属性名以两个下划线“_”

8、开头则表示是私有属性,否则是公有属性。私有属性在类的外部不能直接访问,需通过调用对象的公有成员方法来访问,或者通过Python支持的特殊方式来访问。Python提供了访问私有属性的特殊方式,可用于程序的测试和调试,对于成员方法也有同样性质。6.2.5私有成员与公有成员classCar:price=100000#定义类属性def_init_(self,c,w):self.color=c#定义公有属性colorself._weight=w#定义私有属性_weight#主程序car1=Car(Red,10.5)car2=Car(Blue,11.8)print(car1.color)print(car

9、1._Car_weight)print(car1._weight)#AttributeError在类中定义的方法可以粗略分为3大类:公有方法、私有方法、静态方法。其中,公有方法、私有方法都属于对象,私有方法的名字以两个下划线“_”开始,每个对象都有自己的公有方法和私有方法,在这两类方法中可以访问属于类和对象的成员;公有方法通过对象名直接调用,私有方法不能通过对象名直接调用,只能在属于对象的方法中通过“self”调用或在外部通过Python支持的特殊方式来调用。6.2.6方法6.3类的继承和多态6.3.1 6.3.1 类的继承类的继承class 派生类名(基类名):#基类名写在括号里 派生类成员

10、classParent:#定义父类parentAttr=100def_init_(self):print(调用父类构造函数)defparentMethod(self):print(调用父类方法)defsetAttr(self,attr):Parent.parentAttr=attrdefgetAttr(self):print(父类属性:,Parent.parentAttr)classChild(Parent):#定义子类def_init_(self):print(调用子类构造函数)defchildMethod(self):print(调用子类方法childmethod)6.3.2类的多继承Py

11、thon的类可以继承多个基类。继承的基类列表跟在类名之后。类的多继承语法:class SubClassName(ParentClass1,ParentClass2,.):派生类成员classA:#定义类A.classB:#定义类B.classC(A,B):#派生类C继承类A和B.6.3.3方法重写6.3.3 6.3.3 方法重写方法重写重写必须出现在继承中。它是指当派生类继承了基类的方法之后,如果基类方法的功能不能满足需求,需要对基类中的某些方法进行修改,可以在派生类重写基类的方法,这就是重写。6.3.4多态多态的好处就是,当我们需要传入Dog、Cat、Tortoise时,我们只需要接收Ani

12、mal类型就可以了,因为Dog、Cat、Tortoise都是Animal类型,然后,按照Animal类型进行操作即可。由于Animal类型有run()方法,因此,传入的任意类型,只要是Animal类或者子类,就会自动调用实际类型的run()方法,这就是多态的意思。6.3.5运算符重载在Python中可以通过运算符重载来实现对象之间的运算。Python把运算符与类的方法关联起来,每个运算符对应一个函数,因此重载运算符就是实现函数。常用的运算符与函数方法的对应关系如表6-1所示。面向对象应用扑克牌类设计【案例】采用扑克牌类设计扑克牌发牌程序。4名牌手打牌,电脑随机将52张牌(不含大小鬼)发给4名打牌,在屏幕上显示每位牌手的牌。程序的运行效果如图6-1所示。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com