dave-python-练习十五----面向对象编程

dave-python-练习十五----面向对象编程

ID:6667453

大小:78.00 KB

页数:24页

时间:2018-01-21

dave-python-练习十五----面向对象编程_第1页
dave-python-练习十五----面向对象编程_第2页
dave-python-练习十五----面向对象编程_第3页
dave-python-练习十五----面向对象编程_第4页
dave-python-练习十五----面向对象编程_第5页
资源描述:

《dave-python-练习十五----面向对象编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Dave-Python-练习十五----面向对象编程DavePython练习十五--面向对象编程DavePython练习十五--面向对象编程分类:默认分类日期:2011-09-1614:13原文地址:http://blog.csdn.net/tianlesoftware/article/details/6781878分类:Python2011-09-1614:13744人阅读评论(0)收藏举报#encoding=utf-8###***************面向对象编程********************#****

2、*******Part1:面向对象编程***********************#面向对象编程踩上了进化的步伐,增强了结构化编程,实现了数据与动作的融合:数据层和逻#辑层现在由一个可用以创建这些对象的简单抽象层来描述。现实世界中的问题和实体完全暴露了本#质,从中提供的一种抽象,可以用来进行相似编码,或者编入能与系统中对象进行交互的对象中。#类提供了这样一些对象的定义,实例即是这些定义的实现。二者对面向对象设计(object-oriented#design,OOD)来说都是重要的,OOD仅意味来创建你采用面向对象方式

3、架构来创建系统。##1.1面向对象设计与面向对象编程的关系#面向对象设计(OOD)不会特别要求面向对象编程语言。事实上,OOD可以由纯结构化语言来实#现,比如C,但如果想要构造具备对象性质和特点的数据类型,就需要在程序上作更多的努力。当一#门语言内建OO特性,OO编程开发就会更加方便高效。##另一方面,一门面向对象的语言不一定会强制你写OO方面的程序。例如C++可以被认为“更好#的C”;而Java,则要求万物皆类,此外还规定,一个源文件对应一个类定义。然而,在Python中,#类和OOP都不是日常编程所必需的。尽管它从

4、一开始设计就是面向对象的,并且结构上支持OOP,但#Python没有限定或要求你在你的应用中写OO的代码。OOP是一门强大的工具,不管你是准备进入,#学习,过渡,或是转向OOP,都可以任意支配。##1.2现实世界中的问题#考虑用OOD来工作的一个最重要的原因,在于它直接提供建模和解决现实世界问题和情形的途#径。比如,让你来试着模拟一台汽车维修店,可以让你停车进行维修。我们需要建两个一般实体:#处在一个“系统”中并与其交互的人类,和一个修理店,它定义了物理位置,用于人类活动。因为#前者有更多不同的类型,我将首先对它进行描

5、述,然后描述后者。在此类活动中,一个名为Person#的类被创建以用来表示所有的人。Person的实例可以包括消费者(Customer),技工(Mechanic),还#可能是出纳员(Cashier)。这些实例具有相似的行为,也有独一无二的行为。比如,他们能用声音进#行交流,都有talk()方法,还有drive_car()方法。不同的是,技工有repair_car()方法,而出纳#有ring_sale()方法。技工有一个repair_certification属性,而所有人都有一个drivers_license#属性。#

6、#最后,所有这些实例都是一个检查(overseeing)类RepairShop的参与者,后者具有一个叫#operating_hours的数据属性,它通过时间函数来确定何时顾客来修车,何时职员技工和出纳员来上#班。RepairShop可能还有一个AutoBay类,拥有SmogZone,TireBrakeZone等实例,也许还有一个叫#GeneralRepair的实例。##我们所编的RepairShop的一个关键点是要展示类和实例加上它们的行为是如何用来对现实生活#场景建模的。同样,你可以把诸如机场,餐厅,晶蕊,医院,其至

7、一个邮订音乐公司想像为类,它#们完全具备各自的参与者和功能性。##1.3常用术语#1.3.1抽象/实现#抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于#描绘程序结构,从而实现这种模型。抽象不仅包括这种模型的数据属性,还定义了这些数据的接口。#对某种抽象的实现就是对此数据及与之相关接口的现实化(realization)。现实化这个过程对于客户#程序应当是透明而且无关的。#1.3.2封装/接口#封装描述了对数据/信息进行隐藏的观念,它对数据属性提供接口和访问函数。通过任何客户端#直接对数

8、据的访问,无视接口,与封装性都是背道而驰的,除非程序员允许这些操作。作为实现的#一部分,客户端根本就不需要知道在封装之后,数据属性是如何组织的。在Python中,所有的类属#性都是公开的,但名字可能被“混淆”了,以阻止未经授权的访问,但仅此而已,再没有其他预防#措施了。这就需要在设计时,对数据提供相应的接口,以免客户程序通过不规范

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。