第5章类图和对象图解析
UML面向对象分析、建模与设计课件第五章 类图
![UML面向对象分析、建模与设计课件第五章 类图](https://img.taocdn.com/s3/m/2f5564f00066f5335b812169.png)
类——操作
操作是一个可以由类的对象请求以影响其行为的服务的实现,也即 是对一个对象所做的事情的抽象,并且由这个类的所有对象共享。
操作是类的行为特征或动态特征。 操作的语法格式为:
可见性OPT 操作名 ⌊(参数列表)⌋OPT ⌊:返回类型⌋OPT ⌊{特性}⌋OPT
操作名:操作的标识符。在描述操作时,操作名是必须的,其他部 分可选。
Student
+monitor 1
1..*
自关联
类图中的关系——关联关系
关联名称:放在关联路径的旁边,但远离关联端。 角色:放在靠近关联端的部分,表示该关联端连接的类在这一关联
关系中担任的角色。角色名上也可使用可见性修饰符号。 多重性:放在靠近关联端的部分,表示在关联关系中源端的一个对
象可以与目标类的多少个对象之间有关联。 导航性:一个布尔值,用来说明运行时刻是否可能穿越一个关联。 限定符:是二元关联上的属性组成的列表的插槽,其中的属性值用
/WorksForCompany
Department * +department 1 WorksForDepartment
* Person
类图中的关系——泛化关系
泛化关系定义为一个较普通的元素与一个较特殊的元素之间的类元 关系。其中描述一般的元素称为父,描述特殊的元素称为子。
通过泛化对应的继承机制使子类共享父类的属性和操作,小了模型 的规模,同时也防止了模型的更新所导致的定义不一致的意外。
法了,此时称之为N元关联。
类图中的关系——关联关系
class Logical View
ClassA
AssociationName
+rolename 0..*
UML与系统分析设计 第05章 对象类图与对象图
![UML与系统分析设计 第05章 对象类图与对象图](https://img.taocdn.com/s3/m/0e8e974a336c1eb91b375d00.png)
图5.10 自返关联示例
Home
5.2.2 自返关联、二元关联和 N元关联
图5.15 泛化的表示
图5.16 对象类的泛化联系示例
Home
5.4.2
继承
泛化联系体现了分类与继承原则。一个子类继承超类 的全部属性和方法,一个子类本身又可以有自己的子 类,从而构成复杂的一般/特殊的结构。 单继承:一个子类可以只从它的一个父类继承属性和 方法。如果在一般/特殊的结构中只有单继承,则为层 次结构。 多继承:一个子类也可以从它的多个父类继承属性和 方法。如果在一般/特殊的结构中包含有多继承,则为 网格结构(lattice structure)。 继承有传递性。一个子类不但可以从它的直接父类继 承属性和方法,也可以通过其父类继承祖先类的属性 和方法。
Home
类名 属性
操作 …
学生 姓名 年龄
性别
注册 选课
图5.2 对象类的图形表示
5.1.2 属性
类的属性(Attribute)是类的命名的性质,属性在类图标 的属性分隔框中用文字串说明,如图5.3所示。 属性有在本对象类中唯一的属性名或标识符。 冒号“:‖后跟属性值的数据类型。 属性名后跟的方括号中的内容是可选项目。 多重性(Multiplicity)用多值表达式表示,其值是该对象 类的每个实例的属性值的个数。 多值表达式的格式为: integer,integer,… 属性 或 可视性 属性名 [多重性]:类型 = 初始值 低界..高界
Home
软件体系结构课件第5章统一建模语言
![软件体系结构课件第5章统一建模语言](https://img.taocdn.com/s3/m/c63aba809fc3d5bbfd0a79563c1ec5da50e2d6d4.png)
2:GetPrefSet()
10:PrefSet(date_mg)
1:GetPrefSet()
:MeetingInitiator
第5章 统一建模语言 直接使用UML建模 – 会议安排系统的类图
Person
StronglyConflicts With
Conflicts With
Important Attendee
0..* 0..*
0..* Profers
Attendee
1..* 1..* 0..* 0..*
11 1 1
1
Meeting Initiator
Find.exe
Query .dll
部署图 定义系 统中软 硬件的 物理体
系结构
第5章 统一建模语言 部署图
客户端:个人PC QueryClient.exe
服务器
《TCP/IP》 查询
QueryServer.exe 部署图
定义系
统中软
Find.exe
硬件的
物理体
Query.dll系结构
第5章 统一建模语言
第5章 统一建模语言
直接使用UML建模 – UML中的通用表示
➢ 字符串:表示有关模型的信息; ➢ 名字:表示模型元素; ➢ 标号:不同于编程语言中的标号,是用于表示或说明图形符号的字
符串; ➢ 特殊字符串:表示某一模型元素的特性; ➢ 类型表达式:声明属性、变量及参数,含义同编程语言中的类型表
0
10
20
30s 时间刻度
第5章 统一建模语言 状态图
提交订单 已审核 印前处理
客户付钱
已付款
已处理
进行冲印
冲印中 冲印完成
描述满足 用例要求 所要进行 的活动以 及活动间 的完约成束关 系,有利 于识别并 行活动
第五章 类图和对象图(UML)
![第五章 类图和对象图(UML)](https://img.taocdn.com/s3/m/621aa50da6c30c2259019e16.png)
+
size
:integer
=(100)
9
第 五 章 类 图 和 对 象 图
5.1 类的定义
说明:
3、属性还有取值范围。类型表示该属性的种类。 它可以是基本数据类型,例如整数、实数、布尔 型和枚举型等,也可以是用户自定义的类型。一 般它由所涉及的程序设计语言确定必须为其指定 数据类型。当一个类的属性被完整定义后,它的 任何一个对象的状态都由这些属性的特性值所决 定。
20
第 五 章 类 图 和 对 象 图
5.2 类之间的关系
1、关联
关联是一种结构关系,它指明一个事物的对象与 另一个事物的对象间的联系 例如,一个人为一家公司工作,一家公司有许多办 公室。我们就认为人和公司、公司和办公室之间 存在某种语义上的联系。在分析设计的类图模型 中,则在对应人类和公司类、公司类和办公室类 之间建立关联关系
改变的因素:1.一个类向另一个类发送消息。 2.一个类是另一个类的数据成员类型 3.一个类是另一个类的操作的参数类型 注:如果两个类之间有关联,那么这两个类就有依赖关 系,但是我们一般不标出依赖关系。
37
第 五 章 类 图 和 对 象 图
5.2 类之间的关系
3、泛化(generalization)关系
泛化关系:定义了一般元素和特殊元素之间的分类关系。 也就是一种继承关系。继承是在现有类的基础上定义和 实现一个新类的技术,刻画了类的一般性和特殊性。被 继承的类称为父类或超类,继承的类称为子类。 表示形式:用空心三角箭头实心线表示
25
第 五 章 类 图 和 对 象 图
5.2 类之间的关系
1、关联
角色:当一个类处于关联的某一端时,该类就在 这个关系中扮演着一个特定的角色。角色就是关 联关系中一个类对另一个类所表现的职责
静态视图—类图对象图和包图
![静态视图—类图对象图和包图](https://img.taocdn.com/s3/m/8853914ff5335a8102d220a0.png)
1.1 类图概述——重要性
类图表述系统中类的静态结构,不仅描述 了系统中的类,还表示了类之间的各种关 系,比如:关联、依赖、泛化、实现等
James Rumbaugh对类的定义:类 (Classs)是具有相似结构、行为和关系 的一组对象的描述符 类 + 类的关系 = 类图
1.2 类图概述——类图的作用
salary:Dollars
Student
major:String
3.5 关联关系(Association)
关联是一种结构关系,它指明一个类与 另一个类在类间的联系,表示类之间的 连接,它使一个类的可见属性和方法被 另一个类使用
关联关系包括:双向关联,单向关联, 聚合和反射关联
除聚合关系外,关联关系通常使用实线 +箭头的方式表示
3.2 依赖关系(Dependency)
如果有两个类A与B,当我们修改A类时 会引起B类的修改,我们称类B依赖于类 A。
依赖关系可能由各种原因引起,比如一 个类向另一个类发送消息;一个类是另 一个类的数据成员,一个类是另一个类 的某个操作参数等(use a关系)
UML中包含了4种依赖关系:使用(Usage) 依赖,抽象(Abstraction)依赖,授权 (Permission)依赖和绑定(Binding)依赖
3.3.1 泛化关系的表示
在UML语言中,采用空心箭头+实线 (如果父类是接口,则采用虚线)的 方式表示泛化关系,箭头指向父类
类的继承
接口的继承
3.3.1 泛化关系的表示举例
BankAccount
owner:String balance:Dollars deposit(amount:Dollars) withdrawl(amout:Dollars)
UML图:类图和对象图详解
![UML图:类图和对象图详解](https://img.taocdn.com/s3/m/bfc1f070482fb4daa58d4beb.png)
目录1.类图和对象图的概念2.类图的组成3.使用Rose创建类图4.对象图5.使用Rose创建类图案例分析类图和对象图详解对于类图和对象图来说我们需要了解的是类图和对象图的概念,类图的组成,使用Rose创建类图和对象图。
当然最重要的是如何使用Rose创建类图案例分析。
具体的创建通过选课管理系统的简单用例说明创建类图和对象图的方法和具体的过程。
下面是我对类图和对象图学习过程的一个整理,一些资料是直接拿过来直接用的。
希望能对你的学习有一点点的帮助吧。
类图和对象图的概念1. 类的含义类图(Class diagram)显示了系统的静态结构,而系统的静态结构构成了系统的概念基础。
类图,就是用于对系统中的各种概念进行建模,并描绘出它们之间关系的图。
在大多数的 UML 模型中,我们可以将这些概念的类型概括为以下四种,分别是:(1) 类(2) 接口(3) 数据类型(4) 构件在类图中,具体来讲它一共包含了以下几种模型元素,分别是:类、接口、依赖关系、泛化关系、关联关系以及实现关系。
类图可以创建约束、注释和包等。
2. 对象图的含义对象图中包含对象(Object)和链(Link)。
其中对象是类的特定实例,链是类之间关系的实例,表示对象之间的特定关系。
3. 类图在项目开发中的作用类图的作用是对系统的静态视图进行建模。
当对系统的静态视图进行建模时,通常是以以下三种方式来使用类图。
(1)为系统的词汇建模。
(2)模型化简单的协作。
(3)模型化逻辑数据库模式。
在设计数据库时,通常将数据库模式看作为数据库概念设计的蓝图,在很多领域中,都需要在关系数据库或面向数据库中存储永久信息。
系统分析者可以使用类图来对这些数据库进行模式建模。
4. 对象图在项目开发中的作用对象图作为系统在某一时刻的快照,是类图中的各个类在某一个时间点上的实例及其关系的静态写照,可以通过以下几个方面来说明它的作用:(1)说明复杂的数据结构。
对于复杂的数据结构,有时候很难对其进行抽象成类表达之间的交互关系。
05-类图-对象图-包图
![05-类图-对象图-包图](https://img.taocdn.com/s3/m/593d25c1d5bbfd0a795673fb.png)
类的泛化
泛化(Generalization)定义了一般元素和特殊元素 之间的分类关系。在UML中,泛化表示为一头为 空心三角形的连线。 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.
聚集和组合(cont)
UML中聚集和组合的表示:
Car
Company
Wheel
Department
类图的抽象层次
在软件开发的不同阶段使用的类图具有不同的抽 象层次。一般地,类图可分为三个层次,即概念 层,说明层和实现层。 类的概念层,说明层和实现层的划分最先是由 Steve Cook和John Daniels引入的。
边界类
边界类处理系统环境与系统内部之间的通 信,为用户或另一个系统提供了接口。 边界类组成了系统中依赖于环境的部分, 边界类用于为系统的接口建模,代表了系 统和系统外的一些实体之间的接口。
边界类
实体类
实体类是模拟必须被存储的信息和关联行为的 类。 实体对象是实体类的实例,被用来保存或更新 关于某个现象的信息,通常是持久性的。 实体类通常是独立于他们的环境,对于系统环 境如何与系统通信是不敏感的。
实体类
控制类
控制类是用来为特定于一个或几个用例的控 制行为建模的类。 控制对象是控制类的实例,它经常控制其他 的对象,所以控制对象的行为是协调类型的, 控制类协调实现用例的规定行为所需要的事 件。 控制类封装了特定于用例的行为,通常依赖 于应用程序的类。
类图和对象图
![类图和对象图](https://img.taocdn.com/s3/m/611ea17c31b765ce05081411.png)
5
5.2.1 关联
关联(association)是模型元素间的一种语义联系 它 是模型元素间的一种语义联系, 关联 是模型元素间的一种语义联系 // 类A的源码 的源码 是对具有共同的结构特性、行为特性、关系和语义的 是对具有共同的结构特性、行为特性、class A public { 的描述. 链(Link)的描述 的描述
21
5.5 构造型
构造型(stereotype)是UML的3种扩展机制之一 是 种扩展机制之一. 构造型 的 种扩展机制之一 构造型是建模人员在已有的构造块上派生出新的构造 这些新的构造块与特定问题相关. 块,这些新的构造块与特定问题相关 这些新的构造块与特定问题相关 构造型可以应用于所有类型的模型元素. 构造型可以应用于所有类型的模型元素
31
5.8 领域分析
建立类图的过程就是对领域及其解决方案的分析与 设计过程. 设计过程 领域分析包括: 领域分析包括
通过对某一领域中的已有应用系统、理论、技术、 通过对某一领域中的已有应用系统、理论、技术、开发历 史等的研究, 来标识、收集、组织、 史等的研究 来标识、收集、组织、分析和表示领域模型及 软件体系结构的过程; 软件体系结构的过程 根据这一过程得到的结果. 根据这一过程得到的结果
23
5.6.1 边界类
边界类位于系统与外界的交界处,包括 边界类位于系统与外界的交界处 包括: 包括
用户界面类, 窗口、对话框、 用户界面类, 如: 窗口、对话框、报表类等 通讯协议类, TCP/IP的类 通讯协议类, 如: TCP/IP的类 直接与外部设备交互的类 直接与外部系统交互的类
边界类的UML表示方法 表示方法: 边界类的 表示方法
继承
MyDerivedClass att: int myFunction()
UML类图对象图两者之间的异同
![UML类图对象图两者之间的异同](https://img.taocdn.com/s3/m/ed905369be23482fb4da4c7e.png)
(3)类型
❖ 典型的数据类型有:整型、布尔型、实型和 枚举类型,这些称为简单类型。简单类型在 不同的编程语言中有不同的定义,但是在 UML中,类的属性可以用任意类型,包括系 统中的其他类。当一个类的属性被完整的定 义后,它的任何一个对象的状态都由这些属 性的特定值所决定。
使用扩展形式。把接口表示成具有衍型 <<interface>>的类
简化形式的局限性在于不能直接地对接口提供的操 作或者信号进行可视化
扩展形式允许对接口中的操作和其它特征进行可视化, 然后画一个从类或者构件到接口的实现关系
实现关系(简化形式)
String
...
isEqual(String) : Boolean hash() : Integer ...
❖ 类的名称是一个字符串,可分为简单名称 和路径名称。单独的名称即不包含冒号的 字符串叫做简单名;用类所在的包的名称 作为前缀的类名叫做路径名。
2、属性(Attribute)
❖ 类的属性是类的一个组成部分,也是一个 特性,描述了类在软件系统中代表的事物 (即对象)所具备的特性,这些特性是所 有的对象所共有的。类可以有任意数目的 属性,也可以没有属性。
类图
❖ 类图(Class Diagram)是描述类、接口以及 它们之间关系的图,用来显示系统中各个类 的静态结构。
❖ 虽然一个类图仅仅显示的是系统中的类,但 是存在一个变量,确定了显示各个类的真实 对象实例的位置,就是对象图。
第05章 类图及对象图
![第05章 类图及对象图](https://img.taocdn.com/s3/m/6a1c60e9b8f67c1cfad6b8fc.png)
26
实体类通过事件流和交互图发现, 实体类通过事件流和交互图发现, 采用目 事件流和交互图发现 标领域术语命名. 标领域术语命名. 通常实体类对应数据库中的表, 属性对 通常实体类对应数据库中的表, 其属性对 应表的字段 字段, 应表的字段, 但实体类与数据库中的表不一定 是一一对应关系. 是一一对应关系.
23
借书处理类图
24
通过用例图可以确定需要的边界类, 每个Actor/User 通过用例图可以确定需要的边界类, 每个Actor/User case对至少需要一个边界类 对至少需要一个边界类. case对至少需要一个边界类.
但并不是每个 case都需 Actor/Use case都需 要生成惟一边界类, 要生成惟一边界类, 多个actor actor启动同一 多个actor启动同一 case可以使用同 use case可以使用同 一边界类. 一边界类.
初始值][{特性}] [可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}] 可见性]属性名[:类型][ 多重性[次序] ][=初始值][{特性 [:类型
该属性对外部实体的显现程度. 该属性对外部实体的显现程度. 可见public : + 可见public 受限protected: 受限protected: # 私有private 私有private : -
13
?
问题: 问题:
1、指出下面属性名的含义。 、指出下面属性名的含义。
+studentName:String=“李明” 李明” 李明 #studentBirthDay:Date=1999-10-21 -price:float=12.01{R/W}
14
5.1.3 类的操作
第5章类图和对象图
![第5章类图和对象图](https://img.taocdn.com/s3/m/d098a7f35022aaea998f0f52.png)
第5章类图和对象图5.1 类的定义在UML中,有两个图非常重要,一个是第3章中介绍的用例图,另一个是本章将要介绍的类图。
Rumbaugh对类的定义是:类是具有相似结构、行为和关系的一组对象的描述符。
在UML中,类表示划分成3个格子的长方形,如图5.1所示。
图5.1 UML中表示类的符号在图5.1所示的类中,类名是Shape,共有4个属性,分别为origin、size、fillColor 和count,其中属性count有一下划线,表示该属性是静态属性。
Shape类有Shape()、move()、resize()和display()方法。
其中方法Shape()的版型为<<constructor>>,表示该方法是构造方法,而Shape类是一个版型为Graphics的类。
对于版型的定义在5.5节中还会介绍。
在定义类的时候,类的命名应尽量应用领域中的术语,应明确、无歧义,以利于开发人员与用户之间的相互理解和交流。
一般而言,类的名字是名词。
在UML中,类的命名分simple name和path name两种形式,其中simple name形式的类名就是简单的类的名字。
而path name 形式的类名还包括了包名。
例如,下面是path name形式的类名:Banking::CheckingAccount其中Banking是包名,CheckingAccount是包Banking中的一个类。
5.1.1.类的属性属性在类图标的属性分隔框中用文字串说明,最新的UML规范说明1.5版本中定义属性的格式为:[可见性]属性名[:类型]['['多重性 [次序] ']'][=初始值][{特性}]根据详细程度的不同,每条属性可以包括属性的可见性、属性名称、类型、多重性、初始值和特性。
其中特性是用户对该属性性质的一个约束说明。
例如{只读}这样的特性说明该属性的值不能被修改。
类图和对象图的理解
![类图和对象图的理解](https://img.taocdn.com/s3/m/ec95e5afe2bd960590c677f9.png)
将现实生活中对应的两个事物抽象出来,这里主要涉及两个事物一个是人,一个是计算机,对于类而言,我们的类图可以反映出它们最基本的结构,在这里需要注意的是,任意一个事物本身或者具体到类本身,它会具有众多的属性和相关的操作,但是我们在类图和今后的实现当中,最主要考虑的是与系统相关的操作
类图的构建
因为我们是可以将类图转换成代码的所以一定要注意好命名的格式
[]里面的是可选项就是可以写也可以不写
讲一下如何设置类图的返回值
根据java中面向对象的理解,返回值一般是我们在定义方法的时候用到的,所以我们一般是在方法中定义一个参数然后设置它的返回值
如何对uml进行java环境的配置
三个选项都选择,别问为什么,问就是不知道
使用边界类切换到图形显示
边界类一般位于系统与外界的交界处
存放类似数据库永久性的东西的类叫做实体类图形显示方式和表格显示方式的切换
完美的一个例子
类定义的是一组相同的对象的描述在UML中如何定义类的类型
边界类,实体类,控制类
进行类图的切换
对象图的概述
对象指的是类的一个实例化
我们需要在对象名下面添加一条横线,用来说明它是对象名而不是类名
对象图是在类图里面绘制的
接口:1、接口使用interface修饰;2、接口不能被实例化;3、一个类只能继承一个类,但是可以实现多个接口;4、接口中方法均为抽象方法;5、接口中不能包含实例域或静态方法(静态方法必须实现,接口中方法是抽象方法,不能实现)
接口和抽象类有什么区别:
https:///danteshenqu/article/details/93981157。
类图和对象图
![类图和对象图](https://img.taocdn.com/s3/m/1e50e25ca8956bec0975e3cd.png)
第5章类图和对象图在UML中,有两种图非常重要,一种是前面我们讲过的用例图,一种就是我们今天开始要学习的类图。
实际上我们平时的看到的大多数UML图都是类图,就像Martin Flower 在《UML精粹》中说的那样,如果一个人在一条黑暗的胡同中向你走来,并且对你说:“嘿,要不要看一个UML图?”那么,那个图可能就是一个类图。
类图是使用最广泛的一种模型,用来表述系统中各个对象的类型以及他们之间存在的各种静态关系。
要有效的理解和掌握类图,必须首先熟悉类的概念,因此我们首先还是要从面向对象思想出发,再次探究类的内涵。
5、1类的定义5.1.1面向对象的思想例:假设住在上海的张三要给住在蚌埠的朋友李四送一束鲜花,由于他们之间距离太远,不可能亲自买一个送过去。
为了解决这个问题,张三登陆到一个电子商务网站购买一束鲜花,并通过该网站将花送给李四。
而这个电子商务网站实际上就是通过我们蚌埠的某个鲜花店呢来完成这个任务。
因此在整个传递过程中,各个实体之间有如下的关联关系:显然,现实生活中的情况要复杂的多。
电子商务网站可以接受很多人的订单,也可以与不同地方的鲜花店合作,以送给更多不同地方的人。
因此把图5-1进行抽象得到图5-2。
图5-2很好的诠释了类和对象的概念,显然张三是一个对象,可以归到“订货人”这个类中;而蚌埠的某个鲜花店显然也是一个对象,它可以归到“商户”这个类中。
因此可以说,每个对象都扮演了一个角色,并为其它成员提供特定的服务或执行特定的行为。
在我们的例子中,订货人想把完成的事(给李四送鲜花)委托给电子商务网站,而电子商务网站又委托给具体的商户(蚌埠某鲜花店),具体的商户最终通过送货人完成这个行为。
在实际过程中,张三首先在电子商务网站填写信息,然后电子商务平台向商户发送信息,商户安排送货人完成该动作。
也就是说:在面向对象世界中,行为的启动是通过将“消息”传递给对此行为负责的对象来完成的;同时还将伴随着执行要求附上相关的信息(参数);而收到该消息的对象则会执行相应的“方法”来实现需求这就是在面向对象中,用类和对象表示现实世界,用消息和方法来模拟现实世界的核心思想。
第5章类图和对象图
![第5章类图和对象图](https://img.taocdn.com/s3/m/7baa3a67a45177232f60a28a.png)
Processor
4 泛化关系
存在于一般元素和特殊元素间的分类关系。 可以用于类、用例以及其他模型元素。 描述了一种“is a kind of” 的关系。
4 泛化关系
描述银行账户的类图
使用泛化关系 的银行账户类
4 泛化关系
泛化主要用途: I. 多态 II. 继承 ① 单继承 ② 多重继承
(2) 操作名
用来描述所属类的行为的动词或动词短语。 单字操作名小写,多字单词除了第一个单 词外其余单词的首字母要大写。 例如: - getName()
(3) 参数表
一些按顺序排列的属性定义了操作的输入。 是可选的。 定义方式:“名称:类型”。 多个参数用逗号隔开。 参数可以具有默认值。 例如: +getArea(radius:integer)
(5)关联的约束
关联可以加上一些约束,以加强关联的含义。 在关联上使用{ } 表示约束。 当多个关联之间存在约束条件时,需要使用UML 注释来表示。
(6)限定关联
带有限定符的关联称为限定关联 限定符很像是索引文件的关键字,使用它可以直接找到所 需要的对象。一般来说,查询结果会是所有对象的一个子 集,而不是整个列表。可把一对多转换为一对一。
(3) 类型
① ② ③ ④ ⑤ 简单类型: 整型Integer 布尔型Boolean 实型Double 字符串String 枚举类型 系统中的其他类
+ x:Integer
<<enumeration>> Colour red green blue
(4) 初始值
也称为默认值。 目的: ① 保护系统的完整性,防止漏掉取值或被非 法的值破坏系统的完整性。 ② 为用户提供易用性。 初始值表达式可以是一个单独的数值,也 可以是用某种语言编写的字符串。 例如: + x:Integer =100
第五章 UM对象图和类图
![第五章 UM对象图和类图](https://img.taocdn.com/s3/m/6a4e6f0010a6f524ccbf85b9.png)
① 关联名
关联名
★如果关联关系已经清楚,就无需关联名
② 关联的角色
关联的角色
★ 在关联的每一个端点上有一个角色。每一个角色具
有一个名字,用来描述其类被其他的类看作是什么: 把它称为角色名,如果类名与角色名相同,则不
标出角色名。类关系通过添加角色来进一步丰 富。在类图中使用角色可以帮助读者理解第一 个类对于第二个类的作用。
1.3 接口
• 在没有给出对象的实现和状态的情况下对对象行为 的描述。 • 包含操作但不包含属性。 • 没有对外界可见的关联。 • 一个类可以实现一个或多个接口。
1.3 接口
• 接口类:
1.4 类之间的关系
• • • • • 1 2 3 4 5 关联关系 聚合和组合关系 泛化关系 依赖关系 实现关系
案例分析
• 创建一个类图。下面给出创建类图所需的信息。 • 学生(student)可以是在校生(undergraduate)或者 毕业生(graduate)。 • 在校生可以是助教(tutor)。 • 一名助教指导一名学生。 • 教师和教授属于不同级别的教员。 • 一名教师助理可以协助一名教师和一名教授,一名教师只 能有一名教师助理,一名教授可以有5名教师助理。 • 教师助理是毕业生。
(2)聚合 聚集和组合
• 聚合(aggregation): 表示类之间一种松散的整体与部分的组成关 系,是一种特殊的关联。表示“整体/部分”的关联关系。“has a ”,表示聚合中的每一个部分可以属于其它整体。 • 被表示为在整体的一端用一个空心菱形修饰的简单关联
聚合
组合
• 组合(composition): 表示类之间一种紧密的整体与部分的组成 关系,也是一种特殊的关联。表示组合中的每一个部分只能属 于一个整体 • 组合确实只是一种特殊的关联,用整体端有实心菱形箭头的简单 关联修饰它。
5_类图及对象图-4
![5_类图及对象图-4](https://img.taocdn.com/s3/m/994f1552f56527d3240c844769eae009581ba29a.png)
、信函等 - 部门、:如:班级、学校 - 设备:如:汽车、计算机 - 与系统相关的外部实体:如其它系统、设备、
人员等。
➢ 筛选对象类的原则
- 关键性:缺少这个对象类信息,系统就不能运作
- 可操作性:对象必须拥有一组可标识的操作,该 操作可修改对象的属性
建立类图
建立类图的一般步骤:
① 研究分析问题领域,确定系统需求; ② 确定类,明确类的含义和职责,确定类的属性和操作; ③ 确定类之间的关系。关联,泛化,聚集,组合,依赖; ④ 调整和细化类及其关系,解决重复和冲突; ● ⑤ 绘制类图,并增加相应说明。
确定对象类
➢ 发现对象类
- 与系统交互的角色:如:管理者、工程师、销 售员
泛化
2. 泛化的表示
表示
例子
依赖
1. 依赖的含义 依赖(dependency): 表示两个元素X、Y,如果
X的变化必然导致Y的变化,则称Y依赖X。 依赖关系不仅限于类,用例、包、构件之间都可
以存在依赖关系。
依赖
2. 依赖的表示
表示
例子
类图及对象图
类图
1 类图的概念 2 类图的抽象层次 3 建立类图
部分事物对象仅能属于一个组合对象; ●③ 聚集的对象生命周期可以不同,但组合对象则是同
存同亡。
泛化
1. 泛化的含义 泛化(generalization): 表示事物之间的一般与特
殊的关系。也可以称为继承关系。 泛化关系除了表示类与类之间的关系之外,还可
以表示参与者、用例、包、构件、接口等建模元素 之间的关系。
- 管理性:建立该对象是为了保存和管理那些属 性
第5章 类图和对象图-2
![第5章 类图和对象图-2](https://img.taocdn.com/s3/m/0b1bca6e0b1c59eef8c7b446.png)
6 关联的种类
② 二元关联是在两个类之间的关联
Company
Employs
Person
6 关联的种类
③ N元关联(n-ary association)是在3个或3个以 上类之间的关联。 See p.55
5.2.2 聚集和组合
聚集是一种特殊形式的关联。聚集表示类 之间整体与部分的关系。在对系统进行分 析和设计时,需要描述中的“包含”, “组成”、“分为…部分”等词常常意味 着存在聚集关系。 聚集关系中整体和部分的生命周期不一定 一致。
6 关联的种类
□ 对于图5.10中的类,在Rose中所生成的Java 代码如下所示: 类EnginePart的代码: public class EnginePart{ public EnginePart theEnginePart[]; /** *@roseuid 3E9290390281 */ public EnginePart(){} }
练习
Solution 2: We assume that the engine, door and battery can be replaced, so the relationship
5.2.3 泛化关系
□ 泛化(继承)定义了一般元素和特殊元素 之间的分类关系。
ParentClass
Athlete
练习: 画出Person类和Car类的类图。关联关系为 拥有。表示出关联名和关联多重性
Person 1.*
owns 0..*
Car
3 关联类
□关联本身也可以有特性,通过关联类可以 进一步描述关联的属性和操作。关联类通过 一条虚线与关联连接。
3 关联类
□要想表示Company和Person类之间的关联关系,关键是 要确定工作合同和该合同的薪水。Salary属性描述的是 Company类和Person类之间关联的属性,而不是描述 Company类或Person类的属性。
《类图及对象图》PPT课件
![《类图及对象图》PPT课件](https://img.taocdn.com/s3/m/4768c13f763231126edb11d8.png)
17 of 70
5.1.3 类的操作
1. 操作的含义 操作(operation): 描述类所表示事物的动态性质。
2.操作的格式
[可见性]操作名[(参数列表):返回类型][{特性}]
该操作的输入参数,可以为空. 例如: #create() +hide() -ttachXWindow(xwin:Xwindow)
表示属性值的取值,及有序性: 例如: name:String[0..1]
表示属性”name”可能无值,也 可能仅有一个值.
points:Point[2..* ordered] 表示有两个或多个值,有序
11 of 70
5.1.2 类的属性
1. 属性的含义 属性(attribute): 描述类所表示事物的静态性质。
18 of 70
5.1.3 类的操作
1. 操作的含义 操作(operation): 描述类所表示事物的动态性质。
2.操作的格式
[可见性]操作名[(参数列表):返回类型][{特性}]
该操作的返回值的类型. 例如: +display():Locatein
19 of 70
? 问题4:
1、指出下面操作名的含义。
2.属性的格式 [可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}]
表示属性约束说明: 例如: #visibility:Boolean=false{读写}
表示属性”visibility”可读,写
13 of 70
? 问题3:
1、指出下面属性名的含义。
+studentName:String=“黎明” #studentBirthDay:Date=‘1999-10-21’ -price:float=12.01{R/W}
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 操作
用于修改、检索类的属性或执行某些动作。 一个类可以有任意数量的操作或者根本没有操作 返回类型、名称和参数一起被称为特征标记。 在同一个类中,操作的名称不必是惟一的,但特 征标记必须是惟一的。 在UML中,类操作的语法为:
[可见性] 操作名 [(参数列表)] [:返回类型] [{特性}]
5.1 类的定义
面向对象系统组织结构的核心。 对一组具有相同属性、操作、关系和语义的对象 的抽象。 包括名称部分(Name)、属性部分(Attribute) 和操作部分(Operation)。
5.1 类的定义
1 2 3 4 5 6 7 名称 属性 操作 职责 约束 注释 用户定义分栏
① 对象必须了解自己,即他有自己的结构和当前状态 ② 对象必须了解他的直接关系
③ 对象有时还要监视特定的信息
类可以有任意数目的属性,也可以没有属性。 在UML中,类属性的语法为: [可见性] 属性名 [:类型] [多重性] [=初始值] [{特性}]
2 属性
(1) 可见性 (2) 属性名 (3) 类型 (4)初始值 (5) 特性 (6) 类作用域的属性
Event
-name:String=no default,{Reauired,1..30 chars} -startDate:Calendar=no defalut,{Required,>today} -duration_in_days:int=1{>0}
(6)类作用域的属性
大部分属性的拥有者是特定的对象(类实 例),这些属性称为实例作用域的属性 属性的值被定义和保存在类里,该类的任 何对象都可以访问这个值,则称为类作用 域的属性,又称为静态属性 表示:
在操作分栏的内部,根据操作的用途,可以使用 版型将操作分成许多小组。
3 操作
(1) 可见性 (2) 操作名 (3) 参数表 (4) 返回类型 (5) 特性 (6) 类作用域的操作
(1) 可见性
类型: ① 公有(Public) “+” ② 私有(Private) “-” ③ 受保护(Protected) “#” ④ 包内公有(Package) “~”
(1) 可见性
命名空间:是UML中可以被命名的元素, 它可以包含另外的命名元素。 命名空间可以规定其包含的元素的可见性 类型: ① 公有(Public) “+” ② 私有(Private)“-” ③ 受保护(Protected)“#” ④ 包(Package)”~”
(2) 属性名
每个属性都必须有一个名字以区别于类中的其他 属性。 属性名由描述所属类特性的名词或名词短语组成 单字属性名小写,如果属性名包含了多个单词, 这些单词要合并,且除了第一个单词外其余单词 的首字母要大写。 如果不同的类拥有相同的属性名,而开发人员又 要在同一上下文中引用他们,必须使用完整的路 径表示属性。
(4) 返回类型
是可选的,即操作不一定必须有返回类型。 绝大部分编程语言只支持一个返回值。 具体的编程语言一般要加一个关键字void 来表示无返回值。
属性声明的例子
+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]
Event.status,Venue.status。
(3) 类型
① ② ③ ④ ⑤ 简单类型: 整型Integer 布尔型Boolean 实型Double 字符串String 枚举类型 系统中的其他类
<<enumeration>> Colour red green blue
(4) 初始值
1 名称
当类在类图显示时,名称分栏是惟一必须可见的 分栏。 应该来自系统的问题域。名称应该精确并且简短, 能够描述类所代表的对象的类型。 应该是一个名词,且不应该有前缀或后缀。例外 情况是代表对象集合的类。
Event
Agents
1 名称
名称的大小写规则最好与编程语言的规则 相对应,例如,以下为不太好的命名:
Cancelled_Show,Event_with_no_Shows,
Exempt_Employee,Non_exempt_Employee 将类的属性嵌入到类的名称中了。改为Event, Show,Employee
分为简单名称和路径名称。
2 属性
用来描述该类的对象所具有的静态特征。 一个类可以拥有三种类型的信息:
也称为默认值。 目的: ① 保护系统的完整性,防止漏掉取值或被非 法的值破坏系统的完整性。 ② 为用户提供易用性。 初始值表达式可以是一个单独的数值,也 可以是用某种语言编写的字符串。
(5) 特性
指定关于属性的约束信息。 任何希望添加在属性定义字符串值但又没有合适 地方可以加入的规则,都可以放在特性里。在其 他对象试图改变属性值时,特性字符串的规则可 以保护属性的完整性。 特性被表示为“标记定义=标记值”的形式。
(2) 操作名
用来描述所属类的行为的动词或动词短语。 单字操作名小写,如果操作名包含了多个 单词,这些单词要合并,并且除了第一个 单词外其余单词的首字母要大写。
(3) 参数表
一些按顺序排列的属性定义了操作的输入。 是可选的,即操作不一定必须有参数才行。 定义方式:“名称:类型”。 若存在多个参数,将各个参数用逗号隔开。 参数可以具有默认值。
第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 实例——图书馆管理系统的类图