南理工泰科院UML课件04_第1页
南理工泰科院UML课件04_第2页
南理工泰科院UML课件04_第3页
南理工泰科院UML课件04_第4页
南理工泰科院UML课件04_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、第第4 4章章 其他结构建模其他结构建模 计算机科学与技术计算机科学与技术 主要内容主要内容 扩展机制扩展机制 包和包图包和包图 接口接口 复合结构图复合结构图 扩展机制扩展机制 标记值标记值tagged valuetagged value 扩充了扩充了UMLUML的模型元素的属性,允许在模型元素的规格的模型元素的属性,允许在模型元素的规格 中创建新的信息。中创建新的信息。 构造型构造型stereotypestereotype 扩充了扩充了UMLUML的词汇表,允许针对不同的问题从已有的基的词汇表,允许针对不同的问题从已有的基 础上创建新的元素类型。础上创建新的元素类型。 约束约束constr

2、aintconstraint 扩充了扩充了UMLUML模型元素的语义,允许添加新的限制条件或模型元素的语义,允许添加新的限制条件或 修改已有的限制条件。修改已有的限制条件。 标记值标记值 一个标记值一个标记值(tagged value)(tagged value)是一个标记名和一个值的对偶是一个标记名和一个值的对偶 ,表示为,表示为“ 标记名标记名= =标记值标记值 ”。标记值可为元素添加新的。标记值可为元素添加新的 性质。性质。 例:例: author = “Joe Smith”, deadline = 31-March- author = “Joe Smith”, deadline = 3

3、1-March- 1997, status = analysis 1997, status = analysis 注意:注意:UML1.XUML1.X规范中,标记值可附加在任何元素上。但在规范中,标记值可附加在任何元素上。但在 UML2UML2规范中,标记值仅用于构造型中。规范中,标记值仅用于构造型中。 构造型构造型 一个构造型一个构造型stereotypestereotype是在建模时引入的元模型元素的一种是在建模时引入的元模型元素的一种 新类。表示方法:新类。表示方法: stereotype stereotype 。 表示一个已有元模型元素的一个子类,与其具有相同形式表示一个已有元模型元素

4、的一个子类,与其具有相同形式( (属属 性和关系性和关系) ),但有不同用意,但有不同用意( (为了适用于特定平台或领域为了适用于特定平台或领域) )。 简而言之,构造型扩展机制的目的就是基于一个已存在的模简而言之,构造型扩展机制的目的就是基于一个已存在的模 型元素再重新定义一个新的模型元素。型元素再重新定义一个新的模型元素。 构造型构造型 构造型可以基于所有种类的模型元素。构造型可以基于所有种类的模型元素。 构造型的一般表现形式为使用构造型的一般表现形式为使用“”和和“”包含构造型的包含构造型的 名称在里面。名称在里面。 定义定义一个类的构造型,用矩形表示,必须确定一个名字,如一个类的构造型

5、,用矩形表示,必须确定一个名字,如 JavaBeanJavaBean,并用,并用stereotype stereotype 说明在名字上方,用一个实说明在名字上方,用一个实 心三角箭头指向被扩展的类元。心三角箭头指向被扩展的类元。 使用使用includeinclude构造型构造型 扩展扩展ClassClass元类来定义一个构造型元类来定义一个构造型 构造型构造型 构造型的表现形式并不都是使用构造型的表现形式并不都是使用“ ”和和“ ”,有的是通,有的是通 过图形的改变来表示的。过图形的改变来表示的。 UML UML 中已经预定义多种模型元素的标准构造型,用户也可中已经预定义多种模型元素的标准构

6、造型,用户也可 以自己定义构造型。以自己定义构造型。 构造型构造型 使用使用一个构造型来说明一个模型元素时,该构造型的名字一个构造型来说明一个模型元素时,该构造型的名字 用用 构造名构造名 表示,说明在元素名字的上方或前方。表示,说明在元素名字的上方或前方。 如图,构造型如图,构造型 JavaBeanJavaBean 用于说明一个用于说明一个PersonPerson类,说明了类,说明了 这个类作为这个类作为JavaBeanJavaBean类进行设计。类进行设计。 如果标记值不是太多的话,也可说明在类名的下方,用如果标记值不是太多的话,也可说明在类名的下方,用 括起来,并用逗号分开多个标记值。括

