第5章类图和对象图

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(1) 名称
使用一个动词或动词短语来命名关联。 清晰而简洁地说明对象间关系。 关联名称并不是必需的,原则是有利于理解模型 可以黑色三角形指引阅读方向,以消除歧义。
(2) 角色
当需要强调一个类在一个关联中的确切含义时,使 用关联角色。 角色的名称应该是名词或名词短语,以解释对象是 如何参与关系的。 角色名称是可以生成代码的,名称必须惟一。
Directory * Link name : String * File
多重性是指File和( Directory ,name)间的关联
限定符是关联的属性,而不是类的属性
(7)关联的种类
自反关联 二元关联 N元关联
自反关联
又称递归关联,同一个类 的两个对象间的关系。 自反关联虽然只有一个类, 但有两个关联端,每个关 联端的角色不同。 public class EnginePart{ public EnginePart b[]; public EnginePart a; public EnginePart() { } }
Processor
4 泛化关系
存在于一般元素和特殊元素间的分类关系。 可以用于类、用例以及其他模型元素。 描述了一种“is a kind of” 的关系。
4 泛化关系
描述银行账户的类图
使用泛化关系 的银行账户类
4 泛化关系
泛化主要用途: I. 多态 II. 继承 ① 单继承 ② 多重继承
* child Person parent 2
public Company{ public Person employee[]; }
(3) 多重性
类的多少对象可以参与该关联。 可以表达一个取值范围、特定值、无限定的范围 或一组离散值。 格式:“minimum..maximum” (均为Int型)。 0..1 0..* 0..n 1 1..* 1..n * 3,6..9 使用{ordered}表示元素是有序的 赋给一个端点的多重性表示该端点可以有多少个 对象与另一个端点的一个对象关联。
类间关系的总结
聚合和组合关系表达整体和部分关系 泛化关系表达一般和特殊关系 依赖、关联表示语义关系 在描述语义上相互有联系的类之间的关系 时,首先考虑泛化关系和关联关系,当类 之间的关系不宜于这两种关系,考虑依赖 关系。
(5)关联的约束
关联可以加上一些约束,以加强关联的含义。 在关联上使用{ } 表示约束。 当多个关联之间存在约束条件时,需要使用UML 注释来表示。
(6)限定关联
带有限定符的关联称为限定关联 限定符很像是索引文件的关键字,使用它可以直接找到所 需要的对象。一般来说,查询结果会是所有对象的一个子 集,而不是整个列表。可把一对多转换为一对一。
Event
Agents
1 名称
名称的大小写规则最好与编程语言的规则 相对应,例如,以下为不太好的命名:
Cancelled_Show,Event_with_no_Shows,
Exempt_Employee,Non_exempt_Employee 将类的属性嵌入到类的名称中了。改为Event, Show,Employee
3 操作
用于修改、检索类的属性或执行某些动作。 一个类可以有任意数量的操作或者根本没有操作 返回类型、名称和参数一起被称为特征标记。 在同一个类中,操作的名称不必是惟一的,但特 征标记必须是惟一的。 在UML中,类操作的语法为:
[可见性] 操作名 [(参数列表)] [:返回类型] [{特性}]
* child Person parent 2
二元关联
University 1 * Student id : Integer name : String
N元关联
N元关联是在3个或3个以上类之间的关联 N元关联的多重性是指在其他N-1个实例确定的情 况下,关联实例的个数。
Year
n
Team
端点 名称 端点
public A{ public B theB; } public B{ }
1 关联关系
(1) 名称(Name) (2) 角色(Role) (3) 多重性(Multiplicity) (4) 关联类(Association Class) (5)关联的约束 (6)限定关联 (7)关联的种类 (8) 导航性
(2) 属性名
一个以区别于类中的其他属性的名字。 由描述所属类特性的名词或名词短语组成 单字属性名小写,多字属性名除了第一个 单词外其余单词的首字母要大写。 如果不同的类拥有相同的属性名,而开发 人员又要在同一上下文中引用他们,必须 使用完整的路径表示属性。
Event.status,Venue.status。
(2) 操作名
用来描述所属类的行为的动词或动词短语。 单字操作名小写,多字单词除了第一个单 词外其余单词的首字母要大写。 例如: - getName()
(3) 参数表
一些按顺序排列的属性定义了操作的输入。 是可选的。 定义方式:“名称:类型”。 多个参数用逗号隔开。 参数可以具有默认值。 例如: +getArea(radius:integer)
分为简单名称和路径名称。
2 属性
用来描述该类的对象所具有的静态特征。 一个类可以拥有三种类型的信息:
① 对象必须了解自己,即他有自己的结构和当前的状态 ② 对象必须了解他的直接关系
③ 对象有时还要监视特定的信息
类可以有任意数目的属性,也可以没有属性。 在UML中,类属性的语法为: [可见性] 属性名 [:类型] [多重性] [=初始值] [{特性}]
{ordered}
(4) 关联类
进一步描述关联的属性、操作以及其他信息。
Student
* 选课
*
Subject
mark : Integer
public class Company{ private String companyName; public Person employee[];} public class Person{ private String personName; protected Company employer;} public class Contract{ private Double salary; }
第5章 类图和对象图
5.1 类的定义 5.2 类之间的关系 5.3 派生属性和派生关联 5.4 抽象类、接口和模板类 5.5 边界类、控制类和实体类 5.6 类图 5.7 领域分析 5.8 OO设计原则 5.9 对象图 5.10 类图和对象图的区别 5.11 在Rose中操作对象图和类图 5.12 实例——图书馆管理系统的类图
5.1 类的定义
对一组具有相同属性、操作、关系和语义的对象 的抽象。 名称部分(Name)、属性部分(Attribute)和操 作部分(Operation)。
5.1 类的定义
1 2 3 4 5 6 7 名称 属性 操作 职责 约束 注释 用户定义分栏
1 名称
在类图显示时,名称分栏是惟一必须可见的分栏 应该来自系统的问题域。名称应该精确并且简短, 能够描述类所代表的对象的类型。 应该是一个名词,且不应该有前缀或后缀。例外 情况是代表对象集合的类。
2 属性
(1) 可见性 (2) 属性名 (3) 类型 (4)初始值 (5) 特性 (6)Fra Baidu bibliotek类作用域的属性
(1) 可见性
命名空间:是UML中可以被命名的元素,它可 以包含另外的命名元素。 命名空间可以规定其包含的元素的可见性 类型: ① 公有(Public) “+” ② 私有(Private)“-” ③ 受保护(Protected)“#” ④ 包(Package)”~” 例如: +x
5 依赖关系
依赖关系代表一种客户/提供者的关系,如果提供 者发生变化,那么客户也要做出相应改变。 客户以某种形式依赖于提供者。一个是独立的, 一个是不独立的。 关联、实现和泛化在语义上都是依赖关系。 图形表示
6 实现关系
规格说明和其实现之间的关系。类和接口之间的关系是 实现关系,表示类实现接口提供的操作显示一个类引用 另一个类。 客户必须至少支持提供者的所有操作。 泛化和实现都可以将一般描述与具体描述联系起来: ① 泛化将同一语义层上的元素连接起来,并且通常在同一 模型内。 ② 实现将不同语义层内的元素连接起来,并且通常建立在 不同的模型内。
1 Header
* Attachment
3 组合关系
聚合关系中的一种特 殊情况,是更强形式 的聚合,又称强聚合 整体拥有各个组成部 分,部分与整体共存, 整体不存在,则部分 随之消失。 整体不仅控制着部分 对象的行为,而且控 制着部分对象的创建 和解构
Computer 1 1 * ConnectedTo * Port
n
n
Player
Record
N元关联没有限定符、聚集、组合等 Rose中不能直接表示N元关联
2 聚集关系
一种特殊类型的关联。 表示整体与部分关系的关联。 需求分析中的“包含”、“组 成”、“分为……部分” 作为整体方的类的重数不是1, 则作为聚集
1 MailMessage 1 Body *
(3) 类型
① ② ③ ④ ⑤ 简单类型: 整型Integer 布尔型Boolean 实型Double 字符串String 枚举类型 系统中的其他类
+ x:Integer
<<enumeration>> Colour red green blue
(4) 初始值
也称为默认值。 目的: ① 保护系统的完整性,防止漏掉取值或被非 法的值破坏系统的完整性。 ② 为用户提供易用性。 初始值表达式可以是一个单独的数值,也 可以是用某种语言编写的字符串。 例如: + x:Integer =100
(4) 返回类型
是可选的。 绝大部分编程语言只支持一个返回值。 具体的编程语言一般要加一个关键字void 来表示无返回值。 +getArea(radius:Integer) : Double
(5)类作用域的操作
作用域在类之内而不是对象之内的操作, 也称为静态操作。
操作声明的例子
(5)类作用域的属性
大部分属性的拥有者是特定的对象(类实 例),这些属性称为实例作用域的属性 属性的值被定义和保存在类里,该类的任 何对象都可以访问这个值,则称为类作用 域的属性,又称为静态属性 表示:
属性声明的例子
+size:Area =(100,100) #visibility:Boolean = false +default-size:Rectangle #maximum-size:Rectangle -xptr:XWindowPtr=no default,required Colors:Color[3] points:Point[2..* ordered] name:String[0..1]
在操作分栏的内部,根据操作的用途,可以使用 版型将操作分成许多小组。
3 操作
(1) 可见性 (2) 操作名 (3) 参数表 (4) 返回类型 (5) 特性 (6) 类作用域的操作
(1) 可见性
类型: ① 公有(Public) “+” ② 私有(Private) “-” ③ 受保护(Protected) “#” ④ 包内公有(Package) “~” 例如: - getName()
+display():Location +hide() #create() -attachXWindow(xwin:XWindowPtr)
5.2 类之间的关系
1 2 3 4 5 6 关联关系 聚集关系 组合关系 泛化关系 依赖关系 实现关系
1 关联关系
是模型元素间的一种语义联系,他是对具有共同 的结构特性、行为特性、关系和语义的链的描述 链是关联的实例。 一个完整的关联包含三部分:类之间的关联直线 和两个关联端点。端点是一个元类,有自己的属 性(多重性、约束、角色)。
相关文档
最新文档