- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 面向对象概述 面向对象软件开发的基本思想是从客观事物的特点出发来构造软件系统,在软件开发的各个环节中,尽可能模拟人类的思维方式,使软件开发的方法和过程尽可能接近人类认识世界的观点和解决问题的思路。 把问题领域中事物的特征抽象地描述成类,由类建立的对象作为系统的基本构成单位,它们的内部属性与服务描述了客观存在的事物的静态和动态特征。对象类之间的继承关系、聚集关系、消息和关联反映了问题域中事物之间实际存在的各种关系。 从程序员角度来看,对象是一种将数据、处理数据的操作合并在一起的程序单元;从用户角度看,对象是一种具有某些属性和服务行为的事物。 2.1 基本概念 软件系统的功能是不稳定的、易变的,上下层模块联系的耦合度较大,导致软件的修改“牵一发而动全身”。如何提高软件的稳定性、可维护性? 传统的面向过程的结构化方法,功能与数据并没有有机结合,而是相对分离的,软件的分析设计结构与人类现实世界的环境不一样,分析设计的结果不能直接映射到问题领域,要经过不同程度的转化和重组。 在大型软件项目开发中,从分析到设计,容易屏蔽一些对问题领域的理解偏差,最终编写的程序可能已经较大程度偏离了问题的本来面貌。 用户需求往往是变更的 2.1.1 面向对象方法 面向对象方法(OOM)不是从处理问题的算法细节考虑,而是从系统的组成上进行底层的分解抽象,以更接近人类的思维方式,建立问题领域模型。这样设计出的软件能够更直接的描述现实世界,构造出模块化的、可重性的、可维护的软件,控制软件的复杂度,降低开发成本。 1. 对象 对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。 静态特征是可以用某种数据来描述的特征,称其为对象具有的属性;动态特征是对象所表现的行为或对象所具有的功能,称其为对象提供的服务或操作。 例如,在学籍管理系统中,可以把要管理的每一个学生看作一个对象,不管是张三、李四、王五,都可以看作对象,都要保存他们的学号、姓名、性别、身高、体重、出生日期、专业、班级、宿舍等属性。有时候,这些属性值都要读取或者修改,例如,查询王五的专业和班级(读取)、张三换了宿舍(修改)、李四减肥了(修改)。这就有必要对每一个对象定义一组能够修改或者读取这些属性信息的操作。 2. 类 在现实生活进行“抽象”认知思维时,往往忽略事物的非本质特征,只注意那些与目标有关的本质特征,从而找到事物的共性,把具有共同性质的事物归为同一类。 例如,在学籍管理系统中,张三家里有多少存款,李四的三围是多少,王五早饭爱吃面包还是米粉,完全和问题领域无关。但不管张三、李四、王五,他们的学号、姓名、性别、班级、宿舍等信息,肯定是和“学籍管理”相关的。 类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内容包括属性和服务两个主要部分。 例如,在学籍管理系统中,可以定义一个“学生”类,将问题领域内需要的信息如学号、姓名、性别、身高、体重、出生日期、专业、班级、宿舍等与“学籍管理”这个问题领域相关的属性抽象出来作为“学生”类的数据。 不难理解,类是一种定义,它是属于该类的一组对象共同特征的描述;一个类是用于若干同质对象并描述其内部结构的一个“模板”。 例如,定义了“学生”这个类后,我们就不需要关心具体的张三、李四、王五了,这里不需要逐个描述张三、李四、王五等每一个具体的同学了,只要描述好“学生”这个类,因为类中描绘了所有学生对象的信息结构和操作。 对象的抽象是类,类的具体化就是对象,或者说类的实例是对象。 在面向对象系统中,一个对象实例通过类来生成,从而且定了其拥有的信息结构和行为操作。实例的当前状态由在实力上的操作来确定。 例如,当产生了一个“王五”实例时,系统必须为王五分配学号,这由学生类的“分配学号”操作为当前对象“王五”来完成。 每个对象都能通过不同的对象名称(标识)来引用,不同的实力可以被不同的操作序列来操纵,因而会有不同的内部状态。 3. 数据封装 数据封装就是对象实现了描述其特征的属性和服务的结合,使属性和服务封装于“对象”这个统一体中,形成一个不可分割的独立单位。 例如,可以把不同的时钟产品的数据和功能封装起来,构成一个“时钟”类,按照C++的语法,时钟类声明如下: class Clock { private: int Hour, Minute, Second; public: void SetTime(int NewH, int NewM, int NewS) { Hour = NewH; Minute = NewM; Second = NewS; } void ShowTime() { coutHour:Minute:Secondendl; } }; 此例中
文档评论(0)