收藏 分享(赏)

软件工程 第10章:关系分析.ppt

上传人:fmgc7290 文档编号:7950829 上传时间:2019-05-31 格式:PPT 页数:87 大小:182KB
下载 相关 举报
软件工程 第10章:关系分析.ppt_第1页
第1页 / 共87页
软件工程 第10章:关系分析.ppt_第2页
第2页 / 共87页
软件工程 第10章:关系分析.ppt_第3页
第3页 / 共87页
软件工程 第10章:关系分析.ppt_第4页
第4页 / 共87页
软件工程 第10章:关系分析.ppt_第5页
第5页 / 共87页
点击查看更多>>
资源描述

1、2019年5月31日,广东工业大学计算机学院,1,软件工程 Software Engineering,2019/5/31,广东工业大学计算机学院,2,第10章 关系分析,本章内容: 10.1 整体-部分结构 10.2 一般-特殊结构 10.3 实例连接 10.4 消息连接 10.5 如何建立消息连接 10.6 消息的详细说明 10.7 电梯例子,2019/5/31,广东工业大学计算机学院,3,对象类与外部的关系,有以下几种: (1)继承关系(即对象类之间的一般-特殊关系),用一般-特殊结构表示。 (2)整体-部分关系(即对象之间的组成关系),用整体-部分结构表示。 (3)对象之间的静态联系(即

2、通对象属性反映的联系),用实例连接表示。 (4)对象之间的动态联系(即对象行为之间的依赖关系),用消息连接表示。,2019/5/31,广东工业大学计算机学院,4,10.1 整体-部分结构 整体-部分分关系反映了对象之间的构成关系,它也称为聚集关系。 10.1.1 整体-部分结构及其用途 用于描述系统中各类对象之间的组成关系,通过它可以看出某个类的对象以另外一些类的对象作为其组成部分。,2019/5/31,广东工业大学计算机学院,5,图10-1 整体-部分分结构的方式,2019/5/31,广东工业大学计算机学院,6,实现方法: class Apublic:class B /定义在类A中的类 pu

3、blic:,2019/5/31,广东工业大学计算机学院,7,private:void f();private :int a; ,2019/5/31,广东工业大学计算机学院,8,2019/5/31,广东工业大学计算机学院,9,10.1.2 表示法 图10-2是表示组合关系的图形符号。图中上部是一个整体对象,下部是组成该组合关系的方向:从三角形顶角引出的线指向整体对角。三角形标记表明组合关系的方向:从三角形顶角引出的线指向整体对象,从三角形底边中点画出的线连到部分对象。通常,把整体对象画在图的上部而把部分对象放在下部,这样安排有助于模型的理解。,2019/5/31,广东工业大学计算机学院,10,图

4、10-2 组合关系的图形,2019/5/31,广东工业大学计算机学院,11,10.1.3 如何发现整体-部分分结构,整体-部分分结构可以清晰地表达问题域中事物之间的组成关系,同时它又是一种用途更为广泛的系统构造手段。这里讨论如何从问题域发现整体-部分分结构。,2019/5/31,广东工业大学计算机学院,12,问题域中事物之间的组成关系表现为多种方式。从多种方式考虑事物之间的组成情况是发现整体-部分分结构的基本策略。考虑以下几个方面: 1. 组织机构和它的下级组织及部分 2. 物理上的整体事物和它的组织部分 3. 组织与成员 4. 抽象事物的整体与部分 5. 一种事物在空间上包容其他事物 6.

5、具体事物和它的某个抽象方面,2019/5/31,广东工业大学计算机学院,13,10.1.4 审查与筛选,按10.1.3节所说的策略可以发现许多候选的整体-部分分结构,但仍然需要进行审查与筛选,可以从以下几方面考虑其是否需要: 1. 是不是系统责任的需要仅当结构中的整体对象和部分对象都是系统责任需要的,并且两者之间的整体-部分关系也是系统责任要求表达的,才有必要建立这个结构,2019/5/31,广东工业大学计算机学院,14,2. 是否属于问题域 整体-部分结构中的整体对象和部分对象都应该属于当前的问题域,否则就不需要这个结构。 3. 是否有明显的整体-部分分关系 如果两个对象之间不能明显地分出谁

