系统分析-类与类图.ppt_第1页
系统分析-类与类图.ppt_第2页
系统分析-类与类图.ppt_第3页
系统分析-类与类图.ppt_第4页
系统分析-类与类图.ppt_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

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

文档简介

1、2020/8/3,1,第4讲 类与类图,2020/8/3,2,内容提要,类的定义 类的表示:三部分 类的关系:依赖、泛化、关联 特殊类:接口,抽象类,参数化类 建模指南 对象图:“快照”,1. 类的概念,2020/8/3,4,1.1 类的定义/1,用例图定义了系统应该具备的功能,它描述了系统应该为用户解决的问题。 交互图描述了此问题的解决方案,它定义了为解决此问题软件系统中必须设置的软件对象及其职责, 这些对象及其职责或语义,是解决方案的概念或系统词汇(vocabulary)。 类描述了一组对象的公共的结构和行为, 类为对象规定了它们的结构和所能提供的服务(操作), 相当于为对象图中规定的系统

2、词汇提供了严格的定义,包括系统词汇的: 静态结构 动态行为 类构成了系统建造的基础,2020/8/3,5,1.1 类的定义/2,类的静态结构,在UML里用属性(attribute)描述 类的动态行为,由操作(operation)描述 交互是用例图提出的问题的解决方案,交互由对象和它们之间的消息的传递构成 在交互中,对象为与它相连接的其它对象提供服务,对象本身会有状态的保持和转换 在一个系统中,具有相同的结构和提供相同的服务的对象可能不止一个,它们可以参与在不同的交互中,提供类似的服务 类是解决用例视图定义的问题的解决方案中必须具备的对象的抽象,2020/8/3,6,1.1 类的定义/3,一个类

3、描述了一组对象的公共的结构和行为 类是真实世界的事物的抽象 当这些事物存在于真实世界中时,它们是类的实例,并被称为对象 同一个类的各对象具有相同的属性,提供相同的操作,具有相同的语义,2020/8/3,7,1.2 类的表示,类的图形表示: 它是分为三个分隔区(compartment)的长方形。其中: 顶端的分隔区为类的名字,下面两个分隔区为可省略的,分别可以列出类的属性和操作,2020/8/3,8,2020/8/3,9,1.3 类的命名,类的名字是每个类所必有的构成,用于和其它类相区分 类的名字可分为 简单名字:简单名字是一个不包含冒号的字串 复杂名字(路径名字):路径名是简单名字前面加上一个

4、包含此类的所在的模型包的名字,这两个名字之间用两冒号隔开,Temperature Sensor,Wall,Business Rules:FraudAgent,java:awt:Rectsngle,简单名字,路径名字,2. 属性,2020/8/3,11,2.1 属性的概念/1,类不是孤立存在的,它的对象将参与一个或多个交互 类捕获了系统实现方案中的概念或词汇,使得类代表某一类特定事物,具备特定的语义 类的语义是对此对象代表的事物的性质的描绘,通过对事物性质的描绘,可以记录对象在交互过程中状态的变换,并可进一步决定对象在此状态下的行为 例如:在基于窗口操作的操作系统中,处理窗口的对象描述窗口的尺寸

5、、位置,类型等性质,窗口的性质的不同取值又可以决定系统对鼠标操作的不同响应方式。,2020/8/3,12,2.1 属性的概念/2,类的属性,它是类的一个组成部分,描述了类在软件系统中代表的事物所具备的特征 属性的定义 在UML里,属性是类的一个具名的构成(named property),它描述了此构成在类的实例中能具备的取值范围 根据定义: 类的属性首先是类的一个组成部分; 其次,类每个属性都必须有一个名字, 以区别于类的其它属性。为了定义属性的取值范围,必须为属性指定类型。例如: 布尔类型的属性可以取两个值:TRUE和FALSE; 字节型的属性只能取256个值 当一个类的属性被完备地定义后,

