python程序设计 课件 第11、12章 封装、继承与多态; 程序设计案例分析.pptx

python程序设计 课件 第11、12章 封装、继承与多态; 程序设计案例分析.pptx

  1. 1、本文档共162页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第11章对象的封装、继承与多态Python程序设计

第11章对象的封装、继承与多态本章介绍Python面向对象程序设计中的封装、继承和多态,运用这些概念与技术,达到程序代码重复使用、稳定且易于维护的目标。方法与运算符的重载,可达到多态的需求。·封装、多态和继承是面向对象开发的三个特点。封装:将对象的实现细节与对象的使用方式分开,允许复杂程序的模块化设计。

第11章对象的封装、继承与多态继承:可以从现有类派生一个新类,支持类之间的方法共享与代码复用。多态:不同的类可以实现具有相同签名的方法,让程序更加灵活,允许单行代码在不同情况下调用不同的方法。

第11章对象的封装、继承与多态·正确设计的类提供了封装。对象的内部细节隐藏在类定义之内,这样程序的其他部分不需要知道对象的实现方式。这种关注点分离是Python中的编程惯例,对象的实例变量只能通过类的接口方法进行访问或修改。

对象的封装1面向对象程序设计过程4继承和多态2对象信息的获取3目录

11.1对象的封装封装的概念限制访问

11.1对象的封装封装是指将一个计算机系统中的数据以及与这个数据相关的一切操作语言(即描述每一个对象的属性以及其行为的程序代码)组织到一起,一并封装在一个实体“模块”(即“类”)中,为软件结构的相关部件所具有的模块性提供良好的基础。在面向对象技术的相关原理以及程序语言中,封装的最基本单位是对象,而使得软件结构的相关部件的实现“高内聚、低耦合”的“最佳状态”便是面向对象技术的封装性所需要实现的基本目标。用户不需要清楚了解对象如何对各种行为进行操作、运行、实现等细节,只需要通过封装外的接口对计算机进行相关操作即可,大大简化了操作步骤。

11.1对象的封装封装提供了一种方便的方式来组成复杂的解决方案。从设计的角度看,封装提供了一种关键服务,分离了“做什么”与“怎么做”。对象的实现与其使用无关。实现可以改变,但只要接口保持不变,依赖对象的其他组件就不会被破坏。封装的另一个优点是它支持代码复用。它允许打包一般组件,在不同程序中使用。

11.1.1封装的概念通过前面的学习我们看到,定义类可以成为模块化程序的好方法。一旦识别出一些有用的对象,就可以用这些对象编写一个算法,并将实现细节推给合适的类定义。主程序只需要关心对象可以执行的操作,而不用操心如何实现它们。在面向对象方法中,对象的实现细节被封装在类定义中。不过,封装只是Python中的编程约定,而不是强制规则。

11.1.1封装的概念使用对象的主要原因之一,是为了在程序中隐藏这些对象的内部复杂性。对实例变量的引用通常应与其他实现细节在一起保留在类定义内。在类之外,与对象的所有交互一般应使用其方法提供的接口来完成。事实上,Python提供的“属性”机制使得实例变量的访问安全而优雅。封装的一个直接优点是它允许独立地修改和改进类,而不用担心“破坏”程序的其他部分。只要类提供的接口保持不变,程序的其余部分甚至不能分辨一个类是否已改变。在设计类的时候,应该努力为每个类提供一套完整的方法。

11.1.2限制访问类的内部有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样就隐藏了内部的复杂逻辑。但是,一般情况下外部代码还是可以自由地修改一个实例的属性的。例如:>>>bart=Student('BartSimpson',59)>>>bart.score59>>>bart.score=99>>>bart.score99

11.1.2限制访问如果要让内部属性不被外部访问,可以在属性名称前加上两个下划线“__”,在Python中,实例的变量名如果以__开头,就变成一个只有内部可以访问私有(private)变量,外部不能访问,所以,我们把Student类改一改:classStudent(object):def__init__(self,name,score):self.__name=nameself.__score=scoredefprint_score(self):print('%s:%s'%(self.__name,self.__score))

11.1.2限制访问修改后,外部代码已经无法从外部访问实例变量.__name和实例变量.__score了:>>>bart=Student('BartSimpson',59)>>>bart.__nameTraceback(mostrecentcalllast):File"<stdin>",line1,in<module>AttributeError:'Student'object

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档