6、是部分、谁是整体,则不应该用整体-部分结构表示。 4. 部分对象是否有一个以上的属性 如果部分对象只有一个属性,应考虑把它取消,合并到整体对象中去,变为整体对象的一个属性即可。,2019/5/31,广东工业大学计算机学院,15,10.1.5 简化对象的定义,在OOA模型中,如果某些对象的定义过于复杂,应想法把它简化,方法是:在一个复杂对象的内部进行“再分析”,看它的某些属性与服务是不是描述了该对象的某个独立部分。如果是,则用它们组成一个部分对象,从整体对象的类定义中分离出来,建立整体-部分分结构。,2019/5/31,广东工业大学计算机学院,16,10.1.6 支持软件复用,在整体-部分分结构

7、中通过组装而支持软件复用是OO方法颇受重视的优点之一。在以下两种情况下都可以运用整体-部分分结构而实现或支持复用。 一种情况是在两个或更多的对象类中都有一组属性和服务描述这些对象的一个相同的组成部分。,2019/5/31,广东工业大学计算机学院,17,另一种情况是系统中已经定义了某类对象,在定义其他对象时,发现其中一组属性和服务与这个已定义的对象是相同的,那就不必再重复地定义这些属性与服务,只需建立它与前一类对象之间的整体-部分分结构。,2019/5/31,广东工业大学计算机学院,18,例如,在一个机械加工厂的生产管理系统中,各种机床、起重机和电动送料车等对象类中都有一组属性和服务,描述这些对

8、象中所装配的电动机。,2019/5/31,广东工业大学计算机学院,19,10.1.7 整体-部分分结构的进一步运用,整体-部分分结构是一种表达能力很强的系统构造手段,还可以把它作为一种改进系统构造和解决某些棘手问题的有效手段。 1. 表示动态变化的对象特征 对象的某些属性与服务在系统的运行和演化过程中发生动态的变化。例如:系统中的“人员”对象。在系统运行中随着时间的推移人员身份在发生变化 。 一般解决办法是删除旧的对象而用另一个类创建一个新对象。,2019/5/31,广东工业大学计算机学院,20,缺陷:对象反复删除/加入;二是不变化的属性,要把旧对象中的信息复制到新对象中;三是概念一个对象仅因

9、一些特征变化,就让它全部变化。 2. 表示数量不定的组成部分 一个对象中若含有某种数量不定而内容相同的组成部分,则会给实现带来困难。例如“书”这种对象 ,2019/5/31,广东工业大学计算机学院,21,10.1.8 调整对象层和属性层,对于每个整体-部分分关系,整体对象中要增加一个属性来表明它的部分对象。在该属性的详细说明中要给出这个属性的数据类型。如果是紧密的结构,用部分对象的类作为其数据类型;如果是松散的结构,用对象指针或对象标识作为其数据类型。,2019/5/31,广东工业大学计算机学院,22,10.2 一般-特殊结构,10.2.1 一般-特殊结构及其用途 一般-特殊结构是由一组具有一

10、般-特殊关系(继承关系)的类所组成的结构。以两种方式给出了一般类和特殊类的定义,从类的特征来看:如果类A具有类B的全部属性和全部服务,而且具有自己特有的某些属性或服务,则A叫作B的特殊类,B叫做A的一般类。从类集合的元素来看:如果类A的全部对象都是类B的对象,而且类B中存在不属于类A的对象,则A是B的特殊类,B是A的一般类。这两种定义本质上说是等价的。,2019/5/31,广东工业大学计算机学院,23,一般类的特征集合则是特殊类集合的真子集;而特殊类的对象实例集合是一般类对象实例集合的真子集,如图10-5所示。,2019/5/31,广东工业大学计算机学院,24,10.2.2 表示法,一般-特殊

