UML2 对象类图(类图)与对象图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)
相关文档
最新文档