实用软件工程 教学课件 ppt 作者 李龙澍1 第7章 类和对象的设计

上传人:w****i 文档编号:94483958 上传时间:2019-08-07 格式:PPT 页数:42 大小:168.50KB
返回 下载 相关 举报
实用软件工程 教学课件 ppt 作者 李龙澍1 第7章 类和对象的设计_第1页
第1页 / 共42页
实用软件工程 教学课件 ppt 作者 李龙澍1 第7章 类和对象的设计_第2页
第2页 / 共42页
实用软件工程 教学课件 ppt 作者 李龙澍1 第7章 类和对象的设计_第3页
第3页 / 共42页
实用软件工程 教学课件 ppt 作者 李龙澍1 第7章 类和对象的设计_第4页
第4页 / 共42页
实用软件工程 教学课件 ppt 作者 李龙澍1 第7章 类和对象的设计_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《实用软件工程 教学课件 ppt 作者 李龙澍1 第7章 类和对象的设计》由会员分享,可在线阅读,更多相关《实用软件工程 教学课件 ppt 作者 李龙澍1 第7章 类和对象的设计(42页珍藏版)》请在金锄头文库上搜索。

1、第7章 类和对象的设计,用面向对象的方法对软件系统进行分析设计,首先要做的就是找出系统中的类和对象,对它们各自的属性和操作进行分析和设计。,7.1 建立类和对象的模型 7.2 寻找系统中的类 7.3 确定类或对象之间 7.4 设计类的属性 7.5 设计类的职责 7.6 小结,7.1 建立类和对象的模型,7.1.1 什么是模型 模型就是为了理解事务而对事务作出的一种抽象,通常是用一组图示符号和组织这些符号的规则来定义和描述问题域中的术语和概念。,信息系统的模型常见的有形式化和图示化两种。形式化描述方法非常精确、严谨,易于系统以后的实现,但难以掌握和理解,模型可读性差,往往只有专业人员才会使用,因

2、而难于推广。图形化方法用一组图示符号和组织这些符号的规则来定义和描述问题域中的术语和概念,模型直观、自然,易于描述系统的层次结构、功能组成,且简单易学,通常还有工具软件支持,因而成为信息系统的主要描述工具,尽管这种方法的精确性和严谨性较差,但实际应用很广泛。,7.1.2 建模的目的 构造模型通常的目的是: (1) 在着手解决一个复杂问题之前,建立与检测解决方案。 (2) 对复杂问题进行适度简化。 (3) 加强视觉效果。 (4) 客户和其他相关人员进行交流。,7.1.3 面向对象分析设计模型的一般形式 一个系统的特征包括两个方面,即静态特征和动态特征。静态模型描述系统的数据结构,主要表现为类或对

3、象包含的属性、行为,以及类或对象相互之间的继承和关联关系;动态模型描述系统的控制结构,主要表现为对象为完成某一功能而相互合作以及它们动作执行的先后顺序。,7.1.3.1 表示类和对象的图形符号 图7.1是类和对象的表示符号,类和对象都用矩形框表示,类或对象名、每个属性、每个操作(行为)都各占一格。,的符号,7.1.3.2 表示类之间关系 继承、聚集(组成)、关联等关系表示符号分别如图7.3、图7.4、图7.5所示。,图7.3 继承关系的表示符号,图7.4 聚集关系的表示符号,图7.5 关联关系的表示符号,两类对象之间的二元关联关系分为三种基本类型,即一对一(1:1),一对多(1:M)和多对多(

4、M:N)分别用数字1:1、1:0*和0* :0*标识在表示关联关系的横线下。,7.1.3.3 表示对象的行为以及相互合作的符号 所有的对象都具有自己的生命周期(或称为运行周期)。生命周期中的阶段也就是对象的状态。系统运行过程中各对象之间总是在相互作用,某一对象受到其它对象的触发(如发送消息要求服务),就会发生状态的改变。,图7.7 对象状态变化的表示符号,状态图总是针对某个特定的对象而言的,描述该对象响应一系列事件触发发生的状态转变。状态图中定义的状态有初始状态、最终状态、中间状态、复合状态。,我们常用时序图来描述几个对象的交互作用。表示符号如图7.9所示。,图7.9 三个对象交互的时序图,设

5、计一个优秀的面向对象软件系统至少要遵循以下原则: (1) 模块化与系统分解 (2) 抽象 (3) 信息隐蔽 (4) 模块间弱耦合和模块内强内聚 (5) 可重用,7.1.4 面向对象分析设计的一般原则,7.2 寻找系统中的类,7.2.1 列出需求说明中的名词 软件系统中的很多类或对象都是待解决问题中有意义的事物的抽象,关键是抓住需求说明中的名词,重点考虑如下四个方面: (1) 自然物理对象 (2) 概念实体 (3) 人或组织的角色 (4) 发生的事件,提取名词作为初选出的类时,应注意以下原则: (1)选择一个最有意义的词。 (2)修饰语也常常是发现类属性的线索。 (3)被动语态写成的句子,通常有

