概要:
UML共9个标准图形。可分为静态视图(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)
将系统中活动和活动间的执行流程表现出来,指出一个执行动作的类中的活动和行为,并描述此为响应内部动作所作的所有响应。
一 用例图
Include:一个用例(基本用例)的行为包含了另一个用例(包含用例)。在包含关系中,箭头从主用例(基本用例)指向辅助用例(包含用例)。主用例没有包含辅助用例则不能执行。(执行主用例时,一定执行辅助用例)
Extend:主用例在没有其他扩展用例时也可以执行。(扩展用例指向基本用例)扩展用例可执行也可不执行
举例:用例DealWithXX(A)包含了CheckXX(B),包含箭头从A到B。
SendEmail (C)扩展了DealWithXX(A),包含箭头从C到A。
类属关系,会员同时也是网络访问者
二.组件图
:表示组件要求的接口(required)。(插座)
:表示组件提供的接口(provided)。(棒棒糖)
表示外部组件与组件之间的联系:
当表现组件与其他组件之间的关系时,“棒棒糖”(provided interface)与“插座”(required interface)之间有一支依存(dependency)箭头。从required指向provided。
表示组件内部中嵌套组件的协作:
(1) 组件内部的组件之间通过组件连接器( )来连接。
(2) 端口(port):Store的 OrderEntry 和Account接口符号在组件边缘上的方块( )。
端口显示了组件要求或提供的端口。
三.类图
抽象类(animal)和抽象(move)方法用斜体表示
可以理解为C#中的命名空间。Package1中包含了Class1,Class2和另一个包Package2。
类animal引用了Package1(命名空间)。
继承: (实线)。
实现: (虚线)。
依赖是比较弱的关系,而关联是一种结构化关系。
例:人吃饭,需要用到筷子,此时人与筷子之间的关系就是依赖。
是关联关系的一种特例,体现了整体与部分,拥有的关系。(has a)。
此时整体与部分之间是可分离的,具有各自的生命周期。部分可以属于多个整体。如计算机与CPU,公司与员工。表现在代码层,与关联关系是相同的,只能从语义级别区分。
Family与Child之间为聚合。
也是关联关系的一种特例,体现了contains a。关系比聚合强。同样体现了整体与部分的关系,但此时整体与部分是不可分的,整体的生命周期结束就意味着部分的生命周期结束。表现在代码层,与关联关系是相同的,只能从语义级别区分。
Persion与Brain是组合关系。
关系间的强弱程度依次是:组合>聚合>关联>依赖
Employee通过manager/manages角色与他自身相关联。
类关联到自身时,并非是一个类的实例与它自身关联,而是类的一个实例与另一个实例相关。
+ :Public - :Private
# :Protected ~ :Package(internal)包可见(程序集可见)
关联类是具有关联和类特性的模型元素。Person和Company间有工作关系。Job描述了
Person和Company之间的关系(岗位,薪水等)。如果没有Job,将薪水这一属性放在Person类或Company类都不合适。因此,此属性应该放在关联关系上。
四.时序图
跳转(break)最常用来做异常处理,此处,如果余额(balance)少于金额(amount),则跳入break块,然后会退出序列(不再走1.7addDebitTransaction());
代表methodB和methodC是两个并行运算的线程。
五.对象图
对象图主要描述在特定的系统时刻,对象与对象之间的关系。
类图描述一个系统中所有可能的状况,对象图描述系统中特定的状况。对象图可以看成一个类图的特殊用例。
六.状态图
状态图所描述的对象往往具有多个属性,一般状态图应该在具有以下两个特性的属性上建模:
(1) 属性具有较少的可能取值。
(2) 属性在这些值之间的转移有一定限制。
七.活动图
动作状态是原子的,不能被分解,没有内部转移,没有内部活动,动作状态的工作所占用的时间是可以忽略的。动作状态的目的是执行进入动作(entry action),然后转向另一个状态。
活动状态是可分解的,不是原子的,其工作完成需要一定时间。可以把动作状态看成活动状态的特例。
(1)描述重点不同,状态图描述的是对象状态之间的转移,而活动图描述的是从活动到活动的控制流。
(2)使用场合不同。如果目的是为了显示一个对象在其生命周期内的行为,则使用状态图较好。如果目的是为了分析用例,或理解涉及多个用例的工作流程,或处理多线程应用,则使用活动图。