UML面向对象分析、建模与设计课件第五章 类图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
即可变、只增与冻结。
类——操作
操作是一个可以由类的对象请求以影响其行为的服务的实现,也即 是对一个对象所做的事情的抽象,并且由这个类的所有对象共享。
操作是类的行为特征或动态特征。 操作的语法格式为:
可见性OPT 操作名 ⌊(参数列表)⌋OPT ⌊:返回类型⌋OPT ⌊{特性}⌋OPT
操作名:操作的标识符。在描述操作时,操作名是必须的,其他部 分可选。
Student
+monitor 1
1..*
自关联
类图中的关系——关联关系
关联名称:放在关联路径的旁边,但远离关联端。 角色:放在靠近关联端的部分,表示该关联端连接的类在这一关联
关系中担任的角色。角色名上也可使用可见性修饰符号。 多重性:放在靠近关联端的部分,表示在关联关系中源端的一个对
象可以与目标类的多少个对象之间有关联。 导航性:一个布尔值,用来说明运行时刻是否可能穿越一个关联。 限定符:是二元关联上的属性组成的列表的插槽,其中的属性值用
/WorksForCompany
Department * +department 1 WorksForDepartment
* Person
类图中的关系——泛化关系
泛化关系定义为一个较普通的元素与一个较特殊的元素之间的类元 关系。其中描述一般的元素称为父,描述特殊的元素称为子。
通过泛化对应的继承机制使子类共享父类的属性和操作,小了模型 的规模,同时也防止了模型的更新所导致的定义不一致的意外。
法了,此时称之为N元关联。
类图中的关系——关联关系
class Logical View
ClassA
AssociationName
+rolename 0..*
qname: int
ClassB
二元关联
class Logical View
Student
Time *

*


Loader

0..1
class Logical View
属性的类型决定了该属性的所有可能取值的集合。
类——属性
多重性:属性的多重性表示为一个包含于方括号中的数字表达式, 位于类型名后,相当于编程语言中的数组概念。例如:INT P[10]
初始值:作为创建该类对象时这个属性的默认值。例如:INT I=10; 特性:即对属性性质的约束,UML定义了3中可以用于属性的特性,
对属性名添加下划线修饰表示该属性为静态属性。
类——属性
可见性:描述了该属性在那些范围内可以被使用。
可见性 英文限定符 UML标准图示 Rose图示
说明
公有
public
+
其他类可以访问
私有
private
-
只对本类可见,不能被其他类访问
保护
protected
#
对本类及其派生类可见
类型:属性的数据类型,可以系统固有,也可以用户自定义。
Bird - feather_color: Color + fly()
SuperB
Child
类图中的关系——依赖关系
依赖关系表示的是两个元素之间语义上的连接关
系。对于两个元素X和Y,如果元素X的变化会引起
对另一个元素Y的变化,则称元素Y依赖于X。其中,
class Logical View
X被称为提供者,Y被称为客户。
类——属性
属性是已被命名的类的特性,它描述了该特性的实例可以取值的范 围。
属性的语法格式:
可见性OPT 属性名 ⌊:类型⌋OPT 多重性OPT ⌊=初始值⌋OPT ⌊{特性}⌋OPT
属性名:属性的标识符。在描述属性时,属性名是必须的,其他部 分可选。属性的命名规范一般以小写字母开头,非首单词的首字母大 写。
口的类之间。
Wall
一个类可以实现多个接口,一个接口也可以被
«interface» Measurable + getHeight() + getLength() + getThickness()
多个类实现。
class Logical View
实现关系的两种表示法:
Wall
当接口元素以带构造型的类的方式表示时,用虚
在UML中,抽象类通过对类名添加斜 体修饰来表示。
Line + draw()
Shape + areaColoring() + getArea()
Rectangle + draw() + getArea()
Ellipse + draw() + getArea()
涉及类的其他概念——模板类
模板又称为参数化元素是对一类带有一个或 者多个未绑定的形式参数的元素的描述。模 class Logical View 板应用在类上时称为模板类。
ClassA
对于类图而言,主要有以下需要使用依赖的情况:
客户类向提供者类发送消息。 提供者类是客户类的属性类型。 提供者类是客户类操作的参数类型。
ClassB + operation(x: ClassA)
类图中的关系——实现关系
实现关系用来表示规格说明与实现之间的关系。
在类图中,实现关系主要用于接口与实现该接 class Logical View
关联的实例被称为链,每个链由一组有序或无序的对象组成。 关联关系靠近被关联元素的部分称为关联端,关联的大部分描述都
包含在一组关联端的列表里,每个端用来描述关联中类的对象的参与。 最普通也是最常用的关联关系是二元关联,二元关联即有两个关联
端的关联关系。 特别地,一个类与自身的关联称为自关联。 当3个或以上的类之间存在关联关系时,便无法使用二元关联的表示
Me元素以小圆圈方式表示时,用实线表示。
涉及类的其他概念
类的高级概念:
抽象类 模板类 关联类 分析类
涉及类的其他概念——抽象类
class Logical View
抽象类即不可实例化的类,也就是说, 抽象类没有直接的实例。
Drawing + lineColoring() + draw()
类是一组拥有相同的属性、操作、方 法、关系和行为的对象描述符。
类定义了一组有着状态与行为的对象。 类的状态由属性和关联来描述,个体 行为由操作来描述,对象的生命周期 则由附加给类的状态机来描述。
class Logical View
Person - address: String - age: int - name: String + houseMoving() + sleep() + work()
类图
类图的基本概念
类图是显示一组类、接口、协作以及它们之间关系的图。一个类图 主要通过系统中的类以及各个类之间的关系来描述系统的静态结构。
类图主要包含7种元素:类、接口、协作、依赖关系、泛化关系、实 现关系和关联关系。类图中还可以含有包或子系统,用来把模型元素 聚集成更大的组块。与其他UML图类似,类图同样可以创建约束和注 解等。
+ update()
类图中的关系
在类图中,很少有类是独立为系统发挥作用的,大部分的类以某些 方式彼此协作进行工作。在进行系统建模时,不仅要抽象出形成系统 词汇的事物,还必须对这些事物之间的关系进行建模。
类图中涉及到了UML中最常用的四种关系,即关联关系、泛化关系、 依赖关系和实现关系。
类图中的关系——关联关系
来从整个对象集合里选择一个唯一的关联对象或者关联对象的集合。 约束:关联间的约束关系。
class Logical View Person +worker
类图中的关系——关联关系
+office
Room
class Logical View Student 1..*
0..*
School
角色
多重性
class Logical View
➢编程语言:C#、JAVA等
多重继承:子类可以有多个父类并继 承了所有父类的结构、行为和约束。
➢编程语言:C++等
Animal - age: int - weight: double + eat() + sleep()
class Logical View SuperA
Tiger - fur_pattern: String + run() + hunt()
ContactInfo - address: String
PersonalRecord - academicRecord - id - learningHistroy
MusicClassroom - instruments
SecureInfo
类图的组成元素
类 接口 类图中的关系 涉及类的其他概念