11、结构的表示法,是用一般-特殊结构连接符来连接该结构中的每个类,如图10-6所示。其中图10-6(a)是一般-特殊结构连接符,从圆弧引出的连线连接到一般类,从直线分出的连线连接到每个特殊类。图10-6(b)是一个完整的一般-特殊结构,它包括结构中的每个类。,2019/5/31,广东工业大学计算机学院,25,图10-6 一般-特殊结构连接,2019/5/31,广东工业大学计算机学院,26,10.2.3 如何发现一般-特殊结构,1. 按常识考虑事物的分类 问题域现行的分类方法往往比较正确地反映了事物的特征、类别以及各种概念的一般性与特殊性。 2. 学习问题域的分类学知识 问题域现行的分类方法往往比较

12、正确地反映了事物的特征、类别以及各种概念的一般性与特殊性。 3. 按照一般-特殊结构的定义分析 按照一般-特殊结构的两种定义,引导两种思路。一是把每个类看作一个对象集合,分析集合间的包含关系。二是看一个类是不是具有另一个类的全部特征。,2019/5/31,广东工业大学计算机学院,27,4. 考察类的属性与服务 考察:一看一个类的属性服务是否适合这个类的全部对象。另一方面检查是否有两个类含有一些共同的属性的服务。 5. 考虑领域范围内的复用 可是考虑到它在同一个领域的可复用性。,2019/5/31,广东工业大学计算机学院,28,10.2.4 审查与调整,1. 是否符合分类学的常识 一般-特殊结构

13、中各个类之间的关系应该符合分类学的常识和人类的日常思维方式。检查方法是用“is-a-kind-of”关系来衡量每一对一般类与特殊类。 2. 系统责任是否需要这样的分类 在一个候选的一般-特殊结构中,特殊类与特殊类以及一般类与特殊类之间,虽然从概念上讲是有所区别的,但是系统责任却未必要求做出这样的区别。,2019/5/31,广东工业大学计算机学院,29,3. 问题域是否需要这样的分类 考虑分类时必须从问题域出发。 4. 是否构成了继承关系 按常识某些类之间应该是一种一般-特殊关系,但抽象后的类却没有继承的属性与服务。正确做法,保持这两个类之间互不相干,不要为之建立一般-特殊结构。,2019/5/

14、31,广东工业大学计算机学院,30,10.2.5 多继承及多态性问题,按照问题域和系统实际要求,如果类之间的关系是多继承的,则应该建立多继承的一般-特殊结构。 OOA模型应该如实地映射问题域,所以在OOA中暂不考虑实现条件,按问题域和系统责任的原貌建立结构,到OOD时再根据具体的实现条件作必要的调整。,2019/5/31,广东工业大学计算机学院,31,图10-7是一个多继承结构的例子,2019/5/31,广东工业大学计算机学院,32,要在一般-特殊结构中表达对象的多态性。例如,一般类“多边形”定义的“边数”、“边长”、“顶点数据”属性和“绘图”服务,将被它的两个特殊类继承。但希望有如下的多态性

15、: 1)“多边形”类.(边数、边长、顶点数据、绘图) 2)“正方形”类.(边数、边长、顶点数据、绘图) 3)“长方形”类.(边数、边长、顶点数据、绘图),2019/5/31,广东工业大学计算机学院,33,符合上述例子要求的多态性表达如图10-8所示。,2019/5/31,广东工业大学计算机学院,34,最后,提醒初学OO方法的读者注意以下两个容易混淆的概念: (1)重命名(Rename)和重载(Overload)是两个不同的概念。重载是实现多态性的方法之一,它修改继承来的属性或服务的内容而不更改其名字。重命名是解决多继承带来的命名冲突问题的方法之一,它更改属性或服务的名字而不修改其内容。 (2)

