目录
m1.高级类
m2.高级关系
m3.接口
m4.可见性设计
m5.代码映射
2.1 高级类
1.类目(Classifiers)
一般而言,有实例的的建模元素被称为类目。类目有结构特征(以属性的形式)和行为特征(以操作的形式)。
Ø(1)接口(interface):一组操作的集合,每个操作用于描述类或构件的一个服务。
Ø(2)数据类型(datatype):一种类型,其值是不可变的,包括简单的内置类型(如数字和字符串)和枚举类型(如Boolean)
Ø(3)关联(association):对一组链的描述,其中每个链都与两个或以上的对象相关。
Ø(4)信号(signal):对实例之间传递的异步消息的描述
Ø(5)构件(component):系统的模块化部分,它在一组外部接口背后隐藏了它的实现。
Ø(6)节点(node):运行时存在的物理元素,表示可计算的资源,一般至少有一定内存,还经常具有处理能力
Ø(7)用例(use case):一组动作序列的描述,系统对它的执行将为特定的参与者产生可观察的结果值。
Ø(8)子系统(subsystem):描述系统一个主要部分的构件
2.可见性(Visibility)
3.实例范围和静态范围(Instanceand Static Scope)
4.抽象元素、叶子元素和多态性元素(Abstract,Leaf, and Polymorphic Elements)
5.重数(Multiplicity)
6.属性(Attributes)
语法:
[可见性]属性名[’:’类型][‘[重数’]’][‘=’初始值][特征串{‘,’特征串}]
例:
origin 只有属性名
+origin 可见性和属性名
origin:Point
属性名和类型
name:String[0..1]
属性名、类型和重数
origin:Point =
(0,0)属性名、类型和初始值
id:Integer {
readonly}
属性名、类型和特性
7.操作(Operations)
语法:
[可见性]操作名[‘(’参数表’)’][‘:’返回类型][特性串{‘,’特性串}]
例:
display 操作名
+ display 可见性和操作名
set(n:Name,s:String)
操作名和参数
getID():Integer
操作名和返回类型
restart() {gaurded}
操作名和特性
参数的语法:
[方向]
参数名:类型 [=默认值]
方向可以是
in 输入参数
out输出参数
inout输入输出参数,调用者可修改
用于操作的特性:
leaf abstract
query
sequential guarded concurrent
static
8.模板类(Template
class)
被参数化的元素。不能直接使用,必须首先对它进行实例化。(把形式参数绑定为实际参数)
9.标准元素(StandardElements)
2.2
高级关系
1.依赖
可用于类图中的类和对象之间的依赖关系上的构造型:
bind
derive
permit
instanceOf
instantiate
powertype
refine
use
用于包之间依赖的构造型:
import
access
用于用例之间的依赖的构造型:
extend
include
用于对象间交互语境的构造型
send
trace
2.泛化
泛化的约束:
complete,incomplete,disjoint,overlapping
3.关联
关联的基本修饰:关联名、角色、重数、聚合
可见性
限定
关联类
在两个类之间的关联中,关联本身可以有特性。在UML中把这种情况建模为关联类。
约束
用于关联的约束:
ordered
set
bag
order set
list 或 sequence
readonly
4.实现

2.3
接口
接口是一组操作的集合,其中每个操作用于描述类或构件的一个服务。
名称

操作
关系
2.4
可见性设计
m可见性(visibility):对象看到或引用其他对象的能力。
m为了使发送者对象能够向接收者对象发送消息,发送者必须具有接收者的可见性,即发送者必须拥有对接收者对象的某种引用或指针
m实现对象A到对象B的可见性通常有四种方式:
Ø属性可见性Attribute Visibility: B是A的属性
Ø参数可见性Parameter
visibility:B是A方法中的参数
Ø局部可见性Local Visibility: B是A中方法的局部对象(不是参数)
Ø全局可见性Global Visibility: B具有某种方式的全局可见性
m为了使对象A能够向对象B发送消息,对于A而言,B必须是可见的
(1)属性可见性
这是一种相对持久的可见性。
(2)参数可见性
这种可见性是相对暂时的。
(3)局部可见性
两种常见方式:
Ø创建新的局部实例并将其分配给局部变量
Ø将方法调用返回的对象分配给局部变量


(4)全局可见性
这是一种相对持久的可见性。
2.5
将设计映射为代码
1.设计类图(DCD)
Ø交互图完成后,有可能来定义软件类(接口)的描述
Ø设计类图(DesignClass Diagrams,DCD)
mDCD的创建时间:
Ø实践中,交互图经常与DCD并行创建
DCD
和 UP 术语
m设计类图描述了应用中的软件类和接口
Ø类,关联和属性
Ø接口,包括操作和常量
Ø方法
Ø属性类型信息
Ø可见性
Ø依赖
mUP并没有专门的
“设计类图”
mUP定义了设计模型,包括交互,包和类图.
m在UP设计模型中的类图包含“设计类”
领域模型
vs. 设计模型类

2. 代码生成
m交互图和DCD可以作为代码生成过程的输入
m实现模型包括源代码,数据库定义,源代码,
JSP/XML/HTML
编程和开发过程
m现代方法:Design-while-programming
m但是我们经常在编程前进行可视化建模
在实现时候的创造性和变更
m设计中也包括决策和创新工作
m代码的生成
= 机械翻译过程?
Ø不完全对
Ø需要修改,详细的问题将出现并被解决
代码变更和迭代过程

从DCD创建类的定义
(1)定义带有方法和简单属性的类

(2)增加引用属性
引用属性是依据类图中的关联和方向性来的
引用属性和角色名字

(3)属性映射

(4) 从交互图中创建方法
消息顺序被翻译成方法定义中的一系列声明

(5) 代码中的容器/集合类

注意
m从DCD翻译类的定义、从交互图翻译方法是比较直接的过程
m但是在编程阶段依旧有许多地方需要做决策,设计修改和探索
小结
m类目是有实例的建模元素,除了类,还有其他8种。
m类之间的有依赖、关联、泛化、实现关系,每种关系都有一些特定的构造型。
m接口是一组操作的集合,可用接口对系统中的接缝建模。
m可见性是对象看见或引用其他对象的能力,有属性、参数、局部、全局可见性。
m代码映射是从设计类到实现类的转换过程。可用建模工具实现,但在编程过程仍然存在创造、进化和探索的空间。