6、它的任何一个对象的状态都被这些属性的特定取值所决定,2020/8/3,13,2.2 属性的表示/1,属性的图形表示: 类的属性被列在其中的第二个分隔区中 属性分隔区是可省略的 当属性分隔区未被省略时: 属性的名字必须出现 属性的名字后面是它的类型 类型和名字之间用冒号(:)分隔,2020/8/3,14,2.3 属性的初始值,属性的初始值: 当类的一个对象被创建,它的各个属性就开始有特定的状态。有时,对象的初始状态对此对象参与的交互是有意义的。这时,有必要在对象的类中定义其对象的属性的初始值 初始值的图形表示 类的属性的初始值在属性的类型的后面指定 初始值和类型之间用等号(=)分隔 属性的初始值

7、是可选的 当未为属性指定初始值时,属性的初值是不确定的,2020/8/3,15,2.4 可省略的描述,除了属性的名字之外,属性的其它描述都是可省略的,包括: 类型、初值、可见性,3. 操作,2020/8/3,17,3.1 操作的概念/1,对象在交互中,存在着消息的交换 消息是一个对象向另一个对象发送请求其提供服务的指令 一个对象接收的各个不同的消息,构成了此对象的类能提供的服务的集合。 类的操作就是对这些服务的具体规定,包括 接收服务请求的格式 以及类对合法请求所能提供的有效的服务的承诺 如果把操作映射到C+语言,则操作就是C+的类的成员函数,2020/8/3,18,3.1 操作的概念/2,操

8、作的定义: 操作是一个类所能提供的服务的实现,此服务能被请求,以改变提供服务的类的对象的状态或为服务的请求者返回一个值 一个类的操作被定义后,它的任何一个对象都能提供此操作所定义的服务 操作 必须有一个名字 可以有参数表 可以有返回值,2020/8/3,19,3.2 操作的表示,按照操作的定义,类的操作所提供的服务可以分为两类 一类是操作的结果引起了对象状态的改变,状态的改变也包括相应的动态行为的发生 另一类是为服务的请求者提供返回值 例如:执行特定的计算,并把结果返回给请求者 操作的图形表示: 操作被列在属性最下部的分隔区里 操作分隔区是可隐藏的 如果操作分隔区未被隐藏,则操作的名字必须列出

9、,名字后面必须有一对括弧以表示此名字是操作的名字,2020/8/3,20,2020/8/3,21,3.3 操作署名/1,操作署名(operation signature) 在交互中,操作是通过消息启动的,为了使操作对应的服务被有效地提供,操作的请求者必须提供合法的启动消息,包括: 合法的操作参数 对操作的返回值(如果有的话)的正确解释 消息的合法性在UML中,通过操作署名(operation signature)规定定义: 操作署名是操作的参数的名字、参数类型、参数缺省值以及操作的返回值的类型的集合,2020/8/3,22,3.3 操作署名/2,操作署名的图形表示: 在类的图符上,操作署名是可

10、隐藏的 如果不隐藏,则参数表出现在操作名后面的括弧内 参数表内的各参数之间用逗号分隔,参数包括名字、类型和缺省值 在每个参数名字后面跟着的是参数的类型,它们之间用冒号分隔,类型后面是可选的参数缺省值,它和类型之间用等号(=)分隔 如果一个参数被指定了缺省值,就意味着此操作被调用时,可以不指定此参数的值,这时操作认为调用者使用缺省值作为此参数的值。 操作的返回值类型出现在此括弧之后,返回类型和括弧之间之间用冒号分隔。,4. 类的表示方法,2020/8/3,24,4.1 类的说明,S,t,e,r,e,o,T,y,p,e,W,I,N,D,O,W,作,者,=,王,刚,状,态,=,测,试,可,访,问,性