16、多继承(Multiple Inheritance)和多态性(Polymorphism)也是截然不同的两个概念,它们之间没有任何必然的联系。,2019/5/31,广东工业大学计算机学院,35,10.2.6 一般-特殊结构的简化,一般-特殊结构把问题域中具有一般-特殊关系的事物组织在一起,在一般类中集中地定义对象的共同特征,通过继承简化特殊类的定义。然而,如果不加节制地建立一般-特殊结构,也会带来一些不利的影响,表现为两种现象:一是建立过深的继承层次,增加了系统的理解难度和处理开销;二是从一般类划分出太多的特殊类,使系统中类的设置太多,增加了系统的复杂性。,2019/5/31,广东工业大学计算机学

17、院,36,重点检查以下几种情况: 一种情况是某些特殊类之间的差别可以由一般类的某个属性值来体现,而且除此之外没有更多的不同。 第二种可以简化的情况是:特殊类没有自己的特殊的属性与服务。 第三种可以简化的情况是:一个一般类之下只有其他的特殊类,并且这个一般类没有可创建的对象实例。,2019/5/31,广东工业大学计算机学院,37,通常,系统中的一般类应符合下述条件之一才有存在的价值,如果不符合下述任何条件,则应考虑简化。 (1)需要用它创建对象实例。 (2)它有两个或两个以上的特殊类。 (3)它的存在有助于软件复用。,2019/5/31,广东工业大学计算机学院,38,10.2.7 调整对象层和特

18、征层,定义一般-特殊结构的活动将使分析员对系统中的对象类及其特征有更深入的认识。在很多情况下,随着结构的建立需要对类图的对象层和特征层做某些修改,包括增加、删除、合并或分开某些类,以及对某些属性与服务增、删或把它们移入其他类。对此,分析员应随时返回到对象层和特征层,做出必要的修改。为了用一般-特殊结构连接符连接结构中的每个类,并达到整齐且美观的效果,对类的位置也要作必要的调整。在OOA工具的支持下,上述修改与调整都是很容易的。,2019/5/31,广东工业大学计算机学院,39,10.3 实例连接,实例连接又称为链,它表达了对象之间的静态关系。所谓静态联系是指最终可通过对象属性来表示的一个对象对

19、另一个对象的依赖关系。 10.3.1 简单的实例连接 1. 表示法 在这一小节中讨论实例连接中的一种最简单的情况,即两类对象之间不带属性的实例连接,其表示法如图10-9(a)所示:在具有实例连接关系的类之间画一条连接线把它们连接起来;连接线的旁边给出表明其意义的连接名;在连接线的两端用数字标明其多重性。,2019/5/31,广东工业大学计算机学院,40,图10-9 两类对象之间不带属性的实例连接,2019/5/31,广东工业大学计算机学院,41,图10-9(b)概括了因两端的多重性不同而形成的三种情况:一对一的连接、一对多的连接和多对多的连接。实例连接线每一端所标的数可以是一个固定的数、一个不

20、定的数、一对固定的或不固定的数,线的一端所标的数表明本端的一个对象将和另一端几个对象建立连接,即它是本端对另一端的要求。,2019/5/31,广东工业大学计算机学院,42,2. 实现方式 实例连接一般可用对象指针来实现。即在被连接的两个类中选择其中一个,在它的对象中设立一个指针类型的属性,用于指向另一个类中与它有连接关系的对象实例。这种属性一般只要在一个类的对象中设立就够了。若连接的某一端标注的多重性是固定的,且数量较少,则在这一端的对象中设立指针对实现较为有利。,2019/5/31,广东工业大学计算机学院,43,3. 实例连接与整体-部分分结构的异同 实例连接与整体-部分分结构有某些相似之处

21、,又有一些差别。在概念上,它们都是对象实例间的一种静态关系,并且都是通过对象的属性来体现的。但它们的差别是,实例连接中的对象之间没有这种语义,即分不出谁是整体、谁是部分;整体-部分分结构中的对象在实现世界中含有明显的“has-a”语义。在实现上,实例连接绝不能用紧密的整体-部分分结构所用的嵌套对象来实现,但它和松散的整体-部分分结构实现方法是有一定相似之处的。,2019/5/31,广东工业大学计算机学院,44,10.3.2 复杂的实例连接及其表示,1. 采用复杂的实例连接概念 参照OMT的概念与表示法,可以允许实例连接带有一组属性,这些属性通过一个关联(Association)来描述。 一个关

