第九章面向对象设计_第1页
第九章面向对象设计_第2页
第九章面向对象设计_第3页
第九章面向对象设计_第4页
第九章面向对象设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章面向对象设置修订、引言、9.1面向对象设置修订的概念、面向对象设置修订强调定义软件对象,使这些软件对象相互协作以满足用户的需要。 面向对象分析和设定修订的边界模糊,是从面向对象分析到面向对象设定修订逐渐扩展模型的过程。 分析的结果通过细分生成直接设定修正结果,在设定修正过程中加深需求的理解,进一步充实需求分析的结果。 分析和设定活动是一个反复的过程。 面向对象方法论的概念和表达方法的一致性确保了各开发阶段之间的平滑性。 面向对象的设定修正首先进行上层设定修正:确定系统的整体构造和风格,构筑系统的物理模型,将系统分割成不同的子系统。 中层设置修订:设定各用例,修订实现用例功能的重要类,决定

2、类间的关系。 进行基础设置修订:详细设置修订各类,设置修订类的属性和操作,优化类之间的关系。 对实现非功能性需求所需的课程进行补充。 面向对象设置修订和结构化设置修订的过程和方法完全不同,要设置修订高质量的软件系统,需要设置接口,发现变化,将其封装前考虑聚合继承、强聚集、类聚集设置修订类原则是一个类的属性和操作都有的类例如,修订平衡二叉树类,这类目的是解决平衡二叉树的访问,其中的所有属性和操作都与解决这个问题相关,其他无关的属性和操作在这里应该用垃圾去除。 在弱耦合、面向对象的设定订正中,耦合主要是指不同对象间的相互关系的程度。 如果某个对象过于依赖于其他对象而完成了自己的工作,则不仅该对象的

3、理解性降低,而且测试、修改的难度也增加,类的重用性和移植性也降低。 对象不能完全孤立。 如果两个对象必须相互关联,则必须通过类的公共接口进行联接,而不依赖于类的具体实现细节。 如果、组合(继续)和互相组合对象之间的组合通过消息连接来实现,则该组合是互相组合。 在修改设置时,必须尽量减少对象之间发送的消息数和消息中的残奥仪表数,以降低消息连接的复杂性。耦合(续)、继承耦合继承耦合是一般化类和专门化类之间的关联形式,在设置修改时应该恰当地使用该耦合。 一般化类和专门化类之间的继承关系在设置修订时必须特别认真分析,如果抽象级别不合理,专门化类的修改可能会影响一般化类,降低系统的稳定性。 另外,设置修

4、正时的特殊化类应该尽可能多地继承使用一般化类的属性和服务,活用继承的优点。 再利用性,软件的再利用从设置修订阶段开始,所有的设置修订作业为了完成系统期待的任务,提高生产率,减少错误,降低成本,必须充分考虑软件要素的再利用性。 重用性有两个意义:尽可能使用开发环境提供的类库和包含现有类似类的现有类。如果需要创建新类,请在修改这些新类时考虑将来的重用性。 设置和修改可重复使用的软件比设置和修改普通软件的成本更高,但随着这些软件被重复使用的次数的增加,分配给它的设置和实现成本降低,框架、框架的各种不同框架中的类通常是抽象类,它们相互关联,可以通过继承使用。 例如,javaapplicationint

5、erface(API )是一个成功的框架包,它为许多应用程序提供服务通过继承或聚合创建适合于应用程序的GUI类,而不是直接修改框架中的类。 面向对象设置修订的活动、系统框架设置修订用例设置修订类设置修订数据库设置修订用户界面设置修订。 9.2框架设置修订、框架设置修订的目的是描绘系统的整体结构,这项工作由经验丰富的框架设置修订者主办完成。 该活动以用例模型、解析模型为输入。 输出:物理结构、子系统及其接口、概要的设置修订类。步骤1 :构筑系统的物理模型首先用UML的构成图记述系统的物理框架,将在需求分析阶段捕获的系统功能分配给这些物理节点。 配置图显示了校正节点的拓扑、硬件设备配置、通信路径、

6、在每个节点上运行的系统软件配置和应用软件配置。 一个图书馆信息管理系统的物理模型如图,图有四个区: DMZ区的两个服务主要用于执行组站点。 内部用户区域为组内部LAN用户提供服务。 用户的学习和测试区域有两个目的。 一个是为使用系统的初级用户实际练习的环境。 学习系统的应用环境与实际系统完全相同,数据库的数据都是练习数据。 第二个目的是在新版本正式上线之前提供测试环境。 由于业务系统经常在使用过程中发生变化,容易引入错误和问题,因此为了使业务正常运行,正式系统必须位于需要大量实时运行新版本系统的net隔离区域内,3台应用服务器将成为全国所有的用户业务2台数据库服务器进行2台热备盘物理闸门为了实