6、隐含的主语。 (4) 对类的种类进行建模。 (5) 从属性值抽象出类。,7.2.2 筛选出候选类 对列出的名词作个初步筛选。方法如下: (1) 去除重复的概念,保留一个最确切的名称。 (2) 去除无关的概念,只保留与问题密切相关的概念。 (3) 去除笼统的概念,用明确具体的名称代替它们。,(4) 去除属性。 (5) 去除操作。 (6) 去除实现细节性的名词。,7.3 确定类或对象之间的关系,7.3.1 找出关联关系 分析关联关系能促使分析员考虑问题的边缘情况,有助于发现那些尚未被发现的类。 (1) 从动词短语初步找出关联 (2) 筛选出必要的关联 (3)划分主题,7.3.2 组成关系 组成关系

7、是一种特殊的关联关系。组成关系实际上描述的是所谓“的一部分”、“组成”或者“包含”这样一类关系,即部分与整体之间的关系。,7.3.3 继承关系 有两种方式可以发现和建立继承关系: (1) 自底向上。 当子类具有和父类相同的属性和行为时,它们存在着继承关系。,(2) 自顶向下。 把现有的类细化成更具体的子类,留意那些带有修饰词的名词和名词词组,它们往往暗示了一些具体类。过深的子类嵌套会难于理解,通常经过仔细考虑和少量的重构造,就能减少过多的继承层次。,7.4 设计类的属性,类的属性就是类的性质,对象取不同的属性值就有不同的状态。 一般来说,确定属性的过程包括分析和筛选两个步骤。 (1) 分析 属

8、性的确定既与问题域有关,也和目标系统的任务有关。应该仅考虑与具体应用直接相关的属性,不要考虑那些超出所要解决的问题范围的属性。,(2) 筛选 仔细认真地考虑那些经初步分析而确定下来地属性,从中删掉不正确的或不必要的属性。 判别是属性还是对象 识别冗余属性 去除链属性 区分属性和内部状态 不应过于细化 去除无关属性,7.5 设计类的职责,类必须有其独立存在的意义,就是说,既具备一定的属性,又负有一定的职责,即对外提供服务。 先弄清系统的职责,再将这些职责分配到每个类。在分析开始前,我们已经拥有了两个重要的资源:需求说明和初步确定的类。,7.5.1 分析系统的交互行为 我们通过编写典型交互行为的脚

9、本的方式来明确系统的行为。 脚本是指系统在某一执行期间内出现的一系列事件。,脚本描写的范围并不是固定的,既可以包括系统中发生的全部事件,也可以只包括由某些特定对象触发的事件。脚本描写的范围主要由编写脚本的具体目的决定。 首先编写正常情况的脚本。然后,考虑特殊情况 。,7.5.2 将交互行为分配到类或对象 首先,我们要根据脚本确定系统中发生了哪些事件。这些事件包括: (1) 系统与用户或外部设备交互的所有信号、输入输出、中断、动作等等。正常情况和异常情况下发生的事件都必须考虑在内。,(2) 发送信息的对象的动作。大多数对象到对象的交互行为都对应着事件。如前台终端请求中央计算机验证用户的身份,就对

10、应了一个事件。,接着,我们要明确事件的发送对象和接受对象。某事件对于它的发送对象来说是输出事件,但是对于它的接受对象来说则是输入对象。当一个事件的发送和接受对象相同时,这个事件就既是输出事件又是输入事件,比如,自发消息。,然后,我们要理清事件发生的先后顺序,这在脚本中也应有大致的表现,不清楚的情况要与领域专家咨询和讨论。,最后,分正常情况和异常情况分别画出对象交互的时序图。时序图描述了各个对象的协作执行顺序,上面的事件先执行,下面的事件后执行。,图7.24 正常情况下售货时序图,图7.25 异常情况下退货时序图,有的系统中会有某个类与其它类的交互行为相当复杂,这时仅仅时序图对这个类的描述可能还

11、不够清楚,这时我们就需要把这个类单独提出来,用状态图加以分析。如果围绕一个对象发生的事件较少,问题较简单,就不必画出它的状态图来分析。,图7.26 收款对象的状态图,7.6 小结,面向对象的分析设计方法,首先要做的是找出系统中的类和对象,对它们各自的属性和操作进行分析和设计。,首先找出系统中的类,然后确定类或对象之间的关系,接着再设计类的属性,最后确定类的职责。初学者应该严格按照这些方法、步骤先分析设计一些简单的系统,主要是在学习中建立起以对象为中心来分析系统设计问题的思维方式。,但是,对象的设计不是个严格的流水线操作过程,很多问题的发现和解决是相互启发和补充的,比如,几个类的公共属性导致了继承关系的发现,新加入的操作需要给类补充新的属性。所以,面向对象的分析设计方法是相当灵活的,由于对象模型在整个开发阶段都是有用的,整个分析设计过程就是一个反复修改完善的过程。在系统实现前,分析阶段的设计结果可能还会有必需的改动,这和系统的实现语言和开发环境有较大关系。,

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号