22、联可能要记录一些信息,可以引入一个关联类来记录。关联类通过一根虚线与关联连接,其表示法如图10-10所示。,2019/5/31,广东工业大学计算机学院,45,图10-10 关联连接,2019/5/31,广东工业大学计算机学院,46,对于只带有属性,而不带操作的实例连接可供考虑的实现方式有以下几种: (1)在实例连接一端的对象中设立一组属性,其中一个属性是指向实例连接另一端对象的指针;其余的属性是在关联中列出的连接属性。 (2)根据关联定义一个结构数据类型,其中两个域变量是分别指向两端对象的指针,其余域变量是连接属性。,2019/5/31,广东工业大学计算机学院,47,(3)根据关联定义一个结构

23、数据类型,其中一个域变量是指向一端对象的指针,其余域变量是连接属性。 (4)把关联用一个类来实现,用这个类的对象代表两端对象之间一个具体的实例连接。它的属性包括所有的连接属性和指向两端对象的指针。,2019/5/31,广东工业大学计算机学院,48,2. 用对象表示实例连接的复杂性 若两类对象之间的联系带有某些复杂的信息,这说明它们之间存在着某种事物(可能是抽象事物)。这种方法所依据的原理是,对象不仅可用于表示有形的事物也可用于表示无形的事物。当两类对象之间的实例连接比较复杂时(带有一些属性或操作),说明在它们之间存在某种尚未用对象加以描述的事物。,2019/5/31,广东工业大学计算机学院,4

24、9,把OOA过程的一种中间表示方法,转化为纯OO的表示形式,如图10-11所示。,2019/5/31,广东工业大学计算机学院,50,10.3.3 三元关联问题,J.Rumbaugh等在OMT中注意到三类对象之间的联系问题,并称之为三元关联(ternary association)。例如,在“人员”、“项目”和“语言”三类对象之间可能需要表达这样的关系:“某人员使用某种语言从事某个项目”。于是他们使用了一种表示三元关系的表示符号,如图10-12所示。,2019/5/31,广东工业大学计算机学院,51,图10-12 三元关系,2019/5/31,广东工业大学计算机学院,52,10.3.4 如何建立

25、实例连接,1. 认识对象之间的静态联系 首先从问题域和系统责任考虑,各类对象之间是否存在着某种静态联系。 2. 认识实例连接的属性与操作 对于考虑中的每一种实例连接,进一步分析它是否应该带有某些属性和操作。 3. 分析实例连接的多重性 对于每个实例连接,从连接线的每一端看本端的一个对象可能与另一端的几个对象发生连接,把结果标注到连接线的本端。,2019/5/31,广东工业大学计算机学院,53,4. 异常情况处理 1)多对多实例连接的处理 用增加对象类的办法解决带有属性或操作的实例连接问题或解决多元关联问题时,其中多对多的实例连接问题也同时得到了解决。 2)多元关联的处理 可在多元关联的汇集点增

26、设一个对象类,使之转化为二元的实例连接。 5. 命名与定位,2019/5/31,广东工业大学计算机学院,54,10.3.5 对象层、特征层的增补及实例连接说明,在建立实例连接的过程中可能增加一些新的对象类。特别是在分析复杂的实例连接、多元关联及解决多对多的问题时,都要求增加一些新的类,要把这些新增的类补充到类图的对象层中,并建立它们的类描述模板。,2019/5/31,广东工业大学计算机学院,55,10.4 消息连接,对象之间在行为上的依赖关系,并通过消息连接来表示这种关系 10.4.1 消息的定义 消息的定义是:消息是面向对象发出的服务请求。消息连接描述对象之间的动态联系,即:若一个对象在执行