11、,名,称,:,类,型,=,缺,省,值,(,+,#,-,),可,访,问,性,函,数,名,(,变,量,表,),:,返,回,类,型,(,+,#,-,),变,量,表,变,量,名,:,类,型,=,缺,省,值,2020/8/3,25,2020/8/3,26,4.2 属性和操作的表达/1,类的构成有可能很复杂,将产生很长的属性列表和操作列表,没有必要在模型图上把所有的属性和操作都绘制在模型图上。这是因为: 一方面,这样会使UML图过于繁杂 另一方面,出于表达特定问题的需要,不需要将与问题无关属性和操作与重要的属性和操作同时绘制在模型图上 这时,可以应用UML的隐藏原则,在UML模型图上把对表达问题不重要的属

12、性或操作隐藏 因此,如果发现模型图上某个类的属性分隔区或操作缺失或分隔区内没有内容,不表示此类没有属性或操作,有可能它们是被省略了。,2020/8/3,27,4.2 属性和操作的表达/2,类的隐藏表示,可以采取4种方式: 隐藏分隔区 有选择地隐藏属性/操作 隐藏操作署名 隐藏属性/操作的变体 如果一个类的所有操作和属性可以根据它们的语义分为若干组,可以在操作或属性前面为它们指定变体标记,使得同一分组的操作或属性带有同样的变体标记,2020/8/3,28,5. 类的建模指南,2020/8/3,30,5.1 类的设计的特点,类的设计是软件系统建造的第一步,它决定着 软件系统结构合理性 软件部件的

13、可维护性 可重用性 可移植性 软件系统的类的设置、职责的明确、类的属性和操作的确定,其过程是: 用例驱动的 面向对象的,2020/8/3,31,5.2 类的职责/1,为了给软件系统设置有效的实现类,应当从系统的用例图出发,得出系统为实现用例规定的功能,内部应实现的交互 通过合理地设置参与交互的对象的职责, 确定这些对象的实现类的职责 根据类的职责,以及其对象在交互中起的作用, 为类指定属性和操作。,2020/8/3,32,5.2 类的职责/2,类由交互图导出 在交互图中,不同的类互相合作,以完成用例图规定的功能或任务 在交互中,不同的对象担负着不同的职责,为其它对象提供所需的服务 对象的职责对

14、应到其实现类,就成为了类的职责(responsibility) 在UML里,职责是一个类所承担的义务或协议 一个良好定义的类应该有清晰的职责 一个类只应承担一种职责 类的职责划分的好坏,取决于对象参与交互时,此对象在交互中担任的职责的划分的合理性,2020/8/3,33,5.2 类的职责/3,类的职责是通过用例驱动,以面向对象的方式产生的 通过对用例的分析,产生了系统的交互。在交互中,通过以面向对象的方式分析交互中完成某任务所需的步骤及完成步骤的主体,以产生合理的对象职责的划分 例如:在位图浏览的交互中,专门设置“外壳”对象负责和操作系统打交道,又有专门的对象负责系统内部功能的实现(“内核”对

15、象) 在“内核”对象中,有职责明确的对象分别负责鼠标工具状态机的实现,位图显示状态的维护的实现等等 有了合理的对象职责的划分,就自然地导出了合理的类的职责的划分,2020/8/3,34,5.2 类的职责/4,指定类的职责,是对类进行建模的第一步 类所应具备的属性和操作,将根据类的职责给出 例如: “位图浏览”鼠标工具的对象的交互,“位图浏览” 对象的职责是翻译鼠标消息,使其转换为对位图的浏览操作。该职责决定了实现位图浏览鼠标工具的类必须有的相应的操作接口,它接收传进来的三个鼠标消息,决定了这个类必须具备一个属性,作为状态变量以记录鼠标按键的状态 处理鼠标移动消息时,如果鼠标按键处于按下状态,才

16、能把鼠标移动消息“翻译”为位图的拖动操作,2020/8/3,35,5.2 类的职责/5,类的职责的描述: 可以用非形式的普通文本描述 可以出现在操作分隔区下面的第四个分隔区内 在某些工具里,类的职责不占一个单独的分隔区 而是在一个专门的文档窗口(documentation)中出现 考虑类的职责划分时,应注意类的职责的平衡分布, 应注意 既不要使一个类的职责过重、过多 又不要使类的职责过于简单、平淡 分析和考察类的职责的平衡分布,可以在交互图上进行,2020/8/3,36,5.3 指南/1,一个实用的软件系统,其结构是复杂的,类是其中基本的构成元素 可以用模型包(package)将语义上紧密联系

17、的类组织到一起 在类的表达方面,应充分应用UML模型的隐藏机制,有重点地用类来表达系统的各个侧面,2020/8/3,37,5.3 指南/2,软件系统只有和外部直接交互,才能够为其用户提供使用价值,因此在设计和建造一个软件系统时,免不了要对软件系统之外的非软件事物,如用户、外部设备等,进行分析和建模 例如:建造一个信息管理系统,需要分析用户群的结构、分工、职责和业务流程,类和对象也是描述这类非软件事物的手段,可以用特定的类来代表一类特定的非软件事物,用交互图描述它们的业务流程,用属性和操作定义它们的职责,可以用UML的变体机制将非软件事物与软件事物相区分。,2020/8/3,38,5.3 指南/

18、3,类描述了和软件系统在建造和实现过程中产生的相关概念或词汇 对于大多数的软件系统而言,它们不可能直接在一个不含任何软件的纯硬件平台上建造,总会存在一个软件的开发环境支持这个软件系统的建造,这包括: 操作系统 高级语言开发环境等 这些系统本身已经存在了大量的预定义好的概念或词汇,亦即已经存在了大量预定义好的类或类型 在这样的开发环境上设计软件系统的过程中,预定义类会被大量地引用 例如:在应用MFC进行软件开发时,会有许多其类库中的类或类型被引用。 在建模时,可以简单地把这些预定义类(类型),作为应用系统设计模型中的类来加以引用。在引用时,可以根据需要,利用UML的隐藏机制 不暴露或只暴露所需的

19、属性或操作。,6. 关系,2020/8/3,40,6.1 关系的定义/1,对象不是孤立存在的,它必定参与某一交互,参与一个交互的各对象之间必然要发生语义的连接 对象的特性,包括结构方面和行为方面的特性,在UML中,被类所捕获。对象的类之间,必然也存在语义上的连接。这种连接,在UML中,被抽象为类之间的关系 在UML中,类之间的语义连接被定义为关系 类之间的关系的建模,为其对象之间的交互提供了实现支持 对象之间的交互,可以对应到类之间的关系,而这些关系,又可以被映射到大多数的程序设计语言,从而使得对象之间交互得到最终的实现,2020/8/3,41,6.1 关系的定义/2,在类之间的关系中,最常用

20、的是 依赖关系 泛化关系 关联关系 它们在面向对象的建模中,起着十分重要的作用。,2020/8/3,42,6.2 关系的表示,关系的图形表示: UML中类之间的关系被图形化地表示为连接类之间的路径。 这些路径以不同的线型,区分不同的关系,关联,WIndow,open(),close(),move(),diaplay(),handleEvent(),consoleWindow,Event,DialogBox,control,依赖,泛化,2020/8/3,43,6.3 依赖关系/1,在一个交互中,存在着对象之间消息的传递 消息的传递大多数情况下是以函数调用的形式实现的,有时也会通过直接访问目标对象

21、的成员变量的形式实现 消息的传递,意味着源对象的某些功能或动态特性将依赖于目标对象的功能或动态特性 在类图上强调类的对象之间的这种关系,可以在对象的对应类之间建立依赖关系,2020/8/3,44,6.3 依赖关系/2,依赖关系的定义:两个类之间的依赖关系,表明其中的一个类(客户类)依赖于另一个类(供应类)所提供的某些服务 图形表示: 依赖关系被图形化地表示为一个带虚线的箭头 箭头所指的类是供应类(被依赖的类) 箭头的出发点是客户类,2020/8/3,45,FilmClip,Channel,依赖关系,客户类,服务类,2020/8/3,46,6.3 依赖关系/3,两个类之间存在着依赖关系,意味着客

22、户类的语义依赖于服务类的语义。服务类的语义的变化,将会导致客户类的语义的变化 如果两个类的对象之间存在着下面的情形,且两个类之间不存在结构方面的联系(例如:供应类以成员变量的形式作为客户类的一部分),就可以建模成为具有依赖关系,这些情形是: 客户类访问定义在供应类内部的值(常量或 变量) 客户类的操作启动了定义在供应类内的操作 客户类的返回类或参数是供应类的实例 序列图中的两个对象,如果存在着消息的发送。且它们之间又没有结构方面的连接,就可以在类图上用依赖关系对它们建模,2020/8/3,47,6.4 泛化关系/1,位图观察器的例子, 鼠标工具 通常,在这样的应用软件系统中,会存在多个鼠标工具

23、。它们都从操作系统接收同样的鼠标消息,对这些鼠标消息的不同解释,使得各鼠标工具的功能得以区分 在实现这些鼠标工具时,每一个鼠标工具用一个对象实现,由于它们所处理的鼠标消息是相同的, 因此,它们的实现类所具备的操作有许多是相同的,区别在于它们对操作的执行上各有不同。有的对象还有可能有些扩展的操作,以实现不同工具的功能 在面向对象的程序设计语言中,这样的鼠标工具的一组实现对象的实现类可以共同定义为某个基类的导出类 UML中,则用泛化关系为这种基类/导出类的关系建模,2020/8/3,48,6.4 泛化关系/2,泛化关系的定义: 在UML中,泛化关系表示子类共享定义在一个或多个超类(parent)里

24、的结构或行为 泛化关系表示类之间的一般和特殊的关系 在一组类中,如果它们都有一组相同的属性和操作,那么,可以把这组属性和操作定义在一个超类中,并把其它类与超类的关系定义为泛化关系。如果两个类被定义为具有泛化关系,就意味着在任何超类的对象出现的地方,都可以用子类来代替。,2020/8/3,49,6.4 泛化关系/3,在UML中,泛化关系被图形化地表示为一个带有空心三角形的箭头的线段 箭头所指的方向是超类 箭头起始端是子类 在泛化关系中 一个类可以有零个、一个或多个超类 如果一个类只有一个超类,那么就称为是单继承 如果一个类有多个超类,就称为是多重继承 如果一个类没有超类但有一个或多个子类,则这个

25、类成为基类(base class) 如果一个类没有任何子类,则成为叶子类(leaf class),2020/8/3,50,6.4 泛化关系/4,继承的多态性 在子类中,如果存在一个操作和其超类中的操作具有相同的署名(signature), 则子类中的此操作的动态行为将替代超类的动态行为。,2020/8/3,51,基类,Shape,origin,move(),resize(),display(),Rectangle,corner : Point,Circle,radius : Float,Polygon,points : List,display(),Square,泛化关系,叶子类,2020/8

26、/3,52,6.5 关联关系/1,依赖关系和泛化关系反映的是类之间在动态行为方面的联系 在软件系统中还存在着大量的结构方面的联系 例如:建造管理信息系统时,需要对其所处的管理机构的运行结构进行建模,以建立各管理实体之间的对应关系(部门和雇员之间的关系、销售部门和商品之间的关系等),并在此基础上建立相应的数据库模式。在以前经常使用的工具有实体-关系模型等 在UML里可以用关联关系描述,2020/8/3,53,6.5 关联关系/2,关联关系的定义: 在UML里,关联关系表示两个类或类和接口之间的语义连接 关联关系可以是双向的。它在所有的关系中间语义最弱 从关联关系的定义可以看出:如果两个类之间存在

27、着依赖关系或泛化关系,那么它们一定也隐含着具有关连关系 但在些情况下,描述这种关联关系已经没有意义,所以一般不必再对这种关联关系进行描述,或者说,这时关联关系已经被依赖关系或泛化关系所取代 这就是“语义最弱”的含义所在,2020/8/3,54,6.5 关联关系/3,关联关系是一种结构关系 如果两个类之间存在着关联关系,则它们的对象是互相连接的(对象之间存在着连接关系),即其中的一个对象可以访问另一个对象,它可以访问另一个对象的属性,或启动另一个对象的操作。,2020/8/3,55,6.5 关联关系/4,关联关系并不是仅仅一个抽象的概念 它在实现为程序设计语言源代码时,会有对应的映射 通常,当把

28、两个有关联关系的类映射为特定的程序设计语言代码时,每一个类都会被定义为一个可以引用对方的类的对象的成员变量 这个成员变量视对关联关系的修饰的不同,可能会采取不同的形式,如: 它可以指向对方的类的指针 也可能是对方类的对象,2020/8/3,56,6.5 关联关系/5,在UML中,关联关系的图形化表示的基本形式是连接两个类的直线。,对象类,对象类,限定符,关联 对象类,多重性,角色名,限定符,角色名,多重性,关联名,2020/8/3,57,6.5.1 关联关系:方向,关联方向 关联可以是单向的,也可以是双向的,双向的不必标出箭头 说明给出了一个订货,就可以指出办理该订货的顾客,但是给出一个顾客却

29、不能标识相应的订货 实现时,可以在“订货”类中设置一个指向“顾客”类的指针。,订货,顾客,*,1,2020/8/3,58,6.5.2 关联关系的修饰,由于关联关系的语义弱,所以可以对关联关系及其图形表示进行修饰以表达更为特指的情形 对于关联关系,存在着四种修饰,它们是: 名字 角色 重复度(multiplicity) 聚合,2020/8/3,59,6.5.3 关联关系的名字,对于关联关系,可以用名字对其进行标识,以和其它关联关系相区别 名字可以是任何有意义的文字串。如果名字里的词汇带有指向性, 用以特指所涉及的那个类,则可以在名字的靠近这个类的一侧放置一个指向三角形指向这个类,2020/8/3

30、,60,Person,Company,Work for,4,名字,关联,名字的指向,2020/8/3,61,6.5.4 关联关系的角色/1,关联关系中的角色 如果两个类之间存在着关联关系,则它们的对象可以互相访问 这意味着对其中任意一个对象而言,存在着另外一个类的对象能被它访问 为了访问关联关系的某一端类的对象,必须为它定义一个标识,使得通过这标识,另一个类的对象能够访问被访问的对象,2020/8/3,62,6.5.4 关联关系的角色/2,角色的定义:在UML里,关联关系两端的类的对象在对方的类里的标识,称为角色(role)。 角色在关联关系的图形化表示里由角色名(role name)表示。

31、当关联关系里的类被映射到程序设计语言时 角色名字就成为类的一个成员变量的名字,此成员变量的类型将是另一个类的对象,或指向另一个类的指针,2020/8/3,63,Person,Company,+employer,+employee,角色名,关联关系,2020/8/3,64,6.5.4 关联关系的角色/3,角色的重复度 当一个类的对象以关联关系的角色的形式出现在另一个类里时,此角色可以在此类中出现一次,也可以出现多次。角色的重复度指的就是角色的这种出现次数。 角色重复度的定义:在UML里,角色重复度被定义为关联关系的实例的两端所连接的对象的数目。,2020/8/3,65,6.5.4 关联关系的角色

32、/4,角色重复度的图形化表示:角色重复度被图示为一个表达式,它被放置在关联关系中靠近相应角色的一侧,此表达式确定了一个常数值或值的范围,例如: 重复度1:代表对象作为角色必须出现且只出现1次。 重复度0.1:表示对象作为角色可以出现0次或1次。 星号(*):代表任意多次,例如: 重复度0.*表示对象作为角色可以出现0次任意多次; 重复度1.*表示对象作为角色必须至少出现1次且可以出现多至任意多次。,2020/8/3,66,+employee,Person,Company,*,1.*,+employer,*,1.*,关联,重复度,2020/8/3,67,6.5.4 关联关系的角色/5,在一个带有

33、多重性的关联关系中,相关联的某一方可能同时出现过个对象。如目录与文件。 这样的描述比较粗糙。没有具体说明在目录中是如何标示一个文件的。因此,对于目录这个对象,虽然可以说出属于它的所有文件,但却无法指明哪个特定的文件要被删除。 使用限定关联可用来解决该问题。限定符用来说明对于关联关系的一方,它是如何表示和识别与它相关联的另一方中的多个对象的。如任何一个目录对象都是使用文件名来标示属于它的每个文件的。,目录,文件,文件名,1,2020/8/3,68,6.5.4 关联关系的角色/6,关联的属性、操作以及其它信息可以由关联对象类进一步描述 一个人能被一个单位或无单位聘用,一个单位可以聘用多个人,聘用的

34、期限和工资信息在关联类“工作岗位”中描述。,2020/8/3,69,6.5.4 关联关系的角色/7,根据关联的类的个数,可以分为: 自返关联 二元关联 N元关联,2020/8/3,70,(1)自返关联,自返关联(Reflexive Association,Recursive Association)是一个对象类与本身的关联,即一个类的两个对象间的关系 至多只有一个人的职务可以为业主,其他人的职务可以为工作人员,他们都是“职务”类的实例对象。一个“业主”可以与多个“工作人员”相连接。,2020/8/3,71,(2)N元关联,发生在3个和多个对象类之间,顾客,供应商,商品,订货 商品编号 商品名

35、单价,*,*,*,2020/8/3,72,6.5.5 关联关系:约束,约束: Implicit: 概念性的,在精化中不会再用 Ordered:规定一个多重性大于1的一端对象是有序的 Changeable:规定被关联的对象之间的连接是可变的,可以被添加、删除和改变 Addonly:规定可以在任何时间从源对象添加新的连接 Frozen:规定当源对象已经创建和初始化后,就被冻结,不能再添加、修改和删除连接 Xor:代表一组关联的互斥情况,2020/8/3,73,6.5.6 关联关系:聚合/1,聚合: 关联关系的基本形式是双向的,意味着关联关系两端的类的地位是平等的。 关联关系又是一种结构关系,其中的

36、角色代表着一个类的对象在另一个类中的存在。也就是说关联关系中类的对象被互相拥有,有时,出于建模的需要,有必要打破这种平等的关系,强调类与对象之间的有向的拥有关系 为此,可以用聚合对关联关系进行修饰,以表示类和对象的拥有关系。,2020/8/3,74,6.5.6 关联关系:聚合/2,聚合关系的定义:在UML中,聚合关系(aggregation)被定义为两个类之间的整体和部分的关系, 表明聚合关系中的客户端以供应端的类的对象作为其一部分 聚合对象具有其部分的所有权。,2020/8/3,75,6.5.6 关联关系:聚合/3,聚合关系的图形表示 通过在关联关系的聚合类一侧放置一个菱形得到 聚合关系还可

37、被进一步修饰为两类: 值聚合(by value, composite aggregate) 引用聚合(by reference),2020/8/3,76,整体:,聚合类、,客户端,Company,Department,*,1,*,1,聚合,部分:,供应端,2020/8/3,77,6.5.7关联关系:组合,表示事物的整体与部分的关系较强的情况 组合中,代表整体事物的组合对象负责创建和删除代表部分事物的对象(成分对象)。代表部分事物的对象只属于一个组合对象,而且与组合对象同时存在,同时消失,一旦删除了组合对象,也就随即删除了相应的代表部分事物的对象。 在聚合中,代表部分事物的对象可以属于多个聚合对

38、象,可以为多个聚合对象共享,而且可以随时改变它从属的多个聚合对象。部分事物对象的生存期与聚合对象的生存期无关。,2020/8/3,78,6.5.8 关联关系:组合与聚合/1,多边形,点,圆,图形属性块 颜色 结构,1,1,1,1,1,3*,ordered,2020/8/3,79,7. 特殊类,2020/8/3,80,7.1 接口,接口是一组外部可访问的操作,用于为对象类或组件提供服务。 接口可以看作一种特殊的抽象类,它不含属性,操作也没有方法,即没有操作的实现 接口两端的对象或组件可以独立变更,只要它们遵守和实现接口的规定,通过接口相联系就可以了。,2020/8/3,81,实现,依赖,2020

39、/8/3,82,7.2 抽象类/1,抽象类是不能直接产生实例的对象类 抽象类的实例对象只能通过一个非抽象类的子类产生,2020/8/3,83,7.2 抽象类/2,抽象类一般在继承结构中作为一个公共接口。但是在UML中的抽象类与接口是不同的模型元素。一个抽象类可以有属性,接口不含有属性,而且接口既可以由对象类实现(逻辑模型元素),也可以由组件实现(物理抽象元素),2020/8/3,84,7.3 参数化类/1,参数类(parameterized class)又称对象类模板(Template)是带有形式参数的类描述符,它定义一个类的家族。在参数类中属性和操作都是以形式化参数来定义。 参数类不能直接使用,只有通过把参数类的形式参数绑定到实在参数时才得到一个类。绑定的类不能扩充参数类,即不能添加属性和操作。,2020/8/3,85,7.4 型与实现对象类,可以用构造型把类说明为型(Type)或实现类(Implementation Class)。 对象类图标的类名之下标有构造型type或implementationClass,2020/8/3,86,2020/8/3,87,7.5导出属性和导出关联,可以从其它属性和关联计算推延得到的属性和关联,当前日

温馨提示

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

评论

0/150

提交评论