6e-04class-object-package

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

17
• 关联的约束:对于关联可以加上一些约束,以 规定关联的含义。例如,关联之间可以加异或 约束:
18
关联的角色
• 关联两端的类可以某种角色参与关联。例如下 图中,“公司”以“雇主”的角色,“人”以 “雇员”的角色参与关联。“雇主”和“雇员” 称为角色名。如果在关联上没有标出角色名, 则隐含地用类的名称作为角色名。 • 角色还具有多重性(Multiplicity),表示可以有 多少个对象参与该关联。在下图中,雇主(公 司)可以雇佣多个雇员,表示为“0..n”; 雇员 只能被一家雇主雇佣,表示为“1”。
?聚集和组合的作用1简化了对象的定义2支持软件的重用32?需要注意的是关于聚集和关联之间的区别在各oo方法之间并没有可接受的唯一的定义
《面向对象技术与应用》 课程讲义-4
第四章 Class图, Object图和包
王少锋 Email: wangsf@ 2004年10月31日
7
说明: • 属性的选取应考虑以下因素: –原则上来说,类的属性应能描述并区分每个 特定的对象; –只有系统感兴趣的特征才包含在类的属性中; –系统建模的目的。根据图的详细程度,每条 属性可以包括属性的可见性、属性名称、类 型、多重性、初始值和约束特性。
8
类的操作
• 操作在类图标的操作分隔框中用文字串说明,UML 规定操作的语法为:
说明: 1. package visibility 2. name : String [0..1]表示name有可能取null值。
6
问题:在UML中如何表示枚举数据类型? 答:用版型为<<enumeration>>类。例如: gender:Gender;Gender是版型为 <<enumeration>>的类,且Gender中有属性 male和female。
• 聚集和组合的作用
– (1) 简化了对象的定义 – (2) 支持软件的重用
31
• 需要注意的是,关于聚集和关联之间的区别, 在各OO方法之间并没有可接受的唯一的定义。 一些面向对象方法学大师对聚集的定义并不一 样。例如: – Peter Coad把一个organization和它的clerks 之间的关系作为聚集的一个例子; – James Rumbaugh认为一个company不是其 employee的聚集。
9
说明: • 类的操作(Operation):操作用于修改、检索类 的属性或执行某些动作,操作通常也被称为功 能,但是它们被约束在类的内部,只能作用到 该类的对象上。 • 操作名、参数列表和返回类型组成操作接口。
10
类之间的静态关系
• 类之间的静态关系主要有:
– 关联 – 聚集,组合 – 泛化 – 依赖
说明: • N元关联中的类的多重性的意义是:在其它N-1 个实例值确定的情况下,关联实例元组的个数。 • N元关联没有限定符,聚集,组合等概念。
28
聚集和组合
• 聚集(aggregation)是一种特殊形式的关联。 聚集表示类之间的整体与部分的关系。 • 组合(composition)是一种特殊形式的聚集, 组合关系中的整体与部分具有同样的生存期。 • An aggregation is a form of association that specifies a whole-part relationship between a whole and a constituent part. • A composition is a form of aggregation association with strong ownership and coincident lifetime of parts by the whole.
关联的种类
• 按照关联所连接的类的数量,对象类之 间的关联可分为:自返关联,二元关联, N元关联。 • 自返关联(reflexive association)又称递 归关联(recursive association),是一个 类与本身的关联,即同一个类的两个对 象间的联系。
24
• 例:自返关联的例子
(特性是用户对该属性性质一个约束的说明 。例如 “{只读}”)
5
例:一些属性声明的例子。
+size: Area = (100,100) #visibility: Boolean = false +default-size: Rectangle #maximum-size: Rectangle -xptr: XwindowPtr ~colors : Color [3] points : Point [2..* ordered] name : String [0..1]
11
类的关联
• 关联(association)是模型元素间的一种语义联 系,它是对具有共同的结构特性、行为特性、 关系和语义的链(link)的描述。 • 关联的图标:在类图中,关联用一条把类连接 在一起的实线表示。
12
说明: • 一个关联至少有两个关联端(association end), 每个关联端连接到一个类。 • 关联可以有方向,关联可以是单向关联 (Uni-directional Association)或双向关联 (Bi-directional Association)。
13
• 例:单向关联所生成的Java代码:(可以选择 是否生成类的缺省构造方法)
public class A { public B theB; /** * @roseuid 3DAFBF0F01FC */ public A() { }
public class B {
/** * @roseuid 3DAFBF0F01A2 */ public B() {
19
• 多重性的表示:
– – – – – – – – 0..1 0..n 1 (1..1的简写) 1..n * (即0..*, 0..n) 7 3, 6..9 0 (0..0的简写)(表示没有实例参与关联,一般不用)
20
限定关联
• 在关联端紧靠源类图标处可以有限定符 (Qualifier)。带有限定符的关联称为限定关联 (Qualified Association)。 • 定义:A qualifier is an attribute or list of attributes whose values serve to partition the set of instances associated with an instance across an association.
类名
属性
操作
3
说明: • 类的命名应尽量用应用领域中的术语,应明确、 无歧义,以利于开发人员与用户之间的相互理 解和交流。一般而言,类的名字是名词。 • 类的命名分simple name和path name两种: – path name中包括了包名。 例:Banking::CheckingAccount
} }
14
}
• 可以给关联加上关联名,来描述关联的作用。 例如Person类和Company类之间的关联可以 表示多种意义,如这个人是公司的客户、雇员、 所有者等。下图是使用关联名的一个例子:
• 一般地,关联的名字通常是动词或动词短语。 • 关联命名的原则是该命名是否有助于理解该模 型。
15
• 关联本身也有特性,通过关联类(association class)可以进一步描述关联的属性、操作,以 及其它信息。关联类通过一条虚线与关联连接。 • 例:关联类的例子。
29
• UML中聚集和组合的表示:
composition
aggregation
30
说明: • 在对系统进行分析设计时,“包含”、 “组成”、“分为……部分”等经常设 计成聚集关系。 • 聚集关系的实例是传递的,反对称的;
– 聚集关系的实例存在偏序关系; – 聚集和关联的区别是:聚集关系的实例不能 形成环。
[可见性] 操作名 [(参数列表)] [:返回类型] [{特性}]
(其中{特性}是一个文字串,说明该操作的一些有关 信息,例如“{query}”表示该操作不会修改系统的 状态) 例:一些操作声明的例子。
+display (): Location #create () ~hide () -attachXWindow(xwin: XwindowPtr)
33
类的泛化关系(继承关系)
• A generalization is a taxonomic relationship between a more general element and a more specific element. The more specific element is fully consistent with the more general element and contains additional information. • 泛化(Generalization)定义了一般元素和特殊 元素之间的分类关系。在UML中,泛化表示为 一头为空心三角形的连线。
说明: • 自返关联虽然只有一个被关联的类,但有两 个关联端,每个关联端的角色不同。
25
• 二元关联(binary association) :二元关 联是在两个类之间的关联。 • N元关联(n-ary association)。是在3个 或3个以上类之间的关联。
26
• 例:N元关联的例子:
27
关联类
16
• 所生成Java代码示例:(说明:在设置代码生成属性 时,设置为不生成类的缺省构造方法)
//Source file: F:\\code\\Company.java public class Company { private String companyName; public Person employee[]; } //Source file: F:\\code\\Person.java public class Person { private String personName; protected Company employer; } //Source file: F:\\code\\Contract.java public class Contract { private Double salary; }
主要内容
Class图
数据建模 Object图 包
实例分析-课程注册系统
2
类的定义
• A class is the descriptor for a set of objects with similar structure, behavior, and relationships.
• 在UML中,类可视化表示 为划分成三个格子的长方 形,如图所示:
21
• 例:使用限定符的例子。 (bank, account) 0 or 1 person person many (bank, 。 2. 限定符的作用,给定关联一端的一个对象和限 定符值,可确定另一端的一个对象或对象集。 问题:限定符是否需要指定初始值?
22
• 思考题:限定符在设计中的作用? 1. 引入限定符的一个目的就是把多重性从 n 降为 1或 0..1,这样如果做查询操作,则返回的对 象至多是一个,而不会是一个对象集。 2. 根据多重性判断设计的好坏。 3. 如果一个应用系统需要根据关键字对一个数据 集做查询操作,则往往会用到限定关联。
23
4
类的属性
• 属性在类图标的属性分隔框中用文字串说明,UML 规定属性的语法为: • UML 1.3 Specification中定义的格式:
[可见性] 属性名 [ [多重性] ] [:类型] [= 初始值] [{特性}]
• UML 1.4/1.5 Specification中定义的格式:
[可见性] 属性名 [:类型] [ [多重性 [次序]] ] [= 初始值] [{特性}]
32
• 聚集和组合的关系:
– 聚集也称为“has-a”关系,组合也称为“contains-a” 关系。 – 聚集表示事物的整体/部分关系的较弱的情况。 – 组合表示事物的整体/部分关系的较强的情况。 – 在聚集中,代表部分事物的对象可以属于多个聚集 对象,可以为多个聚集对象共享,而且可以随时改 变它所从属的聚集对象。部分事物的对象与聚集事 物对象的生存期无关,一旦删除了它的一个聚集对 象,不一定也就随即删除代表部分事物的对象。 – 在组合中,代表整体事物的组合对象负责创建和删 除代表部分事物的对象(成分对象)。代表部分事物 的对象只属于一个组合对象,一旦删除了组合对象, 也就随即删除了相应的代表部分事物的对象。
相关文档
最新文档