27、自己的服务时,需要请求另一个对象为它完成某个服务。消息连接是有向的,从消息发送者指向消息接收者。,2019/5/31,广东工业大学计算机学院,56,10.4.2 顺序系统中的消息,顺序系统中的一切操作都是顺序执行的。它的OOA模型只有一个主动对象(并且这个主动对象中只有一个主动服务),其余的对象都是被动对象。实现之后的系统在运行时,将只对应一个处理机调度单位(进程或线程)。 如图10-13所示,2019/5/31,广东工业大学计算机学院,57,2019/5/31,广东工业大学计算机学院,58,在顺序系统中,对象之间的消息具有下述特点: (1)每个消息都是向对象发出的一个服务请求,它必定引起接收

28、者一个服务的执行。 (2)每个消息的发送与接收都是同时进行的,即消息都是同步的。 (3)除了主动对象其他的主动服务之外,其他对象服务只有在接收到消息时才开始执行。,2019/5/31,广东工业大学计算机学院,59,(4)消息是从正在执行的服务中发出的。消息发出之后,发送者暂停执行位于消息发送点之后的其他操作,将控制点转移到接收者,直到接收者执行完相应的服务之后才返回到发送消息的服务,继续执行这个消息之后的其他操作。也就是说,所有的操作都是串行的。,2019/5/31,广东工业大学计算机学院,60,在语法上一个消息的描述应包括以下内容: (1)消息名,即接收消息的服务名。 (2)接收消息的服务要

29、求的输入参数,即入口参数。 (3)接收消息的服务提供的输出参数,即返回参数。,2019/5/31,广东工业大学计算机学院,61,在语义上,一个消息应包括下述信息: (1)发送者,这是通过消息发送点的位置隐含表明的。 (2)接收者,是由消息名表达的。 (3)其他需传送的信息,通过入口参数和返回参数表示。,2019/5/31,广东工业大学计算机学院,62,10.4.3 并发系统中的消息,并发系统是有多个任务并发执行的系统,它的OOA模型含有多个主动对象和若干被动对象,系统实现之后,这些主动服务将对应一些并发执行的处理机高度单位,这里采用“控制线程”(Thread of Control)这个术语。在

30、并发系统中,将有多个控制线程并发地执行,每个控制线程是由一系列顺序执行的操作所构成的活动序列。 如图10-14所示是一个并发系统的例子。,2019/5/31,广东工业大学计算机学院,63,图10-14 并发系统中的消息,2019/5/31,广东工业大学计算机学院,64,两个或多个控制线程之间的消息与顺序系统中的消息有许多不同,具体表现在以下几个方面: 1. 消息的多种用途 (1)向接收者发出一个服务请求。 (2)向接收者提交一些数据。 (3)向接收者发布一个通知或事件信息。 (4)向接收者传递一个同步控制信号。,2019/5/31,广东工业大学计算机学院,65,2. 消息的同步与异步 同步消息

31、的定义是:仅当发送者要发送一个消息而且接收者已做好接收这个消息的准备时才能传送的消息称为同步消息。无论发送者还是接收者,如发现对方未做好准备都必须等待。 异步消息的定义是:发送者不管接收者是否做好接收准备都可以发送的消息称为异步消息。 3. 发送者对消息处理结果的不同期待方式 (1)发送者在发出消息之后等待,直到得到处理结果才继续原先的工作。,2019/5/31,广东工业大学计算机学院,66,(2)发送者不等待处理结果,继续执行,在以后的某个执行点查看消息的处理结果。 (3)发送消息后,发送者既不等待,也不再关心其处理结果。 4. 接收者对消息的不同响应方式 (1)在消息产生之前,处理这个消息

32、的进程或线程并不存在;发消息时才创建进程。 (2)处理消息的进程或线程已经存在,并且与发送者同步地接收消息。,2019/5/31,广东工业大学计算机学院,67,( 3)某些消息所指出的接收者可能并不关心这种消息。 (4)接收者异地接收和处理消息。 5. 消息的接收者是否其他 两种情况:定向消息;作广播消息。,2019/5/31,广东工业大学计算机学院,68,10.4.4 消息对OOA的意义,在用面向对象方法构造的系统中,消息体现了对象行为之间的依赖关系。它是实现对象之间的动态联系,使系统成为一个能活动的整体,并使各个部分能够协调工作的关键因素。如同人体的神经,有了它,整个机体才能活动。,201