对操作名添加下划线修饰表示该属性为静态操作。
类——操作
可见性:同样描述该操作在那些范围内可以使用,与属性的可见性 相同。
参数列表:是一些按照顺序排列的属性定义了操作的输入。例如: OPER(OUT ARG1:INT, ARG2:DOUBLE=3.2)
返回类型即回送调用对象消息的类型。VOID关键字表示无返回值。 特性是对操作性质的约束说明。
接口不包含属性与方法实现,但可以有一些操作。 接口的所有内容都是公有的。
接口代表了一份契约,实现该接口的类元必须履行 它。
在UML中,接口由一个带名称的小圆圈表示;也可 以表示为带有<<INTERFACE>>构造型的类。
class L... Observer
class Logical View «interface» Observer
class Logical View Person
在UML中,类表达成一个有三个分隔 区的矩形。其中顶端显示类名,中间 显示类的属性,尾端显示类的操作。
类——类名
类名是一个文本串,作为区别于其他类的名称。 类名有两种表示方法:
简单名:PERSON 路径名:JAVA::AWT::RECTANGLE
类的命名规范:一般以大写字母开头,大小写混合,每个单词首字 母大写,避免使用特殊符号。
对应概念:C++中的模板与JAVA中的泛型
模板类可以根据参数来定义类,而不用说明 属性和操作参数及返回值的具体类型,使用 时通过实际值代替参数即可创建新的类,这 样就可以避免建立大量功能相似的类。
T size : int Array
- element: T [size]
+ addElement(e: T): void + getElement(i: int): T
泛化关系的特征:
传递性:一个类子类的子类同样继承了这个类的特性。在父方向上经过 了一个或几个泛化的元素被称为祖先,在子方向上则被称为后代。
反对称性:泛化关系不能成环,即一个类不可能是自己的祖先和自己的 后代。
类图中的关系——泛化关系
class Logical View
泛化关系的两种情况
单继承:每个类之多能拥有一个父类。
聚合关系
➢描述“整体-部分”的关联关系
class Logical View Classroom
➢聚合关系没有改变整体与部分之间整个关联的 导航含义,也与整体和部分的生命周期无关。
组合关系
➢描述“整体-部分”的关联关系 ➢组合关系中的部分要完全依赖于整体。
class Logical View Window 1
Desk
1..*
Frame
类图中的关系——关联关系
派生关联:属于一种派生元素。它 不增加语义信息,只是一种可以由两 个或两个以上的基础关联推算出来的 虚拟关联。
class Logical View
Company
+employer 1
+employer
派生语义在模型中不添加任何额外 的语义,只是为了方便关联的使用。
class Logical View
Order
1..*
Product 0..*
class Logical View
Array
array_index: int
ArrayElement 1
导航性
限定符
Account
{xor}
约束
Person Corpratioon
类图中的关系——关联关系
两种特殊的关联关系:聚合关系与组合关系
类图的基本概念
class Logical View
School
1..* Class - name: String *
*
*
1
1
Location
*-
1..* Classroom address: String
+member +monitor
1..*
1
Student - name: String - studentID: int + getContactInfo() + getPersonalRecord()
类——职责
职责是类的契约或责任。当创建一个类时,就声明了这个类的所有 对象具有相同种类的状态和相同种类的行为。在较高的抽象层次上, 这些相应的属性和操作正式要完成类的职责的特征。
类的职责是自由形式的文本,在非正式的类图中,可以将职责列在 类图操作下的另一分割栏中。
接口
接口是一个被命名的操作集合,用于描述类或组件 的一个服务。
相关文档
最新文档