搜索文档
类的组成
类名:由字符、数字、下划线组成的惟一的字符串,使用大驼峰命名法。
属性
- 属性描述了类的静态特征。
- 属性名使用小驼峰命名法。
- 属性的定义格式:
[可见性] 属性名 [:类型] [[多重性[次序]]] [=初始值] [{特性}] - 可见性
+表示公共的 public,属性对所有类可见。-表示私有的 private,属性只对类本身可见。#表示受保护的 protected,属性对本身及子类可见。~表示包的 package,属性对同一包下的类可见。
操作(服务、方法)
- 操作名的命名规范习惯采用和属性名相同的命名规则。
- 类的操作的定义格式:[可见性] 操作名 [(参数列表)] [:返回类型] [{特性}]
类的指责:职责指类承担的责任和义务。在矩形框中最后一栏中写明类的职责。

类的约束:约束指定了类所要满足的一个或多个规则。 在UML中,约束是用花括号括起来的自由文本。

类图的组成
- 类
- 接口
- 协作
- 关系
- 注释
- 约束
- 包
类与类之间的关系
关联关系
概念:关联用来表示来表示两个(或多个)类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的引用。
表示
- 单项关联:用一条有向线段表示,箭头指向被拥有者。
- 双向关联:用一条无向线段表示,例如客户和订单的关联:从客户看,订单是他提交的;从订单看,它有一个客户。

关联名:描述关联的作用。
角色:关联两端的类可以某种角色参与关联。
多重性:某个类有多少个对象可以和另一个类的单个对象关联。
导航性
- 用箭头显示导航性。
- 描述源对象通过链接访问目标对象。
- A 类有一个成员变量保存的是 B 类的一个引用,也就是说由 A 类可以找到 B 类,可以画成下图所示
包含关系
聚合
- 类之间的一种整体与部分的关系。
- 体现了一种层次结构,整体类位于部分类的上层,多个部分类处于并列的层次。
组合
是一种特殊形式的聚合(强聚合),聚合中的每个部分只能属于一个整体。
表示类之间整体和部分的关系。
整体与部分具有相同的生存期。

泛化关系
- 泛化关系又名继承关系、派生关系。
- 定义类和包之间的一般元素和特殊元素之间的分类关系。
实现关系
- 表达一种说明元素与实现元素之间的关系。
- 类和接口之间的关系是实现关系,表示类实现接口提供的操作。
依赖关系
依赖表示一个类以某种形式依赖于其他类。当两个类处于依赖关系中时,其中一个类的改变可能会影响另一个类。
依赖关系 vs 关联关系
当一个类的实例与另一个类的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系。
只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候,就可以把这种关系看成是依赖,依赖也可说是一种偶然的关系。

绘制类图步骤
- 分析问题域,确定需求。
- 寻找类,确定类的含义和职责。
- 定义类的属性和操作。
- 确定类之间的关系。
- 绘制类图。
参考文献
例题
需求
超市管理系统子系统的对象模型为顾客选购的商品计价、收费、打印清单。记录每一种商品的编号、单价及现有数量。帮助供货员发现哪些商品将要脱销,以及时补充货源。随时按上级系统的要求报告当前的款货数量、增减商品种类或修改商品定价,交接班时结算货款数目,报告上级系统。
寻找类
- 顾客类
- 商品类
- 订单类(ID、user_id、shop_id)
- 供货员
- 管理员
属性和操作
- 顾客类(User)
- 属性:ID
- 方法:购物
- 商品类
- 属性:编号、单价、库存量
- 方法:null
- 订单类
- 属性:ID、user_id、商品编号
- 方法:商品计价、收费、打印清单
- 供货员
- 属性:ID
- 方法:计算库存量、补充货源
- 管理员
- 属性:ID
- 方法:报告当前的款货数量、增减商品种类、修改商品定价、结算货款数目
确定类之间的关系
- 顾客与商品:单项关联模式(指向商品)
- 顾客与订单:双向
- 商品与订单:双向
- 商品与供货员:单项(指向商品)
- 商品与管理员:单项(商品)
- 订单与管理员:单项(订单)
