UML_Lec05_类_关系
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单名字是一个不包含冒号的字串 路径名是简单名字前面加上一个包含该类所在的模型包的名字 这两个名字之间用两个冒号隔开
复杂名字(路径名字)
类名 中的每个词的第一个字母通常要大写
UML Lecture, Author: NK Jiang 11/46
2013-7-15
类的表示– 名称
Customer Wall
2013-7-15
UML Lecture, Author: NK Jiang
10/46
类的表示
类的图形表示:
Shape
Shape
顶端的分隔区为类的名字
下面两个分隔区显示时,可省略的,可以分别列出类的属性或操作
类的名字
是每个类所必备的构成 用于和其它类相区分 简单名字
类的名字可分为
2013-7-15
UML Lecture, Author: NK Jiang
18/46
类的表示– 操作
操作署名(operation signature)
在交互中,操作是通过消息启动的,为了能有效地提 供操作对应的服务,操作的请求者必须提供合法的启 动消息,包括:
合法的操作参数 对操作的返回值(如果有的话)的正确解释
这时,可以应用UML的隐藏原则
并不表示此类没有属性或操作 有可能它们是被省略了
2013-7-15
UML Lecture, Author: NK Jiang
21/46
类的 操作就是对这些服务的具体规定,包括
如果把操作映射到C++语言,则操作就是C++的类成员函数。
操作的定义:
操作是一个类所能提供的服务的实现,或者 操作是对一个对象所做事情的抽象,并且由这个类的所有对象共 享。 操作:
必须有一个名字 可以有参数表 可以有返回值。
UML Lecture, Author: NK Jiang 16/46
属性的初始值:
当类的一个对象被创建,它的各个属性就开始有特定的状态 有时,对象的初始状态对此对象参与的交互是有意义的. 这时,有必要在对象的类中定 义其对象属性的初始值。 初始值的图形表示:
类的属性的初始值在属性的类型的后面指定 初始值和类型之间用等号(=)分隔(下图)
Eg. “lheightOfTheWall:Float = 3.5”
对话3:
对话2:
本讲目的
类: 定义、在问题领域中的对应事物 类在UML中的符号表示
类名、属性、操作 简单表示、复杂表示 依赖关系 泛化关系 关联关系(association)
关系
关联的修饰
名称 角色 多重性 聚合/组合
关联类 连接(link)
问题领域的类
类是真实世界事物的抽象。
它们是类的实例,并被称为对象。 相同的属性 (但 属性的取值可以不同) 提供相同的操作 有相同的语义
UML Lecture, Author: NK Jiang 6/46
同一个类的各对象具有
2013-7-15
Ch4. 类
例,建造一所房子
参数包括
名字 类型 和缺省值
在每个参数名字后面跟着的是参数的类型,它们之间用冒号分隔 类型后面是可选的参数缺省值,它和类型之间用等号(=)分隔
如果一个参数被指定了缺省值,就意味着
此操作被调用时,可以不指定此参数的值, 这时操作认为调用者使用缺省值作为此参数的值。
操作的返回值类型出现在此括弧之后,返回类型和括弧 之间之间用冒号分隔。
在UML中,消息的合法性通过操作署名来定义:
操作署名是操作参数的名字、参数类型、参数缺省值 以及操作返回值的类型的集合
2013-7-15
UML Lecture, Author: NK Jiang
19/46
类的表示– 操作
操作署名的图形表示:
在类的图符上,操作署名是可隐藏的 如果不隐藏,则参数表出现在操作名后面的括弧内 参数表内的各参数之间用逗号分隔
2013-7-15
类的表示– 操作
按照操作的定义,类的操作所提供的服务可以分 为两类
一类是操作的结果引起了对象状态的改变,状态的改 变也包括相应的动态行为的发生 另一类是为服务的请求者提供返回值
例如:执行特定的计算,并把结果返回给请求者。
操作的图形表示:
操作被列在属性下部的分隔区里 显示时, 操作分隔区是可隐藏的 如果操作分隔区未被隐藏 则操作的名字必须列出 名字的后面必须有一对括弧以表示此名字是操作名称
UML Lecture, Author: NK Jiang 14/46
2013-7-15
类的表示– 属性
属性的省略表示
属 CBmpViewerData 性 的 m_x0 m_y0 省 m_w0 m_h0 略 m_x1 m_y1 表 m_w1 m_h1 示: m_hDib m_bSelected 只 CBmpViewerData() 列 SetDIBHandle() 出 ~CBmpViewerData() IsCursorInsideImage() 名 SetSelFlag() GetSelFlag() 字 SetNewPosition() GetNewPosition()
动物 和电子设备 移动事物 和 静止事物
室内事物 和 室外事物 一个类? 图标(Icon) 濒危事物
8/46
总之,类的选择依赖于应用领域
UML Lecture, Author: NK Jiang
2013-7-15
Ch4. 类
类不是孤立存在的
它的对象将参与一个或多个交互 使得“类”代表某一类特定事物 具备特定的语义
事物:
房主关心 墙、门、窗户、橱柜、灯 等是主要的事物 水管工关心:排水管、存水管、通风口等事物
事物的属性:
使事物有别于其他事物
事物如何合理组合构成系统
事物间的关系:
2013-7-15
UML Lecture, Author: NK Jiang
7/46
Ch4. 类
你看到几个类?
The purpose of this chart is to motivate the need for classes.
类捕获了系统实现方案中的概念或词汇
类的语义是为了对此对象代表的事物的性质进行描绘 通过对事物性质的描绘
可以记录对象在交互过程中状态的变换, 并可进一步决定对象在此状态下的行为
例如:在基于窗口操作的操作系统中,处理窗口的对 象
描述窗口的尺寸、位置,类型等性质, 窗口性质的不同取值 又可以决定系统对鼠标操作的不同响应 方式。
属性的初始值是可选的 当未为属性指定初始值时,属性的初值是不确定的 Public (+) Private (-) Protected (#)
属性的可见性
Implementation
access means that the class is accessible only by the implementation of the package containing the class
实例化
[课本 Ch4 ].
类 Class
类的定义:
是对一组具有相同属性、操作、关系和语义的对象的描述 一个类描述了一组对象的公共的结构和行为。 通常在对系统建模时,将会涉及到如何识别业务系统中的事物, 这些事物构成了整个业务系统。 在UML中,把所有的这些事物都建模为类 当这些事物存在于真实世界中时,
2013-7-15
类的表示– 属性
属性的图形表示:
类的属性被列在类图形(类符号)的第二个分隔区中 属性分隔区是可省略的 (此处指图形表示时) 当属性分隔区未被省略时,
属性的名字必须出现。 属性的名字后面是它的类型 类型和名字之间用冒号(:)分隔
Eg. “heightOfTheWall:int”
属性的类型表示
除了属性的名字之外,属性的其它描述 都是可省略的,包括: 类型、初值、可见性
属性名 除第一个词之外的每个词的第一 个字母要大写
2013-7-15
UML Lecture, Author: NK Jiang
15/46
类的表示– 操作
对象在交互中,存在着许多消息的交换
消息是一个对象发送给另一个对象,请求其提供服务的指令 一个对象接收的各个不同的消息,构成了此对象的类能提供的服 务的集合。 接收 服务请求的格式,以及 类对合法请求所能提供的有效服务的承诺
BusinessRules::FraudAgent
限定名 Temperature Sensor 简单名 java::awt::Rectangle
2013-7-15
UML Lecture, Author: NK Jiang
12/46
类的表示– 属性
类的属性(attribute)
它是类的一个组成部分,描述了类在软件系统中代表的事物所具 备的特征。 在UML里,属性是类的一个命名特性(named property),它描 述了此特性在类的实例中能具备的取值范围。 类的属性首先是类的一个组成部分; 其次,类的每个属性都必须有一个名字,以区别于类的其它属性
属性的定义
根据定义,
为了定义属性的取值范围必须为属性指定类型
例如:
布尔类型的属性可以取两个值:TRUE和FALSE; 字节型的属性只能取256个值
当一个类的属性被完备地定义后,它的任何一个对象的 状态都被这些属性的特定取值所决定。
UML Lecture, Author: NK Jiang 13/46
UБайду номын сангаасL
Unified Modeling Language
统一建模语言
Lecture_ 类与关系
主讲: 姜宁康 博士 日期: 2013-7-15
思考
关于有学生当枪手 “替考” ? 对话1:
“你的邮件我已经收到了,terribly 谢谢!” --》老师,作业已完成,请查看,谢谢! 《--没有用例描述? --》在图片上看一下! “老师,你希望我答辩能通过吗?”
UML Lecture, Author: NK Jiang 9/46
2013-7-15
4.1 UML中类的表示
类的图形表示
用四部分来表示。它是分为三个分隔区 (compartment)的长方形:
名称naming 属性attribute 操作operation 责职responsibility
2013-7-15
UML Lecture, Author: NK Jiang
17/46
类的表示– 操作
Shap
CBmpViewerData
(from bmpviewer)
+ + + + + + + +
CBmpViewerData() : CBmpViewerData SetDIBHandle(hDib : HANDLE = NULL, w : int = 0, h : int = 0) : HANDLE ~CBmpViewerData() IsCursorInsideImage(x : int = 32767, y : int = 32767) : BOOL SetSelFlag(bSelected : BOOL = TRUE) : BOOL GetSelFlag() : BOOL SetNewPosition(x0 : int, y0 : int, w0 : int, h0 : int, x1 : int, y1 : int, w1 : int, h1 : int) GetNewPosition(x0 : int&, y0 : int&, w0 : int&, h0 : int&, x1 : int&, y1 : int&, w1 : int&, h1 : int&)
操作名 除第一个词之外的每个词的第一个字母要大写
UML Lecture, Author: NK Jiang 20/46
2013-7-15
属性和操作的组织
类的构成有可能很复杂
将产生很长的属性列表和操作列表 没有必要在模型图上把所有的属性和操作都绘制在模 型图上。这是因为
一方面,这样会使UML图过于繁杂 另一方面,出于表达特定问题的需要,不必要将与问题无关 的属性和操作与重要的属性和操作同时绘制在模型图上 在UML模型图上把对表达问题不重要的属性或操作隐藏 因此,如果发现模型图上某个类的属性分隔区或操作缺失或 分隔区内没有内容