7、起来,并用逗号分开多个标记值。 约束约束 约束约束(Constraint)(Constraint)表示条件或限制,可用自然语言或形式表示条件或限制,可用自然语言或形式 化语言描述,对建模元素的某些语义进行限定。化语言描述,对建模元素的某些语义进行限定。 约束有两类:约束有两类:UMLUML预定义和用户定义。预定义和用户定义。 模型中表示约束:模型中表示约束: 可以是自由文本或可以是自由文本或OCL(Object Constraint Language)OCL(Object Constraint Language) 表示表示 注解注解notenote方式方式 语法:花括号,语法:花括号, 约束约

8、束 布尔表达式布尔表达式 约束约束 用虚线表示两者之间用虚线表示两者之间 的约束。的约束。 xor表示两者互斥表示两者互斥 用注解用注解note方式来描述约束方式来描述约束 包包 包是一种有效的组织管理机制。包是一种有效的组织管理机制。 包在包在UMLUML中被视为文件夹或目录结构中被视为文件夹或目录结构 包包 包的作用包的作用 包像一个容器,通常用来组织用例图和类图,当然,包图的包像一个容器,通常用来组织用例图和类图,当然,包图的 用途不仅限于这些用途不仅限于这些UMLUML元素;元素; 语义上相关的元素进行分组;定义模型中的语义上相关的元素进行分组;定义模型中的“语义边界语义边界”; 提供

9、封装的命名空间,其中所有名称必须唯一。提供封装的命名空间,其中所有名称必须唯一。 包的名称包的名称 每个包必须有一个与其他包相区别的名称。每个包必须有一个与其他包相区别的名称。 两种形式:简单名和路径名。两种形式:简单名和路径名。 包拥有的元素包拥有的元素 包用于对模型元素进行分组,并为这些元素提供包用于对模型元素进行分组,并为这些元素提供 一个一个命名空间命名空间,这意味着一个包中多个元素的命,这意味着一个包中多个元素的命 名不能重复。名不能重复。 包中各元素的包中各元素的限定名限定名就是包名加上元素的名称,就是包名加上元素的名称, 例如,例如,P:AP:A,P P是包的名字,是包的名字,A

10、 A是类的名字。是类的名字。 一个元素的一个元素的非限定名非限定名就是该元素的名字。就是该元素的名字。 包拥有的元素包拥有的元素 包拥有的元素:类、接口、组件、节点、协作、包拥有的元素:类、接口、组件、节点、协作、 用例、图以及其他包。用例、图以及其他包。 拥有是一种拥有是一种组成组成关系。关系。 一个模型元素不能被一个以上的包所拥有。一个模型元素不能被一个以上的包所拥有。 如果包被撤销,其中的元素也要被撤销。如果包被撤销,其中的元素也要被撤销。 包中的成员可直接表示在文件夹方框之内,也可表示在方框外部。包中的成员可直接表示在文件夹方框之内,也可表示在方框外部。 包成员的可见性包成员的可见性

