《软件工程——理论、方法与实践》课件第7章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《软件工程——理论、方法与实践》课件第7章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程理论、方法与实践 软件工程 理论 方法 实践 课件
- 资源描述:
-
1、1 1第7章 面向对象的设计第7章 面向对象的设计7.1 设计模型7.2 类的设计7.3 设计交互7.4 接口描述7.5 设计变更7.6 用户界面设计7.7 iricher系统的设计本章小结习题2 2第7章 面向对象的设计7.1 设 计 模 型面向对象的设计一般要产生两类设计模型:静态模型:通过系统对象类及它们之间的关系来描述系统的静态结构。动态模型:描述系统的动态结构和系统对象(不是对象类)之间的交互。需要描述的交互包括由对象请求的服务序列、系统状态和这些对象交互之间的关联方式。3 3第7章 面向对象的设计7.2 类 的 设 计面向对象类的设计目标是能体现代码复用、设计良好的类和方法、数据完
2、整性。代码复用在面向对象的系统开发中,始终都是关注的目标。在面向对象分析中体现为类以及类的继承层次。在类的设计过程中,分析的结果可以作为代码复用的基础。4 4第7章 面向对象的设计要完成类和方法的良好设计可以遵循以下设计建议:(1)始终保持数据的私有化。(2)始终在构造函数内初始化数据。(3)不要使用太多的相关联的原始数据类型。如果多个相关联的属性是原始数据类型,则尽可能将它们聚集到一个类中。例如,用一个Address类,使相关联的地址属性聚集到一个类中,这样包含客户地址信息的Customer类就可以包含类型为Address的一个属性而不是诸如街道、城市等几个单独的属性。5 5第7章 面向对象
3、的设计(4)为所有的属性设立属性的存取/设置方法,但不是所有的属性都需要单独的存取/设置方法。存取方法就是返回对象属性值的方法,而设置方法就是修改某个对象属性值的方法。(5)对所有类一致地排列类的每个元素。例如,首先定义常量,然后是构造函数,再就是静态方法,接着是实例变量、其他方法,最后是静态变量。(6)对类、方法、属性给出有意义的名字,以便见名知义。6 6第7章 面向对象的设计7.2.1 识别设计类识别设计类的问题是根据分析类或接口定义一个或几个设计类的过程。当给定一个分析接口时,只需简单地为该接口指定一个设计类。当给定一个或多个分析类时,识别和设计类的方法则应依赖于分析类的类型。分析类的类
4、型包括边界类、实体类和控制类。7 7第7章 面向对象的设计控制类的设计较为复杂,它们封装了控制逻辑、与其他对象的协作以及业务逻辑问题,因此主要考虑以下问题:(1)分布问题:如果控制需要被分布到网络中的几个不同节点中加以管理,那么在这些节点上需要单独的设计类来实现控制。(2)性能问题:在各个节点上使用单独的设计类来实现控制类并不一定合理,可以由一些相关的边界类或实体类的设计类来实现控制类。(3)事务问题:控制类通常封装事务,相应的设计也必须体现事务的管理。8 8第7章 面向对象的设计综合来看,如果一个“分析类”比较简单,代表着一个单一的逻辑抽象,那么可以将其映射为“设计类”。通常,主动参与者对应
5、的边界类、控制类和一般的实体类都可以直接映射成设计类。如果“分析类”的职责比较复杂,很难由单个“设计类”来承担,则应该将其映射成“子系统接口”。通常,被动参与者对应的边界类被映射成子系统接口。子系统的划分应该符合高内聚、低耦合的原则。根据以上设计原则给出ATM系统分析类到设计类的映射,见表7.1。9 9第7章 面向对象的设计1010第7章 面向对象的设计7.2.2 识别类的方法确定了设计类后,需要定义设计类提供的方法,并用合适的语言或语法加以描述。方法定义主要基于:(1)分析类的职责。每个职责通常暗含一个或多个方法。此外,如果分析模型中为职责描述了输入和输出,那么这些输入和输出可以用作形参和方
6、法结果值的初步定义。图7.1 BankCustomer属性和方法建模(2)分析类的特殊需求。(3)设计类需要提供的接口。接口的方法也需要由设计类提供。1111第7章 面向对象的设计一个设计类的方法需要支持该类在不同的用例实现中所扮演的所有角色。遍历用例实现,并查看类和它的对象是否包含在该用例实现图中和实现的事件流描述中。这里以ATM系统中BankCustomer类为例说明其方法的建模,如图7.1所示。1212第7章 面向对象的设计图7.1 BankCustomer属性和方法建模1313第7章 面向对象的设计7.2.3 识别属性一个属性详细说明了一个设计类的特性,并经常被类的方法访问。识别属性时
7、应基于以下的原则:(1)设计类所关联的分析类的属性。有时,分析类的属性隐含着设计类需要的一个或多个属性。(2)对可用的属性类型加约束标记,如private。(3)当选择一个属性类型时,尽可能重用已经存在的属性类型。(4)一个类的属性不能被多个设计对象共享。如果需要共享,就需要将该属性定义成一个单独的类。1414第7章 面向对象的设计(5)如果一个设计类因为其属性的原因变得复杂而难于理解,那么其中的一些属性可以分离出来变成单独的类。(6)如果一个类存在大量的或者复杂的属性,则可以在一个单独呈现属性部分的类图中进行描述。1515第7章 面向对象的设计7.2.4 识别关联和聚合对象之间通过交互完成系
8、统的行为,用例实现模型中(协作图或顺序图)描述了这些交互,交互通常意味着它们对应的类之间存在关联。关联的实例可用于建立与其他对象之间的引用关系,并可用来将对象分组、聚类,实现对象间的消息连接。1616第7章 面向对象的设计在识别、精化关联和聚合时,有如下的建议:(1)考察相应的分析类中的关联和聚合。这些关系通常隐含着设计类需要的一个或多个相应的关系。(2)精化关联多重性、角色名称、关联类、n元关联。当编码实现时,角色名称有时可以转变成设计类的属性,从而限定角色在“关联”类和发生关联的两个类之间有一个具有合适多重性的新关联。(3)精化关联的导航性。类之间关联的相应导航性可用以定义对象之间的消息传
9、送方向。1717第7章 面向对象的设计最后,我们给出与ATM用例实现关联的设计类图,如图7.2所示。这个类图中类之间的关系在第6章已经说明。关于每个类的属性及其方法的确定从前面所有ATM系统的分析和设计中能够找到一部分,其他的请读者自己考虑。1818第7章 面向对象的设计图7.2 ATM系统部分设计类图1919第7章 面向对象的设计7.3 设 计 交 互当确定了实现用例所需要的设计类及类的详细定义时,应对设计对象间的交互行为进行描述和建模。在设计过程中,关注的重点是按时间顺序排列的交互序列,所以倾向于采用顺序图来建模用例实现。启动一个用例的执行一般由一个参与者向系统发送消息开始,即由参与者发出
10、系统处理的请求。此时系统中将有相关联的设计对象接收该消息,必要时也会再调用其他的设计对象,从而实现用例的行为,将参与者以及这些对象间的交互过程,按时间顺序展开构成了用例实现的顺序图模型。2020第7章 面向对象的设计创建顺序图时应该注意以下几点:(1)用例启动执行从参与者实例向设计对象传递消息开始。(2)对于识别出的每个设计类,应该至少有一个设计对象参与到某个顺序图中。(3)消息的名称也是对象操作的名称。(4)应重点关注图中消息传送在时间上的先后顺序。(5)利用事件流描述来补充顺序图。(6)顺序图应该对所实现用例的所有交互建模。2121第7章 面向对象的设计在定义用例的交互行为中,请求对象发出
11、消息请求,接收对象承担响应和处理消息的责任,因此可以把这种职责定义为接收对象的一个服务(或操作)。仍以ATM系统为例,图7.3为其“取款”用例的顺序图,将其中的“消息”映射成接收类的操作,可以得到如图7.4所示的设计类。2222第7章 面向对象的设计当对顺序图进行细化时,应考虑异常事件,这些异常是在需求获取或分析中无法考虑到的,异常的类型包括:(1)当连接节点时的超时处理。(2)人或设备等参与者可能产生的错误输入。(3)由中间件、系统软件或者硬件产生的出错信息。2323第7章 面向对象的设计一个用例实现的各种图(尤其是协作图)通常不够详尽。因此,往往需要解释和补充图的文字性事件流描述。然而,这
12、些描述信息不应该提及任何有关对象的属性、操作或者关联,否则将很难维护,因为设计类的属性、操作和关联经常变化。此外,如果图中使用了接口,也不应该提及任何接口操作。这样,我们将能把因为所描述的图的变化而导致对事件流描述的修改降低到最小程度。2424第7章 面向对象的设计图7.3 ATM系统“取款”用例顺序图2525第7章 面向对象的设计图7.4 ATM系统“取款”用例涉及的类的行为分配2626第7章 面向对象的设计如果存在多个顺序图描述同样的用例实现,或者存在表示复杂流的图,则事件流描述就特别有用。在进行事件流描述时,要注意以下几点:(1)一个用例实现的事件流描述并不局限于某个特定的顺序图,因此它
13、可以用于描述几个图是如何关联的。(2)一个顺序图的标签(例如一个动作激活时,动作的标签或描述)局限于该图。然而,如果标签很多,会让图看起来很乱。在这种情况下,一些标签的解释文字可以放到事件流描述中。2727第7章 面向对象的设计图7.3是ATM系统“取款”用例顺序图,补充此顺序图的事件流描述(仅提供部分)如下所述:(1)银行客户(BankCustomer)插卡后,卡扫描器(CardScanner)读卡。(2)ATM机的显示器显示密码输入界面(PasswdWin)。(3)银行客户(BankCustomer)输入密码后,由密码输入界面(PasswdWin)接受密码并通知卡扫描器(CardScann
14、er)对密码进行验证,如果未通过验证,提示银行客户密码错误,ATM机的显示器重新显示密码输入界面(PasswdWin),这一操作可以重复三次2828第7章 面向对象的设计7.4 接 口 描 述对设计中不同组件之间的接口的描述是设计过程的一个重要部分。需要详细给出接口描述,以便该组件和其他的组件对象能并行地设计。一旦接口定义清楚,开发人员就可以利用定义好的接口完成与它交互的其他组件。2929第7章 面向对象的设计对象接口设计关心的是如何详细描述一个对象或一组对象的接口细节,这就需要定义服务的标记和语义。接口可以用UML中与类图一样的符号来描述。一般不包含属性部分。UML的接口标记包含在接口名字部
展开阅读全文