类
一个带有属性和方法的类图实例:
- CD:这是一个类图,class diagram;
- 类名auction: 一个拍卖类
- 属性列表:属性类型可以省略
- 类型修饰符:
- +: public
- -: private
- #: protected
- ?: readonly
- 方法列表:不需要列举所有方法
- 评论: 检查正确性并增加竞标数量
静态方法与静态属性
静态方法或属性用下划线表示。
派生属性
派生属性:一个属性可以从其他属性中计算(派生)得出,用"/"表示。
类图的完整性
- ?: 表示完整(所有属性或方法都被列出)
- … : 不完整 (部分属性或方法被省略)
- 第二个图表示方法全部被列出,但是属性不完整
代码生成
Auction类生成java代码
生成带有get/set方法的代码
接口、继承
实例
- 抽象类:类名斜体;抽象方法:方法斜体
- 接口:<interface> , 方法名与类名都斜体
- 接口实现关系:虚线加空心三角箭头
- 继承关系:实线加空心三角箭头
Stereotype
- Stereotype专门描述了模型元素的含义
- Stereotyp 的构成: <<name>>
tag(特征)
- tag描述模型元素的属性
- 一个tag的构成:{tagname=value}
- {Eigenschaft=true} 可以简写成 {Eigenschaft}
比如: {ordered}, {persistent}。
关联关系
示例
关联角色、关联名与基数
- 人参与竞拍, ?Person participates in Auction“
- 从人的角度来看:导航到拍卖,因此
- 关联角色“拍卖”链接
- 一个人最多可以参加99场拍卖(0…99)
- 一个拍卖品可以被任意的人数竞拍
- 基数:
- 精确的一个:1
- 可选:0。。1
- 任意:*
- 非零:1…*(或+)
- 固定间隔:3…9,17,21,42…99(但很少使用)
关联与链接
- 在运行时通过链接创建关联
角色名
- 角色名用于导航
Auction a; a.bidder; a.admin;
组合关系
- 组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;
- 他体现整体与部分间的关系,整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。
- 表示:带实心菱形的直线表示。
- 例如:
- 竞标政策、时序政策与拍卖类是组合关系,没有拍卖类就没有竞标政策与时序政策
- 人的头与嘴巴,嘴巴是头的组成部分之一,而且如果头没了,嘴巴也就没了,因此头和嘴巴是组合关系。
可导关联
- 可导关系:此关联关系可以被别的推到而出
- 比如,如果一个人是竞拍者或竞拍者的成员,他可以观看拍卖。(observers)
关联关系的特性
- {frozen}: 初始化后不允许再被改变
- {addOnly}: 保留已输出的信息
- {ordered}: 有一个顺序
关联关系中的限定符
- auctionIdent: 具有目标类属性的限定符
- String: 类型限定符
- login允许选择单个对象
- 限定符可以是:
- 表示顺序({ordered})的数字间隔(0-…)
- 任何值(限定符类型,例如字符串)
- 目标对象(拍卖人)的显式标识符(属性)
代码生成
多父类的代码生成
一对多的单向关联关系的代码生成
多对多的单向关联关系的代码生成
- classB不受影响
- HashSet存储多个引用
- “get”方法返回一个不变的集合
多对多的双向关联关系的代码生成
- ClassB的构造方法类似于A
- add”或“remove”等修改方法还使用辅助函数“addLocal”和“removeLocal”调整关联的相对链接。
- “get”方法返回一个不变的集合
带限定符的关联关系的代码生成
组合关系的代码生成
- classB不受影响
- 仅在对象的初始化阶段允许修改或占用
|