UML2 对象类图(类图)与对象图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
...
<<call>> SecurityImp
系统其它类
注:实现与继承(泛化)的差别
父亲 遗传
儿子
父亲 子承父业
儿子
6. 对象图
对象图(Object Diagram)表示一组对象和它 们之间的联系。
3.1 类的关系—关联[3]
关联类:关联也可以有自己的属性和操作。 表示方式与类相同,用一条虚线与关联线相连。
效力
队员
球队
契约
谈判
总经理
3.2 类的关系—多重性
多重性表示参与类关联的对象数
5
队员
1
球队
人*
0..1 聘用者
单位
帐户 *
* user
用户
1 owner
* key
密码
工作岗位
聘用期 工资 …
(*表示任意非负整数) 类型:属性值的数据类型。依赖于实现语言。
=初始值:新建对象时该属性的初始值
1.2 属性[2]
属性表示:
学生
+姓名:string 性别[2]:string -年龄:integer=18
…
…
属性名如果Байду номын сангаас英文,一般 头一个单词的首字母小写。
WashingMachine
brandName modelName serialNumber
System
<<call>>
displayForm(f:Form)
Form
3.7 类的聚集和组成[1]
聚集:类之间整体和部分弱关系。称为“has-a”联系。 整体类被删除,部分体类还存在。
表示方式:在关联线的整体端加上一个空心菱形。 组成:类之间整体和部分强关系。称为“contains-a”
联 系。整体类被删除,部分体类不存在。
turnOn():boolean
1.4 构造
如果属性或操作太多, 可以用构造型来组织 属性或操作列表。
WashingMachine
<<id info>> brandName modelName serialNumber
<<machine info>> capacity
<<clothes-related>> addClothes()
4. 语境 [1]
语境图:在一张大图
中将某些局部“放大”
以获得详细信息。 (见P47)
0..* 衣架
可以单独使用另一 1
张图来放大某个类。
衣柜物 1
1 衣挂
0..* 衬衫 1
4. 语境 [2]
衬衫类分解类图
衣袖
1
2 缝合到
1 衣身 1
1
缝合到 1
衣领
1
缝合到 5,6
1 纽扣系统 0,2,3
1 纽扣 1
描述系统中对象类之间的各种静态的联系。
类图是一种静态结构图,它描述的是系统的静态 结构,而不是系统的行为。
类之间的静态联系主要类型有:关联、聚集、组 合、泛化/特化、依赖等
一、对象类图—示例
ATM系统
读卡机
-卡号 接收卡() 弹出卡() 读卡()
ATM屏幕
提示() 接收输入()
帐目
-帐号
-PIN -结余 打开() 取钱() -扣钱() -验钱数()
交通工具
表示格式:用父类到子类 之间的连线表示继承关系,
{overlapping}
在父类的一端带有空心三
角形。这种连接的语义为
is a kind of。
风动 交通
机动 交通
一般性元素
工具
工具
{overlapping}
水上 交通 工具
陆地 交通 工具
特殊性元素
汽车
帆船
交通工具 名称 …
机动交通工具 引擎类型 功率 …
表示方式:在关联线的整体端加上一个实心菱形。
3.7 类的聚集和组成[2]
套餐
1
咖啡桌
1
{xor}
1
1
汤
沙拉
1
主食
1
甜点
1
桌面
4
桌腿
类名的理解
单门课
课程
专业课 实践课 公共课 理论课
专业课程 实践课程 理论课程 公共课程
毕业设计
数学课
毕业设计 专业必修课程 数学课
注意:类是对象的抽象,不是所有对象的整体。如:“人”的类与“人 类”。 注意对类名的理解。英文用单数来表示类名。中文难以区分单、复数。
一、对象类图(类图)与对象图
UML中的对象类图(Class Diagram)与对象 图(Object Diagram)具有强大的表达能力, 能够有效地对现实世界的业务领域和计算机系统 建立可视化的对象模型。
类图与对象图用来表达对象模型的静态结构。
一、对象类图
类图表达一组类和它们之间的联系。
描述各个对象类本身的组成,即类的属性、操作和对 对象的约束条件等。
单门课 专业课 实践课 公共课 理论课
毕业设计
数学课
后卫
前锋
中锋
泛化表示
一般性元素
对象类的泛化联系示例
人
人
特殊性元素
学生
教师 学生
教师
3.6 类的关系—依赖
依赖:一个类使用了另一个类的关系。 表示:一条虚箭线连接有依赖关系的两个类,箭头指向被依赖的类 (称为供应者),依赖类称为客户。
依赖可以加上构造型,常用的构造型有<<use>>、<< call >>、 << instantiate >>、<<friend>>等。
后卫
主要做运 球和传球
球队
前锋
中锋
主要做抢蓝 板球和中距
离投蓝
靠近蓝框 以便蓝下
进攻
蓝框
蓝球场
{pro=24s
进攻时间 college=35s
Int‘l=30s}
三分线
罚球线
3. 类的关系
1. 关联 2. 多重性 3. 限定关联 4. 自身关联 5. 继承和泛化 6. 依赖 7. 聚集和组成
3.1类的关系—关联[1](association)
...
对象类N元关联示例
供应商 *
顾客 *
* 商品
订货 商品编号
商品名 单价 数量 总价 日期
3.3 类的关系—限定关联
限定关联是一个用来解决查找问题的关联。在关联端紧 靠源对象类可以有限定符,包含在小矩形框内,代表被 关联对象类一个或多个属性的列表。
职员 房间许可号 1 找出
* 预订房
订货 ProductID:Int *
名词:可作为领域模型中的类或类中的属性。 动词:可能会构成类中的操作
2. 类的发现[2]
篮球比赛:比赛目标是要把篮球投入蓝框并且尽量比对 手得更多的分。每个篮球队由5名队员组成:2名后卫、 2名前锋和1名中锋。每个队要将球推进蓝框附近(通过 运球和传球),目的将篮球投入蓝框(必须在规定的时 间内投入,美国职业是24秒,国际是30秒,美国大学是 35秒)。 计算得分:三分线内得2分,线外得3分。对方犯规后在 罚球线处罚球投入得1分。
... checkID(id:Int):Bool checkPassword(pass:string):Bool
...
<<call>>
问题:如果改变这个方法的工作方式或把C++安 全类换成Java安全类,则会影响整个系统。
系统其它类
SecurityImp
... checkID(id:Int):Bool checkPassword(pass:string):Bool
+Circle() <<query>> area():float
… <<update>> move(location:Point) scale(ratio:float)
...
(c)实现层
2. 类的发现[1]
同客户交谈,分析他们的领域知识。注意客户描 述业务事件流中的名词术语,也要注意客户提到 的动词。
1 扣住
1 1 纽扣缝
5. 接口和实现[1]
接口:是一组外部可以访问的操作,用于为对象类或组 件提供服务。接口可作为一种特殊的抽象类,不含属性, 它的操作也没有方法,及没有操作的实现。 表示方式:用类的图标加上构造型<<interface>>,或 用一个小圆表示,接口名标在圆旁边。
<<interface>> 接口名
capacity
addClothes() ...
序列号的生成参 考美国政府标准
EV 5-2241
1.8 属主范围
属性:属主范围有两种
实例:如果一个属性的属主范围是实例,则该类的每一个对象都 有一个自己的该属性值。
分类符:如果一个属性的属主范围是分类符,则对于该对象类本
属性只有一个值,该类的每一个对象都持有此唯一的属性值。
取钱机
-结余 提供兑现() 提供收款()
1.2 属性[1]
属性:属性是类的一个特性。一个类可具有零个到多个 属性;属性名必须唯一。 类属性的表示: 可视性 属性名 [多重性]:类型=初始值
可视性:+—公共 #—保护 -—私有 多重性:说明该属性可取多少值。如:3,4,*,0..* ,...等。
陆地交通工具 车辆种类 轮轨类型 …
汽车
名称 … 引擎类型 功率 … 车辆种类 轮轨类型 … 型号 用途 …
来自类“交通工具” 来自类“机动交通工具” 来自类“陆地交通工具” 自身显式定义属性
多继承属性示例
3.5 类的关系—继承和泛化[2]
在分析问题论域时,要找出继承关系,并抽象类。
队员
姓名 ... 运球() 传球() ...
要在属性名下加下划线。
操作:也有属主范围区分,含义与属性相同。对象的构 造操作(构造函数)必须带有下划线,表示它的属主范 围是分类符。
1.9 类的可视化表示
Circle
(a)概念层
Circle
centre radius
area() move() scale()
(b)分析层
Circle
-centre:float -radius:float
capacity
1.3 操作[1]
操作:操作是类能够做的事或是能对类做的事情。一个 类可具有零个到多个操作;操作名必须唯一。
类操作的表示: 可视性 操作名(参数列表):返回列表
参数列表:参数名1:类型=缺省值,参数名2:类型=缺省值,… 返回列表:规定了当该操作完成返回时的返回值的类型。(函数)
addDetergent() removeClothes()
<<machine-related>> turnOn()
1.5 约束
是一个用花括号括起来的自由格式的文本。括号中的文 本指定了该类所要满足的一个的或者多个规则。
WashingMachine
brandName modelName serialNumber
1
订货作业线
3.4 类的关系—自身关联
自身关联又称为递归关联,是一个对象类与本身的关联, 即一个类中的对象之间的联系。
职务
职责 薪水
经理
…
1
工作 * 人员
管理
Drives
轿车上的人员
1
driver 0..4 passenger
3.5 类的关系—继承和泛化[1]
继承和泛化是现实世界中 实体之间一般与特殊的关系。
<<machine-related>> …
Responsibility: Take dirty clothes as input and produce clean clothes as output
1.7 注释
注释给类添加了更多的信息
WashingMachine
brandName modeName serialNumber
关联:类之间在概念上的连接关系。
表示法:关联线段、关联名、关联方向、角色、约束等
效力
队员 雇员
雇主 球队
后卫
队员
效力 雇佣
球队
二元关联
前锋
球队
中锋 N元关联
3.1 类的关系—关联[2]
约束:用来说明关联的规则或含义
出纳
{有序}
顾客
对类的约束
选择
高中生
{or}/{xor} 选择
专业课 商务课
两个关联之间的约束
名词:篮球、蓝框、篮球队、队员、后卫、前锋、中锋、 投球、进攻时间、三分线、罚球、犯规、罚球线、球场、 比赛时钟等
动词:投蓝、推进、运球、传球、犯规、...等
2. 类的发现[3]
蓝球
直径 体积 被运球() 被投蓝() 被传球() 被推进()
队员
姓名 身高 体重 运球() 传球() 投蓝() 拦板球() ...
capacity
{capacity=16 or 18 or 20 lb}
addClothes() ...
1.6 职责
职责用来描述类的属性 和操作能完成的任务。 在图标中,职责在操作 区域下面的区域中说明。
WashingMachine
<<id info>> …
<<machine info>> …
<<clothes-related>> …
操作名
接口名
5. 接口和实现[2]
实现:接口与提供在接口中定义的全部操作方法的对象 类形成一个实现联系,是一种虚泛化联系。 表示方法:用带空心的三角箭头的虚箭线表示(虚泛化 符),箭头指向接口。或用实线与小圆表示的接口相连。
实现类
<<interface>> 接口名
实现类
接口名
安全检查例子
SecurityImp
格式 返回名字1:类型,返回名字2:类型,…
操作的全部信息称为操作的型构。通常在设计阶段指明操作型构。 型构对程序设计人员非常有用。(注意操作和方法的区别)
1.3 操作[2]
操作表示:
WashingMaching
brandName …
addClothes() +addDetergent(D:integer) removeClothes(C:string)
<<call>> SecurityImp
系统其它类
注:实现与继承(泛化)的差别
父亲 遗传
儿子
父亲 子承父业
儿子
6. 对象图
对象图(Object Diagram)表示一组对象和它 们之间的联系。
3.1 类的关系—关联[3]
关联类:关联也可以有自己的属性和操作。 表示方式与类相同,用一条虚线与关联线相连。
效力
队员
球队
契约
谈判
总经理
3.2 类的关系—多重性
多重性表示参与类关联的对象数
5
队员
1
球队
人*
0..1 聘用者
单位
帐户 *
* user
用户
1 owner
* key
密码
工作岗位
聘用期 工资 …
(*表示任意非负整数) 类型:属性值的数据类型。依赖于实现语言。
=初始值:新建对象时该属性的初始值
1.2 属性[2]
属性表示:
学生
+姓名:string 性别[2]:string -年龄:integer=18
…
…
属性名如果Байду номын сангаас英文,一般 头一个单词的首字母小写。
WashingMachine
brandName modelName serialNumber
System
<<call>>
displayForm(f:Form)
Form
3.7 类的聚集和组成[1]
聚集:类之间整体和部分弱关系。称为“has-a”联系。 整体类被删除,部分体类还存在。
表示方式:在关联线的整体端加上一个空心菱形。 组成:类之间整体和部分强关系。称为“contains-a”
联 系。整体类被删除,部分体类不存在。
turnOn():boolean
1.4 构造
如果属性或操作太多, 可以用构造型来组织 属性或操作列表。
WashingMachine
<<id info>> brandName modelName serialNumber
<<machine info>> capacity
<<clothes-related>> addClothes()
4. 语境 [1]
语境图:在一张大图
中将某些局部“放大”
以获得详细信息。 (见P47)
0..* 衣架
可以单独使用另一 1
张图来放大某个类。
衣柜物 1
1 衣挂
0..* 衬衫 1
4. 语境 [2]
衬衫类分解类图
衣袖
1
2 缝合到
1 衣身 1
1
缝合到 1
衣领
1
缝合到 5,6
1 纽扣系统 0,2,3
1 纽扣 1
描述系统中对象类之间的各种静态的联系。
类图是一种静态结构图,它描述的是系统的静态 结构,而不是系统的行为。
类之间的静态联系主要类型有:关联、聚集、组 合、泛化/特化、依赖等
一、对象类图—示例
ATM系统
读卡机
-卡号 接收卡() 弹出卡() 读卡()
ATM屏幕
提示() 接收输入()
帐目
-帐号
-PIN -结余 打开() 取钱() -扣钱() -验钱数()
交通工具
表示格式:用父类到子类 之间的连线表示继承关系,
{overlapping}
在父类的一端带有空心三
角形。这种连接的语义为
is a kind of。
风动 交通
机动 交通
一般性元素
工具
工具
{overlapping}
水上 交通 工具
陆地 交通 工具
特殊性元素
汽车
帆船
交通工具 名称 …
机动交通工具 引擎类型 功率 …
表示方式:在关联线的整体端加上一个实心菱形。
3.7 类的聚集和组成[2]
套餐
1
咖啡桌
1
{xor}
1
1
汤
沙拉
1
主食
1
甜点
1
桌面
4
桌腿
类名的理解
单门课
课程
专业课 实践课 公共课 理论课
专业课程 实践课程 理论课程 公共课程
毕业设计
数学课
毕业设计 专业必修课程 数学课
注意:类是对象的抽象,不是所有对象的整体。如:“人”的类与“人 类”。 注意对类名的理解。英文用单数来表示类名。中文难以区分单、复数。
一、对象类图(类图)与对象图
UML中的对象类图(Class Diagram)与对象 图(Object Diagram)具有强大的表达能力, 能够有效地对现实世界的业务领域和计算机系统 建立可视化的对象模型。
类图与对象图用来表达对象模型的静态结构。
一、对象类图
类图表达一组类和它们之间的联系。
描述各个对象类本身的组成,即类的属性、操作和对 对象的约束条件等。
单门课 专业课 实践课 公共课 理论课
毕业设计
数学课
后卫
前锋
中锋
泛化表示
一般性元素
对象类的泛化联系示例
人
人
特殊性元素
学生
教师 学生
教师
3.6 类的关系—依赖
依赖:一个类使用了另一个类的关系。 表示:一条虚箭线连接有依赖关系的两个类,箭头指向被依赖的类 (称为供应者),依赖类称为客户。
依赖可以加上构造型,常用的构造型有<<use>>、<< call >>、 << instantiate >>、<<friend>>等。
后卫
主要做运 球和传球
球队
前锋
中锋
主要做抢蓝 板球和中距
离投蓝
靠近蓝框 以便蓝下
进攻
蓝框
蓝球场
{pro=24s
进攻时间 college=35s
Int‘l=30s}
三分线
罚球线
3. 类的关系
1. 关联 2. 多重性 3. 限定关联 4. 自身关联 5. 继承和泛化 6. 依赖 7. 聚集和组成
3.1类的关系—关联[1](association)
...
对象类N元关联示例
供应商 *
顾客 *
* 商品
订货 商品编号
商品名 单价 数量 总价 日期
3.3 类的关系—限定关联
限定关联是一个用来解决查找问题的关联。在关联端紧 靠源对象类可以有限定符,包含在小矩形框内,代表被 关联对象类一个或多个属性的列表。
职员 房间许可号 1 找出
* 预订房
订货 ProductID:Int *
名词:可作为领域模型中的类或类中的属性。 动词:可能会构成类中的操作
2. 类的发现[2]
篮球比赛:比赛目标是要把篮球投入蓝框并且尽量比对 手得更多的分。每个篮球队由5名队员组成:2名后卫、 2名前锋和1名中锋。每个队要将球推进蓝框附近(通过 运球和传球),目的将篮球投入蓝框(必须在规定的时 间内投入,美国职业是24秒,国际是30秒,美国大学是 35秒)。 计算得分:三分线内得2分,线外得3分。对方犯规后在 罚球线处罚球投入得1分。
... checkID(id:Int):Bool checkPassword(pass:string):Bool
...
<<call>>
问题:如果改变这个方法的工作方式或把C++安 全类换成Java安全类,则会影响整个系统。
系统其它类
SecurityImp
... checkID(id:Int):Bool checkPassword(pass:string):Bool
+Circle() <<query>> area():float
… <<update>> move(location:Point) scale(ratio:float)
...
(c)实现层
2. 类的发现[1]
同客户交谈,分析他们的领域知识。注意客户描 述业务事件流中的名词术语,也要注意客户提到 的动词。
1 扣住
1 1 纽扣缝
5. 接口和实现[1]
接口:是一组外部可以访问的操作,用于为对象类或组 件提供服务。接口可作为一种特殊的抽象类,不含属性, 它的操作也没有方法,及没有操作的实现。 表示方式:用类的图标加上构造型<<interface>>,或 用一个小圆表示,接口名标在圆旁边。
<<interface>> 接口名
capacity
addClothes() ...
序列号的生成参 考美国政府标准
EV 5-2241
1.8 属主范围
属性:属主范围有两种
实例:如果一个属性的属主范围是实例,则该类的每一个对象都 有一个自己的该属性值。
分类符:如果一个属性的属主范围是分类符,则对于该对象类本
属性只有一个值,该类的每一个对象都持有此唯一的属性值。
取钱机
-结余 提供兑现() 提供收款()
1.2 属性[1]
属性:属性是类的一个特性。一个类可具有零个到多个 属性;属性名必须唯一。 类属性的表示: 可视性 属性名 [多重性]:类型=初始值
可视性:+—公共 #—保护 -—私有 多重性:说明该属性可取多少值。如:3,4,*,0..* ,...等。
陆地交通工具 车辆种类 轮轨类型 …
汽车
名称 … 引擎类型 功率 … 车辆种类 轮轨类型 … 型号 用途 …
来自类“交通工具” 来自类“机动交通工具” 来自类“陆地交通工具” 自身显式定义属性
多继承属性示例
3.5 类的关系—继承和泛化[2]
在分析问题论域时,要找出继承关系,并抽象类。
队员
姓名 ... 运球() 传球() ...
要在属性名下加下划线。
操作:也有属主范围区分,含义与属性相同。对象的构 造操作(构造函数)必须带有下划线,表示它的属主范 围是分类符。
1.9 类的可视化表示
Circle
(a)概念层
Circle
centre radius
area() move() scale()
(b)分析层
Circle
-centre:float -radius:float
capacity
1.3 操作[1]
操作:操作是类能够做的事或是能对类做的事情。一个 类可具有零个到多个操作;操作名必须唯一。
类操作的表示: 可视性 操作名(参数列表):返回列表
参数列表:参数名1:类型=缺省值,参数名2:类型=缺省值,… 返回列表:规定了当该操作完成返回时的返回值的类型。(函数)
addDetergent() removeClothes()
<<machine-related>> turnOn()
1.5 约束
是一个用花括号括起来的自由格式的文本。括号中的文 本指定了该类所要满足的一个的或者多个规则。
WashingMachine
brandName modelName serialNumber
1
订货作业线
3.4 类的关系—自身关联
自身关联又称为递归关联,是一个对象类与本身的关联, 即一个类中的对象之间的联系。
职务
职责 薪水
经理
…
1
工作 * 人员
管理
Drives
轿车上的人员
1
driver 0..4 passenger
3.5 类的关系—继承和泛化[1]
继承和泛化是现实世界中 实体之间一般与特殊的关系。
<<machine-related>> …
Responsibility: Take dirty clothes as input and produce clean clothes as output
1.7 注释
注释给类添加了更多的信息
WashingMachine
brandName modeName serialNumber
关联:类之间在概念上的连接关系。
表示法:关联线段、关联名、关联方向、角色、约束等
效力
队员 雇员
雇主 球队
后卫
队员
效力 雇佣
球队
二元关联
前锋
球队
中锋 N元关联
3.1 类的关系—关联[2]
约束:用来说明关联的规则或含义
出纳
{有序}
顾客
对类的约束
选择
高中生
{or}/{xor} 选择
专业课 商务课
两个关联之间的约束
名词:篮球、蓝框、篮球队、队员、后卫、前锋、中锋、 投球、进攻时间、三分线、罚球、犯规、罚球线、球场、 比赛时钟等
动词:投蓝、推进、运球、传球、犯规、...等
2. 类的发现[3]
蓝球
直径 体积 被运球() 被投蓝() 被传球() 被推进()
队员
姓名 身高 体重 运球() 传球() 投蓝() 拦板球() ...
capacity
{capacity=16 or 18 or 20 lb}
addClothes() ...
1.6 职责
职责用来描述类的属性 和操作能完成的任务。 在图标中,职责在操作 区域下面的区域中说明。
WashingMachine
<<id info>> …
<<machine info>> …
<<clothes-related>> …
操作名
接口名
5. 接口和实现[2]
实现:接口与提供在接口中定义的全部操作方法的对象 类形成一个实现联系,是一种虚泛化联系。 表示方法:用带空心的三角箭头的虚箭线表示(虚泛化 符),箭头指向接口。或用实线与小圆表示的接口相连。
实现类
<<interface>> 接口名
实现类
接口名
安全检查例子
SecurityImp
格式 返回名字1:类型,返回名字2:类型,…
操作的全部信息称为操作的型构。通常在设计阶段指明操作型构。 型构对程序设计人员非常有用。(注意操作和方法的区别)
1.3 操作[2]
操作表示:
WashingMaching
brandName …
addClothes() +addDetergent(D:integer) removeClothes(C:string)