33、9/5/31,广东工业大学计算机学院,69,10.4.5 OOA对消息的表示消息连接,作为一种既适应顺序系统,又适应并发系统的OOA方法,应该识别和表示的主要问题包括: (1)对象之间是否存在某种消息。 (2)这种消息是同一个控制线程内部的还是不同控制线程之间的。 (3)每一种消息的发出者和接受者。 (4)消息是同步的还是异步的。 (5)发送者是否等待消息的处理结果。,2019/5/31,广东工业大学计算机学院,70,两种消息连接符号来表示对象之间的消息传送关系,如图10-15所示。其中图10-15(a)表示同一个控制线程内部的消息连接;图10-15(b)表示不同控制线程之间的消息连接。消息连

34、接的定义是:消息连接是OOA模型中对对象之间行为依赖关系的表示,即:若类A的对象在它的服务执行时需要向类B的对象发送消息,则称存在着从A到B的消息连接。,2019/5/31,广东工业大学计算机学院,71,两个类的对象之间可能互相发消息,例如在类A和类B之间,既有从A发送给B的消息,也有从B发送给A的消息。此时,可以使用两个方向相反的消息连接符号,但是更简单的方法是使用一个双向的消息连接符号,如图10-16所示。,2019/5/31,广东工业大学计算机学院,72,10.5 如何建立消息连接,10.5.1 建立控制线程内部的消息连接 (1)模拟当前对象的执行,考虑:为了完成当前的工作,需要请求其他

35、对象提供什么服务。每当发现了一种新的请求,就是发现了一种新的消息。 (2)分析该消息的发送者与接收者在执行时是否属于同一个控制线程。可从几个不同的角度去判断: 按问题域的情况和系统责任的要求应该顺序地执行还是并发地执行。,2019/5/31,广东工业大学计算机学院,73, 从发送者的执行到接收者的执行是否引起了控制线程的切换。 接收者是否只有通过当前这种消息的触发才能执行。 (3)在当前服务的详细说明中指出由它发出的每一种消息的接收者,从当前服务所在的类向所有接收消息的对象类画出消息连接线。 (4)沿着控制线程内部的每一条消息追踪到接收该消息的对象服务,重复进行以上的工作。,2019/5/31

36、,广东工业大学计算机学院,74,10.5.2 建立控制线程之间的消息连接,对每个控制线程主要考虑以下几个问题: 1、该控制线程在执行时,是否需要请求其他控制线程中的对象为它提供某种服务?这种请求由哪个对象发出?由哪个对象中的服务进行处理? 2、该控制线程在执行时,是否要向其他控制线程中的对象提供或索取某些数据? 3、各个控制线程的并发执行,是否需要传递一些同步控制信号?,2019/5/31,广东工业大学计算机学院,75,4、它在执行时是否将产生某些对其他控制线程的执行有影响的事件? 5、一个控制线程将在何种条件下中止执行?在它中止之后将在何种条件下由其他控制线程唤醒?用什么办法唤醒? 6、这个

37、消息由一个控制线程中的哪个对象服务发出?由另一个控制线程中的哪一个对象服务来处理?,2019/5/31,广东工业大学计算机学院,76,10.5.3 对象分布问题及其消息的影响,分布问题对OOA的影响是: (1)同一台处理机上的对象之间的消息通信既可能是一个控制线程内部的,也可能是不同控制线程之间的。分布在不同处理机上的对象之间的消息通信只能是不同控制线程之间的。它们在实现时所依赖的消息通信机制也有所不同。 (2)在每个子处理机上分布的一组对象中,至少应有一个对象是主动对象;所有的被动对象都是在位于本机的主动对象驱动下运行的。如果这一条不满足,应考虑增加主动对象,或把其中的某些被动对象改为主动对