7、现内外网的隔离使互联网和利用通信线路的用户并存,分别设置了2条线路,用链路负载平衡器调整线路负载,使全国各地的用户可以顺利使用该系统然后,可以设置第二步骤子系统以将复杂软件系统划分成若干子系统并在子系统中继续划分该子系统或封装,由此自上而下、分段细分的组织结构是人类分析问题的设想在这种情况下,不要描述子系统的内部实现。 1 )按照划分每个子系统的方法:按功能进行划分,将类似功能组织到一个子系统中,按照系统的物理布局将同一物理区域内的软件组织到一个子系统中,按照软件层划分子系统,则软件层通常是用户I 具体的表现请参照附图。 另外,用户界面层是与用户应用密切相关的内容,主要接受用户的输入信息,并将

8、系统的处理结果显示给用户。 由于这部分的变化通常很大,所以最好剥离界面层,用快速高效的工具实现。 专用软件层是各个项目的特殊的应用部分,再利用的可能性很低。 开发时可以适当地减小软件元素的粒度,隔离更多可重复使用的组件,减小专用软件层的规模。 通用软件层由几个通用组件组成,这些组件具有很好的可重用性。 在设定修正应用程序时,首先分离软件的特殊部分和共通部分,基于共通部分的功能检查现有的元件库。 如果有可用的组件,重复使用现有的组件可以大大提高软件的开发效率和质量。 如果没有可重复使用的组件,请尽可能地修改可重复使用的组件,并将其添加到组件库中以供将来重复使用。 数据层主要存储应用系统的数据,通

9、常由数据库管理系统来管理,一般的操作是更新、保存、删除、检索等。 图书馆图书信息管理系统分层:系统层采用微软的Windows操作系统和SQL Server数据库。 数据层主要创建应用程序数据库,如数据库表、视图等。中间层使用微软的ADO.NET实现数据库的插入、修改、删除事务。 通用软件层提供权限管理、用户登录和通用查询类。 专用软件层实现读者查询、借书、还书、处罚、预约、通知等处理。 接口层实现查询接口、借出接口、返还接口、预约接口、通知接口等用户接口。 (2)定义子系统之间的关系:在划分子系统之后,确定子系统之间的关系。 子系统之间的关系:“服务请求”关系,“请求”子系统调用“服务”子系统

10、,“服务”子系统完成服务并将结果返回到“请求”子系统。 平等关系。 每个子系统都可以调用其他子系统。 如果子系统的内容相互关联,则必须定义它们之间的依赖关系。 在修改设置时,必须在相关子系统之间定义接口,并且依赖关系必须指向接口而不是子系统的内容。 注意:如果两个子系统之间的关系过于紧密,则当一个子系统发生更改时,另一个子系统也会发生更改,这使得对该子系统的理解和维护变得困难。 解决子系统之间的关系的方法基本上有两种:重新划分子系统,该方法相对简单,以减少子系统的粒度,或者重新划分子系统的内容,将相互依赖的元素集成到相同子系统中的依赖关系定义接口的子系统的类型每个子系统的接口有一些操作定义,体

11、现了子系统的功能,但是功能的具体实现方式应该是隐藏的,其它子系统只能通过接口间接地享受该子系统提供的服务,而第三步骤非功能需求量非功能要求包括系统安全性、错误监控和故障恢复、可移植性和通用性。 通用的非功能需求在中间层和通用应用层进行了修订,目的是最大限度地利用现有组件,减少重新开发的工作量。 9.3进一步细分用例,用例设计者根据分析阶段生成的上级类图和交互图研究现有的类,并将它们分配给对应的用例。 通过检查每个用例的功能,检查每个用例的特殊需要是否有适当的类,同时检查当前的类是否可以实现。 对每个用例的类图进行细分,以描述实现用例的类及其类之间的相互关系;步骤1 :扫描用例中的所有交互图以标

12、识参与用例解决方案的类。 在设置修订阶段改进类、属性和方法。 例如,每个用例至少需要一个控件类。 通常,没有属性,只有方法,它本身不发挥特定的功能,发挥调整和控制的作用。 每个类的方法通过分析交互图表来获得,并且通常检查所有交互图表发送到类的所有消息。 这成为“读者”类应该提供的方法,例如,当类必须定义的“借阅控制”类向“读者”类发送“检查读者(读者号码)”的消息时。 步骤2 :添加属性类型、方法的残奥元类型和方法的门限值类型。 步骤3 :添加类之间的关系,如关联、依赖和继承。 “借书”用例各级的关系图。 类有三种类型:接口类、控制类和实体类,因此为了清楚起见,控制类用粗线框表示,接口类用斜体