11、可见性的类型:可见性的类型: 公有的(公有的(publicpublic) “ “” 受保护的(受保护的(protectedprotected) “ “” 私有的(私有的(privateprivate)“” 一个包中一个包中publicpublic成员在包外可用限定名进行访问;而成员在包外可用限定名进行访问;而 privateprivate成员则只能在本包范围内被访问。成员则只能在本包范围内被访问。 一个包的子包可称为一个包的子包可称为内层包内层包或者下层包,或者下层包,UMLUML规定内层包规定内层包 中元素可访问外层包中元素,而无需限定名,只要内层中元素可访问外层包中元素,而无需限定名,只要

12、内层 包中不存在同名元素。包中不存在同名元素。 包间关系包间关系 主要关系主要关系 依赖关系依赖关系 泛化关系泛化关系 其他关系其他关系 包含包含 导入导入 合并合并 包间关系包间关系 依赖关系依赖关系 如果两个包中的任意两个元素间存在依赖关如果两个包中的任意两个元素间存在依赖关 系,那么这两个包就存在依赖关系。系,那么这两个包就存在依赖关系。 ABC 注:依赖关系没有传递注:依赖关系没有传递 包间关系包间关系 泛化关系泛化关系 包间的泛化关系用于说明包的家族关系包间的泛化关系用于说明包的家族关系 与类之间的泛化概念相同与类之间的泛化概念相同 用户界面界面 包含包含 包包含包包含 包包含(包包

13、含(package includepackage include)指一个包可包)指一个包可包 含若干子包,如同文件系统中的一个目录可含若干子包,如同文件系统中的一个目录可 包含若干子目录,形成树形结构。包含若干子目录,形成树形结构。 内层包可直接访问其外层包中的元素,无需内层包可直接访问其外层包中的元素,无需 导入。但一个包要访问它所包含的子包,就导入。但一个包要访问它所包含的子包,就 可能需要导入。可能需要导入。 导入导入 包导入包导入 包导入(包导入(package importpackage import)是一种允许采用)是一种允许采用 非限定名称访问来自于另一个命名空间中的非限定名称访

14、问来自于另一个命名空间中的 元素的关系。元素的关系。 导入也可确定可见性,有以下两种选择:导入也可确定可见性,有以下两种选择: publicpublic缺省,被导入的元素对包外是可见的。缺省,被导入的元素对包外是可见的。 importimport privateprivate,被导入的元素对包外不可见。,被导入的元素对包外不可见。 accessaccess 包导入包导入 包导入是包之间的一种有向关系,并且是包之间包导入是包之间的一种有向关系,并且是包之间 的一种依赖关系,用依赖箭头从一个包指向被导的一种依赖关系,用依赖箭头从一个包指向被导 入的一个包。入的一个包。 共有导入具有传递性,而私有导

15、入不具传递性。共有导入具有传递性,而私有导入不具传递性。 包合并包合并 包合并包合并(package merge)(package merge):一个有向关系,:一个有向关系, 从一个源包从一个源包sourcesource指向一个目标指向一个目标target;target; 定义了一个包定义了一个包(source)(source)中的内容是另一个包中的内容是另一个包 (target)(target)的内容的扩展。的内容的扩展。 合并关系用虚线箭头从源指向目标,并标明合并关系用虚线箭头从源指向目标,并标明 构造型构造型mergemerge。 包合并包合并 包合并类似于包合并类似于“泛化泛化”的继

16、承关系,源包的的继承关系,源包的 元素在概念上增加了目标包中的元素的特性元素在概念上增加了目标包中的元素的特性 作为自己的特性,这样形成了特性的合并。作为自己的特性,这样形成了特性的合并。 何时应使用包合并?何时应使用包合并? 不同包中存在一些元素具有同样的名字,而且不同包中存在一些元素具有同样的名字,而且 表示同一个概念,从一个公共的基本定义开始表示同一个概念,从一个公共的基本定义开始 ,出于不同目的,以增长方式扩展,每一次扩,出于不同目的,以增长方式扩展,每一次扩 展都定义在一个单独的包中。展都定义在一个单独的包中。 包的内聚性原则包的内聚性原则 内聚性原则解决内聚性原则解决“一个包中应包

17、含什么一个包中应包含什么” ” 重用发布等价原则重用发布等价原则 REP: Reuse-release REP: Reuse-release Equivalence PrincipleEquivalence Principle 重用的粒度就是发布的粒度。重用的粒度就是发布的粒度。 违背:一部分可重用,而另一部分完全不重用违背:一部分可重用,而另一部分完全不重用 共同重用原则共同重用原则CRP: Common-Reuse PrincipleCRP: Common-Reuse Principle 一个包中的所有类型应该是共同重用的。一个包中的所有类型应该是共同重用的。 违背:相互之间没有紧密联系的

18、一组类型违背:相互之间没有紧密联系的一组类型 共同封闭原则共同封闭原则CCP: Common-Closure PrincipleCCP: Common-Closure Principle 一个包中所有类型应对同一种变化共同封闭。一个包中所有类型应对同一种变化共同封闭。 违背:一个更改导致多个包的更改违背:一个更改导致多个包的更改 包的耦合性原则包的耦合性原则 耦合性原则指导耦合性原则指导“包之间应该有哪些关系包之间应该有哪些关系” ” 无环依赖原则无环依赖原则ADP: Acyclic-Dependence ADP: Acyclic-Dependence PrinciplePrinciple :

19、包的依赖关系不应有环:包的依赖关系不应有环 稳定依赖原则稳定依赖原则SDP: Stable-Dependencies SDP: Stable-Dependencies PrinciplePrinciple :朝着更稳定的方向建立依赖。:朝着更稳定的方向建立依赖。 违背:依赖于一个易变的包违背:依赖于一个易变的包 稳定抽象原则稳定抽象原则SAP: Stable-Abstractions SAP: Stable-Abstractions PrinciplePrinciple :包的抽象程度应与稳定程度一致。:包的抽象程度应与稳定程度一致。 违背:依赖于一个较具体包,而不是抽象包违背:依赖于一个较具

20、体包,而不是抽象包 无环依赖原则无环依赖原则ADP 直接形成依赖环直接形成依赖环 无环依赖原则无环依赖原则ADP 间接形成依赖环间接形成依赖环 如何消除依赖环,使包图成为一个有向无环图?如何消除依赖环,使包图成为一个有向无环图? 1 1、移动类型。只要遵循包的内聚性的、移动类型。只要遵循包的内聚性的3 3个原则个原则 ,就能消除大多数的直接依赖环。,就能消除大多数的直接依赖环。 2 2、采用依赖倒置原则、采用依赖倒置原则DIPDIP。 采用依赖倒置采用依赖倒置DIP将依赖方向逆转将依赖方向逆转 如何消除依赖环,使包图成为一个有向无环图?如何消除依赖环,使包图成为一个有向无环图? 3 3、构建新

21、包。对于间接形成的依赖环,可以构建一、构建新包。对于间接形成的依赖环,可以构建一 个新的包,然后将产生依赖的类型移到新包中,个新的包,然后将产生依赖的类型移到新包中, 从而消除依赖环。从而消除依赖环。 稳定依赖原则稳定依赖原则SDPSDP 包的稳定程度或者易变程度如何衡量?包的稳定程度或者易变程度如何衡量? 稳定依赖原则稳定依赖原则SDPSDP SDPSDP原则要求一个包应依赖比它更稳定的包原则要求一个包应依赖比它更稳定的包 ,而不应依赖比它更易变的包。,而不应依赖比它更易变的包。 接口接口 接口接口interfaceinterface是一种类元,表示一组相关的公共特是一种类元,表示一组相关的

22、公共特 征和职责约定。征和职责约定。 接口是类接口是类classclass的一种构造型的一种构造型stereotype;stereotype; 接口描述行为规范,但不描述行为如何实现。由一接口描述行为规范,但不描述行为如何实现。由一 组类提供接口的实现,根据操作的基调,提供具体组类提供接口的实现,根据操作的基调,提供具体 的实现方法的实现方法methodmethod。 接口不能直接实例化创建对象。接口不能直接实例化创建对象。 一个接口的实例是实现该接口的类的实例。一个接口的实例是实现该接口的类的实例。 一般首字母大写,建议用一般首字母大写,建议用“I”I”开头。开头。 语法:圆圈,或方框语法:

23、圆圈,或方框( (与类相似,仅描述各操作与类相似,仅描述各操作) )。 供口和需口供口和需口 供口供口provide interfaceprovide interface:一个类所实现的接口,表示:一个类所实现的接口,表示 该类与实现了该接口,描述了该类元的实例向使用方提该类与实现了该接口,描述了该类元的实例向使用方提 供的一组服务。供的一组服务。 需口需口required interfacerequired interface:一个类需使用的接口,表示:一个类需使用的接口,表示 该类元通过该接口请求特定服务,即该类元依赖于该接该类元通过该接口请求特定服务,即该类元依赖于该接 口。口。 需口需

24、口供口表示形式供口表示形式 供口和需口供口和需口 如果需要查看接口内部的特征,就需要一种展开如果需要查看接口内部的特征,就需要一种展开 方式:方式: 接口展开形式、接口的实现及接口的使用接口展开形式、接口的实现及接口的使用 注:接口中所有的特征都缺省为公共的注:接口中所有的特征都缺省为公共的(public)(public) 接口间的关联与协作接口间的关联与协作 一个接口与其他类元之间可能存在关联,这一个接口与其他类元之间可能存在关联,这 意味着该接口的实现类元与其他类元之间存意味着该接口的实现类元与其他类元之间存 在关联。两个接口之间的关联隐含着这两个在关联。两个接口之间的关联隐含着这两个 接

25、口的实现类元之间存在关联。接口的实现类元之间存在关联。 接口之间的关联与协作接口之间的关联与协作 接口接口interfaceinterface的概念理解的概念理解 接口主要用于隔离行为规范与行为的具体实现,接口主要用于隔离行为规范与行为的具体实现, 简化行为调用复杂性,简化调用方编程。简化行为调用复杂性,简化调用方编程。 存在多种接口形式:存在多种接口形式: GUIGUI,图形用户接口,图形用户接口/ /界面,用例的形象描述界面,用例的形象描述 UMLUML类型,类似类型,类似JavaJava接口,对一组操作的抽象、分组与接口,对一组操作的抽象、分组与 命名。命名。 APIAPI,应用编程接口

26、,供编程调用而不用考虑其内部如,应用编程接口,供编程调用而不用考虑其内部如 何实现。何实现。 类的公共成员作为该类对象的调用接口,公共成员与保类的公共成员作为该类对象的调用接口,公共成员与保 护成员作为子类的扩展接口。护成员作为子类的扩展接口。 复合结构图复合结构图 复合结构图也称为组成结构图复合结构图也称为组成结构图 Composite structure diagramComposite structure diagram 复合结构图主要对复合结构图主要对一组互联元素一组互联元素的的组成结构组成结构 进行建模,表示运行时刻的实例通过通信链进行建模,表示运行时刻的实例通过通信链 相互协作,以

27、达到某些共同目标。相互协作,以达到某些共同目标。 复合结构图主要描述复合结构图主要描述内部结构内部结构、端口端口、协作协作 等,是等,是UML2UML2的新图。的新图。 复合结构图的内部结构复合结构图的内部结构 在运行时刻,内部结构表示一个实例内部多在运行时刻,内部结构表示一个实例内部多 个元素之间的互联结构。个元素之间的互联结构。 类的内部结构的例子类的内部结构的例子 复合结构图的内部结构复合结构图的内部结构 采用这种方式也能表示一个对象的内部构造。采用这种方式也能表示一个对象的内部构造。 CarCar类的一个实例的内部构造类的一个实例的内部构造 在实例级别上描述的对象内部结构也应属于一种对

28、象图。每在实例级别上描述的对象内部结构也应属于一种对象图。每 个构造都是一个实例规范,表示为:个构造都是一个实例规范,表示为:名字名字/ /角色名:类元名角色名:类元名。 复合结构图的内部结构复合结构图的内部结构 一个对象,也表示了创建该对象的构造器(一个对象,也表示了创建该对象的构造器( constructorconstructor)。)。 CarCar类的构造器与一个实例类的构造器与一个实例 复合结构图的内部结构复合结构图的内部结构 使用复合结构图表示内部结构有什么好处?使用复合结构图表示内部结构有什么好处? 在一个类元或实例的方框之内表示其内部结构,在一个类元或实例的方框之内表示其内部结

29、构, 这样既能这样既能表示封装结构表示封装结构,也能表示内部元素之间,也能表示内部元素之间 的的关系关系,而每个元素又可描述,而每个元素又可描述内部结构内部结构,这样的,这样的 图形更直观、更易理解。图形更直观、更易理解。 复合结构图的端口复合结构图的端口 端口端口Port: Port: 类元的一个性质,确定该类元与其外类元的一个性质,确定该类元与其外 部环境或与其内部各部件之间的一个部环境或与其内部各部件之间的一个交互点交互点。 供口供口provided interface: provided interface: 表示该类元的外部环表示该类元的外部环 境通过端口向类元发出请求,即该类元向外

30、部环境通过端口向类元发出请求,即该类元向外部环 境提供某种服务。境提供某种服务。 需口需口required interfacerequired interface:表示该类元通过端口:表示该类元通过端口 向类元发出请求,即环境向该类元提供服务。向类元发出请求,即环境向该类元提供服务。 复合结构图的端口复合结构图的端口 端口的例子端口的例子 复合结构图的端口复合结构图的端口 端口总结:端口总结: 在在UMLUML中,一个端口确定了某个类元对外部的一个中,一个端口确定了某个类元对外部的一个 交互点,端口的供口和需口规范了通过该端口所交互点,端口的供口和需口规范了通过该端口所 进行的交互所必需的内容

31、。进行的交互所必需的内容。 如果一个类元与其环境所有交互都通过端口进行如果一个类元与其环境所有交互都通过端口进行 ,那么该类元的内部就与外界完全隔离开,这样,那么该类元的内部就与外界完全隔离开,这样 一个类元可用于任何语境中,只要符合端口所确一个类元可用于任何语境中,只要符合端口所确 定的约束即可。定的约束即可。 复合结构图的协作复合结构图的协作 一个协作一个协作(collaboration)(collaboration)描述了参与协作的多个描述了参与协作的多个 元素元素( (或角色或角色) )的一种结构,各自完成一项特定功的一种结构,各自完成一项特定功 能,通过协作能能,通过协作能提供某些新功能提供某些新功能。 协作协作ObserverObserver有两个角色,分别由两个类的实例有两个角色,分别由两个类的实例 来扮演来扮演 。 协作的例子协作的例子 复合结构图的协作复合结构图的协作 一个协作可以仅表示多个角色,而将扮演特定角一个协作可以仅表示多个角色,而将扮演特定角 色的类表示在协作的外部。色的类表示在协作的外部。 ObserverObserver的两个角色分别由两个类的

温馨提示

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

评论

0/150

提交评论