UML中注意的几个地方

概要:

UML9个标准图形。可分为静态视图(StaticViews)和动态视图(DynamicViews

静态视图:

1.使用案例图(Use Case Diagram

       可以将特定的用例(Use Case)与角色间的关系表现出来。

2.类图(Class Diagram

       表现系统中类和逻辑在视图上的关系,但不描述其行为。

3.对象图(Object Diagram

       描述在特定时刻系统的静态结构。

4.组件图(Component Diagram

       可以看出系统中组件与组件间的组织依赖关系。

5.部署图(Deployment Diagram

       将系统在运行时的结点设置和存在于该节点上的相关组件表现出来。

动态视图:

       1.顺序图(Sequence Diagram

              规划模型流程的控制以及描述活动的发展过程。

       2.合作图(Collaboration Diagram

              强调对象间的数据流,控制流程和消息的传递活动,可以分析出各个对象间的关系。

       3.状态图(StateChart Diagram

主要用来说明行为的状态和响应。可用来作为模型中各对象生命周期的指示和响应。

       4.活动图(Activity Diagram           

将系统中活动和活动间的执行流程表现出来,指出一个执行动作的类中的活动和行为,并描述此为响应内部动作所作的所有响应。

用例图

1.用例之间的关系Includeextend区别:

Include一个用例(基本用例)的行为包含了另一个用例(包含用例)。在包含关系中,箭头从主用例(基本用例)指向辅助用例(包含用例)。主用例没有包含辅助用例则不能执行。(执行主用例时,一定执行辅助用例)

       Extend主用例在没有其他扩展用例时也可以执行。(扩展用例指向基本用例)扩展用例可执行也可不执行

image

  

举例:用例DealWithXXA)包含了CheckXXB),包含箭头从AB

              SendEmail C)扩展了DealWithXXA),包含箭头从CA

2.角色之间的类属关系:

               image

 类属关系,会员同时也是网络访问者

 

二.组件图

1.用例之间的关系Includeextend区别:

image :表示组件要求的接口(required)。(插座)

image :表示组件提供的接口(provided)。(棒棒糖)

2.组件之间的关系:

表示外部组件与组件之间的联系

image

当表现组件与其他组件之间的关系时,“棒棒糖”(provided interface)与“插座”(required interface)之间有一支依存(dependency)箭头。从required指向provided。

表示组件内部中嵌套组件的协作

image

(1) 组件内部的组件之间通过组件连接器(image )来连接。

(2) 端口(port):Store的 OrderEntry 和Account接口符号在组件边缘上的方块(image )。

端口显示了组件要求或提供的端口。

 

三.类图

1.抽象类和抽象方法:

image

 抽象类(animal)和抽象(move)方法用斜体表示

2.软件包:

image

可以理解为C#中的命名空间。Package1中包含了Class1Class2和另一个包Package2

animal引用了Package1(命名空间)。

3.继承与实现:

继承:image  (实线)。

实现:image  (虚线)。

4.依赖和关联:

依赖是比较弱的关系,而关联是一种结构化关系。

1. 关联:若类C单向关联指向类D,则在类D中存在一个属性B(b)

image

2. 依赖:若类A依赖类B,则不会有这个属性,类B的实例可能存在于某个方法调用的参数中,或某个方法的局部变量中(即类A用到类B)。

例:人吃饭,需要用到筷子,此时人与筷子之间的关系就是依赖。

image 

5.聚合与组合:

1.聚合:

是关联关系的一种特例,体现了整体与部分,拥有的关系。(has a)。

此时整体与部分之间是可分离的,具有各自的生命周期。部分可以属于多个整体。如计算机与CPU,公司与员工。表现在代码层,与关联关系是相同的,只能从语义级别区分。

image

FamilyChild之间为聚合。

2.组合:

也是关联关系的一种特例,体现了contains a。关系比聚合强。同样体现了整体与部分的关系,但此时整体与部分是不可分的,整体的生命周期结束就意味着部分的生命周期结束。表现在代码层,与关联关系是相同的,只能从语义级别区分。

image

PersionBrain是组合关系。

关系间的强弱程度依次是:组合>聚合>关联>依赖

6. 类的自关联(反射关联):

image

Employee通过manager/manages角色与他自身相关联。

类关联到自身时,并非是一个类的实例与它自身关联,而是类的一个实例与另一个实例相关。

7. 类的可见性标志

+ Public                      - Private

# Protected                Packageinternal)包可见(程序集可见)

8. 关联类(需要进一步明确概念)

image

 关联类是具有关联和类特性的模型元素。PersonCompany间有工作关系。Job描述了

PersonCompany之间的关系(岗位,薪水等)。如果没有Job,将薪水这一属性放在Person类或Company类都不合适。因此,此属性应该放在关联关系上。

 

四.时序图

1.时序图中的跳转(break):

image

 跳转(break)最常用来做异常处理,此处,如果余额(balance)少于金额(amount),则跳入break块,然后会退出序列(不再走1.7addDebitTransaction());

2.并行(par

image

 代表methodBmethodC是两个并行运算的线程。

五.对象图

1. 对象图与类图的区别和联系:

对象图主要描述在特定的系统时刻,对象与对象之间的关系。

类图描述一个系统中所有可能的状况,对象图描述系统中特定的状况。对象图可以看成一个类图的特殊用例。

六.状态图

1.状态图建模:

状态图所描述的对象往往具有多个属性,一般状态图应该在具有以下两个特性的属性上建模:

(1)       属性具有较少的可能取值。

(2)       属性在这些值之间的转移有一定限制。

七.活动图

1.动作状态(Action state)和活动状态(Activity state)

动作状态是原子的,不能被分解,没有内部转移,没有内部活动,动作状态的工作所占用的时间是可以忽略的。动作状态的目的是执行进入动作(entry action),然后转向另一个状态。

活动状态是可分解的,不是原子的,其工作完成需要一定时间。可以把动作状态看成活动状态的特例。

2.状态图与活动图的比较

1)描述重点不同,状态图描述的是对象状态之间的转移,而活动图描述的是从活动到活动的控制流。

2)使用场合不同。如果目的是为了显示一个对象在其生命周期内的行为,则使用状态图较好。如果目的是为了分析用例,或理解涉及多个用例的工作流程,或处理多线程应用,则使用活动图

posted @ 2010-10-09 13:42  天空是蓝的  阅读(3486)  评论(3编辑  收藏  举报