38、象。,2019/5/31,广东工业大学计算机学院,77,如果这两个对象分布到不同的处理机上,接收者就不能以这种方式提供服务,它必须与发送者属于不同的控制线程。那么,需要考虑接收者是在哪个主动对象的驱动下对外响应请求并提供服务的。分三种情况定义对象之间的消息: (1)本地机上同一个控制线程内部的消息。 (2)本地机上不同控制线程之间的消息。 (3)异地机上不同控制线程之间的消息。,2019/5/31,广东工业大学计算机学院,78,10.6 消息的详细说明,消息的详细说明包括对接收者和发送者两方面的说明。 在接收者的类描述模板中对每个服务作如下说明: (1)说明由这个服务接收和处理的每一种消息,规

39、定消息的格式及内容。 (2)说明本服务是顺序执行的还是并发执行的。 (3)有时还要说明消息是同步的还是异步的。,2019/5/31,广东工业大学计算机学院,79,在发送者的类描述模板中对每个发送消息的服务作如下说明: (1)指出这个服务在执行时可能发出的每一种消息,给出接收者的类名和处理该消息的服务名。 (2)说明接收者是与本服务顺序执行的还是并发执行的。 (3)有时还要说明该消息是同步的还是异步的,以及发送者是否等待该消息的处理结果。 (4)如果服务流程图是比较详细的,则应画出在什么位置上发送什么消息。,2019/5/31,广东工业大学计算机学院,80,10.7 电梯例子,现在对前两章使用的

40、电梯控制系统进行定义结构与连接活动,建立其OOA模型的关系层。 10.7.1 一般-特殊关系 可以发现电梯控制系统中的到达事件(ARRIVAL EVENT)、目的地事件(DESTINATION EVENT)和召唤事件(SUMMONS EVENT)都可以归类为事件类。故创造出一个电梯事件(ELEVATOR EVENT)作为这三个类的一般类。,2019/5/31,广东工业大学计算机学院,81,按照本章前面的方法,可得到以下的一般-特殊关系: (1)到达事件是电梯事件的特殊类。 (2)目的地事件是电梯事件的特殊类。 (3)召唤事件是电梯事件的特殊类。,2019/5/31,广东工业大学计算机学院,82

41、,10.7.2 整体-部分分关系,在电梯控制系统中可以发现以下的整体-部分分关系: (1)电梯马达(ELEVATOR MOTOR)是电梯(ELEVATOR)的部分类,它们之间是一对一关系。 (2)超载传感器(OVERWEIGHT SENSOR)是电梯(ELEVATOR)的部分类,它们之间是一对一关系。 (3)到达面板(ARRIVAL PANEL)是电梯(ELEVATOR)的部分类,它们之间是一对一关系。 (4)目的地面板(DESTINATION PANEL)是电梯(ELEVATOR)的部分类,它们之间是一对一关系。 (5)楼层(FLOOR)是到达面板(ARRIVAL PANEL)的部分类,它们

42、之间是一对一关系。 (6)召唤面板(SUMMONS PANEL)是楼层(FLOOR)的部分类,它们之间是一对一关系。,2019/5/31,广东工业大学计算机学院,83,10.7.3 连接,在电梯控制系统中可以发现以下的实例连接: (1)电梯(ELEVATOR)与楼层(FLOOR)之间的实例连接。 (2)目的地面板(DESTINATION PANEL)与目的地事件(DESTINATION EVENT)之间的实例连接。,2019/5/31,广东工业大学计算机学院,84,10.7.4 电梯控制系统的关系层,根据以上的分析,将得到的结构与连接在OOA模型中画出来,就是模型的关系层,最终形成了如图10-17所示的整个类图。,2019/5/31,广东工业大学计算机学院,85,2019/5/31,广东工业大学计算机学院,86,小结 本章主要介绍了面向对象中的四种结构与连接,包括一般-特殊结构、整体-部分分结构、实例连接以及消息连接。,2019/5/31,广东工业大学计算机学院,87,谢谢,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报