13、表示,实体类用斜体表示。 详细修订9.4级,组件工程师详细修订各级的属性、方法和关系。 第1步:定义类的属性用选定的编程语言定义每个类的属性。类的属性反映类的特性,通常属性封装在类的内部,不允许外部对象的访问,类属性设定修正的注意事项:在分析阶段和概要设定修正阶段定义的一个类属性在详细设定修正时可以分解为多个,减小属性的显示粒度有助于实现和再利用。 但是,如果类的属性过多,则需要确认是否可以分离新类。 如果由于属性而使类变得复杂并且难以理解,则分离某些属性以形成新类。 通常,编程语言提供的数据类型有很大差异,用编程语言约束可用于确定类属性的属性类型。 尽可能使用现有类型来定义属性类型。 过多的

14、自定义类型会降低系统可维护性和可理解性等性能指标。 类的属性结构坚持简单的原则,尽可能不使用复杂的数据结构。设定、修改类属性时必须定义的内容:属性的类型:设定、修改属性时必须根据开发语言决定各属性的数据类型。 如果数据类型不足,则设置修订者可以利用现有的数据类型来定义新的数据类型。 属性的显示设定。 修改属性时,确定公共属性、专用属性和受保护的属性。 设定、修改类属性时的主要选择:属性初始值:如果是默认值,则用户在操作时会很方便。 例如,如果定义了初始默认税率,则修订税的程序不需要用户每次重复输入税率值。 如何在类中存储属性: By value属性位于类中。 By reference (参照)

15、属性位于类的外部,类指向该属性。 这通常是属性本身的对象,例如,“教室”类有“教师”属性,“教师”对象本身在“教室”类以外定义。 在这种情况下,在“教室”类中仅存储指向该外部对象的一个指针。 第二步:定义类的操作是设置组件工程师必须为类的每个方法实现的操作,并用自然语言或伪代码描述操作的实现算法。 一个类可以应用于多个用例,并且每个用例所担当的角色不同,因此需要详细的细节。 修订班级操作的注意事项:分析班级各角色的具体含义,从中找出班级应具有的操作。 阅读类的非功能要求说明,并添加必要的操作。 确定类接口提供的操作。 由于这关系到设置修订的质量,特别是系统的稳定性,因此在确定类接口的操作时特别

16、需要注意。 检查类是否适合每个用例的实现,并添加必要的操作。 不仅系统正常运行,还要考虑特殊情况进行设定、修正。 例如,必须在一个对象结束之前释放占用的资源,在并发系统中,必须在一个任务结束之前通知其他任务其他任务已经结束。错误是意外的系统结束,也就是应用程序错误、system 经验丰富的修订者可以预见有规律的错误,但不能保证即使是再完美的修订,系统也没有错误。 好的设计通常是在可能发生致命错误的地方修改好的出口,在系统结束前尽可能清楚地保持当时的信息和环境,使尽可能多的错误信息反应。 修改类的操作时必须定义的内容:操作说明:说明操作的具体实现内容,操作的处理逻辑可以用伪代码或文字记述。 定义

17、操作的残奥仪表:描述每个残奥仪表的名称和类型。 动作门类型:编程语言的内置数据类型或设置修订者自定义的数据类型。 操作可见性:公共、私有、受保护。 在UML中,用-、#符号表示。 操作异常:说明各操作中的异常处理。 对操作执行前应该满足的条件和操作执行后应该满足的条件进行说明。设定、修改类的操作时的主要选择内容:操作的版型: Implementer型实现业务逻辑功能。navisphere manager提供管理操作,如构造函数、构造函数和内存管理。 使用基于访问的访问属性,如get和set。 Helper类型是完成自己任务的辅助操作。 步骤3定义了类之间的关系设置基数。 一个类的实例和另一个类的实例之间的关系。 在图书馆信息管理系统中,“图书”级和“读者”级相关联,如果需求说明中有“一个读者能借的图书数为0到10册”,它们之间的基数为1:0.10。 使用关系类:用于放置关系属性。 比如“图书”类和“读者”类,如何反映读者的借出状况呢? 可以创建相关类。 此类的属性是“借出日期”。 设定、限定:为了缩小相关范围。 例如,一个目录下有多个文件,但在一个目录范围内确定一个文件,用“文件名”限

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论