- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
第PAGE1页共NUMPAGES16页
第11章:面向对象程序设计
本章导读:
面向对象编程(oop)是一种程序设计思想,即把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。Python是一门面向对象的高级编程语言,养成面向对象的编程思想,对学习Python编程语言非常重要。
11.1面向对象编程
在面向对象编程中,总是离不开类和实例这两个概念。什么是类?什么是实例呢?简单来说,类是一类事物的或具有相似特征的事物的抽象,它是抽象的,不能具体化,实例是类的具体化,它是一个具体的东西,是真实存在的一个事物或者一种群体。
11.1.1面向对象与面向过程的区别
面向过程的程序设计把计算机程序视为一系列的命令集合,也就是一组函数的顺序执行。为了简化程序设计,面向过程的程序设计把函数继续切割为子函数,即把大块函数通过切割成小续函数来降低系统的复杂度。
面向对象的程序设计把计算机程序视为一组对象的集合,每个对象都可以接收其他对象发送的数据,并处理这些数据。计算机程序的执行就是一系列数据在各个对象之间的传递。
在Python编程中,所有数据类型都可以看作对象,也可以自定义对象。自定义对象的数据类型就是面向对象中的类。下面以示例11-1来说明面向过程和面向对象在程序设计流程上的区别。
【示例11-1】
假设要处理学生的成绩表,面向过程的程序设计如下:
1. std1={name:张三,age:12}
2. std2={name:李四,age:13}
3. defprint_age(std):
4. print(%s:%s%(std[name],std[age]))
5. print_age(std1)
6. print_age(std2)
【代码解析】
第1、2行:分别定义两个字典std1和std2,字典中存放学生姓名和年龄的信息。
第3、4行:定义print_age函数,该函数接收一个字典类型的参数。
第4行:输出参数中的内容。
第5、6行:分别输出std1和std2中的学生姓名和年龄。
【程序运行结果】
程序运行结果如图11-1所示,正确地输出了std1与std2中的学生姓名和年龄。
图1-12示例11-1的程序运行结果
示例11-1是面向过程的编程,而面向对象的编程与这种方式截然不同。采用面向对象的程序设计思想,首先思考的不是程序的执行流程,而是学生这种数据类型应该被视为一个对象,这个对家拥有name和age两个属性。如果要输出一个学生的年龄,首先必须创建这个学生对应的对象,然后给对象发送print_age的消息,让对象把自已的数据打印出来。
【示例11-2】
要处理学生的成绩表,面向对象的程序设计如下:
1 classstudent(object):
2 def__init__(self,name,age):#注:__是两个_
3 self.name=name
4 self.age=age
5 defprint_age(self):
6 print(%s:%s%(self.name,self.age))
7 zs=student(张三,12)
8 ls=student(李四,13)
9 zs.print_age()
10 ls.print_age()
【代码解析】
第l行:定义student类。
第2~4行:在__init__函数中定义实例属性name和age。
第5、6行:定义print_age函数,用于输出实例属性。
第7、8行:使用student类分别实例化两个对象zs和ls。
第9、10行:调用对象的print_age方法,输出实例属性的值。
【程序运行结果】
程序运行结果如图11-2所示,正确地输出了对象zs和ls的姓名和年龄,与示例11-1的程序运行结果一致,说明两种编程方法都是可以的。
图11-2示例11-2的程序运行结果
小提示:
面向对象的程序设计思想是从自然界中得来的,因为在自然界中,类和实例的概念是很自然的。类是一种抽象概念,如定义的student类,是指学生这个摄念,而实例是一个个具体的student,如zs和ls是两个具体的student.
面向对象的程序设计思想是抽象出类,根据类创建实列。面向对象的抽象程度比函数要高,因为一个类既包含数据,又包含操作数据的方法
11.1.2类和实例
面向对象最重要的概念就是类和实例,必须牢记,类是抽象
文档评论(0)