准则:应该花费时间使用交互图进行动态对象建模,而不仅是使用类图进行静态对象建模
UML关键字是对模型元素分类的文本修饰。
关键字 含义 用法示例
《actor》 类元为参与者 在类图中,置于类元名称之上
《interface》 类元为接口 在类图中,置于类元名称之上
{abstract} 抽象元素;不能实例化 在类图中,至于类元名称或操作名称之后
{ordered} 具有强制顺序的一组对象 在类图中,助于关联的端点
准则:在绘制UML草图时(追求速度、简便性和创造性),建模者通常会将关键字简化为类似‘<interface>’或‘<I>’的形式。
泛化、抽象类、抽象操作
在UML中,泛化(generalization)用由子类到超类的实线和空心三角箭头表示。
泛化——普通的类元与特殊的类元之间的分类学关系。特殊类元的每个实例也是普通类元的简介实例。因此,特殊类元间接地拥有了普通类元的特性。
泛化与OO编程语言中的继承(inheritance)的意义是否相同??
这要是条件而定,在领域模型概念视角的类图中,答案为否。对于领域模型,更恰当的解释是,超类是超集而子类是子集。
抽象类和操作既可以采用{abstract}标记表示,也可以用谢提名来表示。
依赖
UML中所包含的普通依赖关系表示客户(Client)元素了解其他的提供者(supplier)元素,并且表示当提供者有所改变时会对客户产生影响。
依赖用从客户到提供者的虚线箭头表示。
依赖可以视为耦合的另一个版本。
依赖有许多种类,以下是在对象图和类图中比较常见的类型:
- 拥有提供者类型的属性
- 向提供者发送消息。对提供者的可见性可能是:属性、参数变量、局部变量、全局变量或类的可见性
- 接受提供者类型的参数
- 提供者是超类或接口
准则:在类图中,使用依赖线描述对象间的全局变量、参数变量、局部变量和静态方法的依赖
组合优于聚合
组合也成为组成聚合,这是一种很强的整体一部分聚合关系,并且在某些模型中具有效用。组合关系有以下几层含义:
- 在某一时刻,部分的实例只属于一个组成实例
- 部分必须总是属于组成
- 组成要负责常见和删除其部分,既可以自己来创建删除部分,也可以与其他对象协作来创建删除部分。与该约束相关的是,如果组成被销毁,其部分也必须被销毁。
在UML中,用带有实心菱形箭头的关联线来表示组合,箭头指向组成类。
准则:组合中的关联名称总是暗示“拥有-部分”的某些变体,因此不要飞信对该关联显示的命名。