案例:课程登记
课程登记问题描述
·每学期开始,学生需要一份课程表,它包含本学期所提供的课程列表及每门课程的相关信息。比如:导师名称、科系、必要条件、课程时间、上课地点,可以帮助学生做出合理的决定。
·新系统规定:学生可以选择四门必修课程。此外,他还要选择两门候补课程以防某门课程人员满额或被取消。每门课程人数不得多余10人或少于3人。一旦学生完成登记过程,登记系统将信息传入记费系统,以便计算学生在本学期的学费数额。
·导师需要随时访问系统,知道有哪一门课程需要任教。他也可以了解他的课有哪些学生。
Use Cases
·你将可以:
建立Actors和Use Cases
建立Use Case图
描述Use Case
什么是Use Case?
·Use Case是所用系统的规格方式
在响应外部Actor触发时,系统所执行的功能
·Use Case提供了一种手段
——捕获系统需求
——专业人士和最终用户间的连接
——测试系统
什么是Actor?
·Actor是一些人或事:
——可以激或系统交互信息
——可以对系统进行输入
——可以从系统被动的接受信息
·通过调查发现Actor
——直接使用系统的人
——系统使用的外设
——系统的维护人员
——需要与此系统相连的其他系统
什么是Use Case 图?
·Use Case图说明了
——系统和它的Actor
——系统发展了的Use Cases
——Actor和Use Case间的交互
·Use Cases被描述在
——简短的描述
Use Case的高级描述
——事件流程
运行过程中的执行序列、
课程登记实例的事件流程详细信息见图片笔记Page226
类
·你将可以:
——建立类
——你可以给类建立stereotypes
查找类
·类是具有相同结构和行为的对象的集合
·Stereotype事建模元素的新类型,这种建模元素扩展了metamodel的语义
——每个类最少有一种stereotypes
·在分析中有三种普通的stereotypes
——实体类
·模型信息和相关行为惯犯的永久的独立与他的环境
——边界类
·系统环境和内部工作建的模型关联
——控制类
·一个或多个模型控制行为规格
查找类
·UseCase可以对查找实体和边界类型进行检查
·最初,给每一个Use Case建立一个控制类
——控制类可以作为分析过程被归并
·例子:课程登记的Use Case
——边界类
登记表格、计划表、计费界面、AddDrop课程表
——实体类
课程、提供课程、学生计划、学生信息
——控制类
登记管理
用Browser建立类
当一个类被发现,它就被加到浏览器中
类的说明
一旦类被建立,它应该被定义
定义是原文,它包含类的责任和目的描述
类的规格说明包含累的额外信息
加入Stereotypes
类的stereotypes可以被加到模型中
什么是包?
·包含一些类的主要模型
·它可以组合在包中帮助模型管理
·包是一个逻辑类或其他包的集合
·我们发现可以把登记系统中的类放在三个包中
——界面、人和学校事件
包的规格说明
·包的规格说明包含有关包的额外信息
包的说明
·一旦包被建立,它应被定义
——定义的原文描述了包的目的
·定义被加在文档窗口中
包的关系
·包之间存在从属关系
·包之间的关系意味着,该包中的类可以和其他包中的类进行通信
什么是类图?
·逻辑试图有包和类组成
·在逻辑视图中,类图是包含类部分(或所有)类和包的视图
——通常可以有许多类图
主类图
·逻辑视图最初包含一个视图
——该图形被称为Main
·主类图是逻辑视图中典型的高级包视图
在包中进行浏览
·每个包一般都有自己的主类图
·该图形一般展现
——包中的“公众”类
·其它包中的类可以和它关联
——公众连接
·在分析后加入类图
额外的类图
·需要时可以加入额外的类图
·他们展现了模型中包和类的另一种“视图”
删除包和类
·如果从浏览器中删除包和类,它将从模型中被删除
·如果从类图中删除包和类,它只会在类图中消失而仍然保留在模型中
主题:关系
·你将可以能:
——建立关联和聚合关系
——用名称、角色和多种指示增加关系
——建立反身关系
——加入强制关系
关联和聚合
·Use Case可以检测并决定两个类之间是否应该存在关系
·只要两个对象可以互相识别,他们就可以通信
·关联和聚合为通信提供了一条途径
·关联式两个间的非直接连接
·聚合是关联的一种强制模型
——它描述整体与部分之间的关系
关联还是聚合?
·如果两个对象通过整体和部分的关系具有紧密的边界
——这种关系成为聚合
·如果两个对象通常被认为是独立的
——这种关系成为关联
关系和类图
·包中的Main类图一般包含:
——包中的公众类
·其它包中的类可以跟它进行通话的类
——其它包中的类和公众进行通信
·如果需要,关系则被加入另外一个图形
关联名称
·关联或聚合可以被命名
通常是动词或动词短语
角色名称
·在类间的关联中角色表示目的或能力
——通常是名词或名词短语
多种指示
·每一个关联和聚合的尾部都包含多种指示
——在关系中指示多个对象的编号
反身关系
·在反身关系中,同一个类中的对个对象可以有许多合作方式
更新类图
一旦关联或聚合被建立,其它类图也可以被更新,以便展现关系
什么是方案(Scenarios)
·方案是Use Case的实例
·每一个Use Case都有一个方案网
——主方案(happy day scenarios)
·所有都很好
——次方案
·除了主方案外的部分
·方案可以在交互图中被描述
·有两种类型的交互图
——序列图
——协同图
序列图
·序列图描述了在实践上对象交互的安排
图形展现了(多个交互对象;信息交流的序列)
·序列图包含(对象的生命线;按顺序对象间的信息交流;控制焦点(可选的))
什么是对象?
·对象是一种概念、抽象或具有明确的边界的事情和应用目标
·对象是具有:(状态;行为;特性)
·序列图中的每一条垂直线代表一个外部Actor或系统中的对象
建立对象
在序列图中可以用不同方式代表Actor和对象
相关的类
在交互图中建立的类可以被放置在UseCase视图中
——它们可以和逻辑视图中的类相关
建立消息
·对象通过消息进行合作
·消息是一个从发送者志向接受者的箭头
·可以为消息选择标号
反身消息
·对象可以与自身合作
·可以以一种反身消息进行描述
移动消息
·当发现更过的信息,已存在的消息可以被移动
协同图
·协同图是方案定的另外一种图形代表
·协同图可以
——独立的被建立
——直接从序列图中建立
建立对象
·在协同图中有不同的方式代表actors和对象
对象间的链接
·链接为提供了对象间通信的路径
——它允许对象进行交谈
建立消息
·可以用同一个箭头描述多个消息
同一类的多个对象
·消息可以发送给同一个类的多个对象
·这些可以通过堆栈对象图标来实现
反身消息
·对象可以同自己进行合作
·它可以通过反身消息来描述
移动或插入消息
·在协同图中消息不能被移动或插入
·序列图必须被使用
·过程
——转换序列图
——移动或插入需要的消息
——转换回协同图
注释
·注释可以被附属在协同图的任何一个实体上
操作和属性
·你将可以能:
——为类建立操作和属性
——验证操作和属性
——在类图上显示操作和属性
什么是操作?
·类具体表达一套责任,这种责任定义了类中对象的行为
——类的责任通过操作被执行
·操作应该执行一种简单的功能
操作和交互图
·在序列图或协同图中显示的消息通常是类的操作(消息接收者)
·从一个边界类发消息到另一个边界类可以通过一个图形用户界面(GUI)来实现,他通常是不成熟的操作。
——它可以通过GUI建立者的性能被实现
浏览器
·一旦在交互图中建立操作,消息会自动被加入逻辑视图的类中
建立操作的其他方式
·操作可以在方案图中单独被建立
——通过浏览器
——在类图中
——通过类的规格说明
·例子:
——在次方案中包含的操作不能再序列图或协同图中描述
——内部(帮助)操作
用浏览器管理操作
·操作可以通过浏览器被建立、拷贝、移动和删除
在类图中建立操作
·操作可以通过类图被建立
通过类的规格说明建立操作
·通过类的规格说明建立操作
验证操作
·操作名称应该有一定风格规范
——提供跨项目的一致性
——引导多个可维持的模块和代码
·操作的命名应该可以显示它的结果,而不是执行操作后的步骤
例子:getGrade()、instead of calculateGrade()
·操作应从接受者的愿望命名,而不是发送者
·每一个操作应该有一个清晰简明的定义
为操作加入文档资料
·一旦操作被建立,它应该被描述
在类图中显示操作
操作可以在类图中被显示
显示操作信号
操作信号也可以被显示
——如果争论类型和缺省值没有被输入,Rose将用argtype作为缺省值。
状态图
主题:对象行为
·你将可以能
——建立状态转换图包含
1、状态
2、转换
3、动作和活动
4、嵌套状态
什么是状态转换图?
·状态转换图用于描述给定类的发展历史,导致状态转换的事件和导致状态改变的活动
·对象状态时对象可以存在的可能条件
·为类的重要动态行为建立状态转换图
什么是状态
·状态是对象可以存在的可能条件
状态转换
状态转换是从最初状态到成功状态的改变
反身状态转换
反身状态转换是一种处世状态等于成功状态的转换
状态转换Arguments
·伴随一个事件的数据就是一个argument
警戒(Guarded)状态转换
通过警戒(guard)的使用,转换可以形成条件
活动
活动是伴随事件转换的操作
发送事件
事件可以触发传送另一个事件
起始状态
·起始状态是对象的最初状态
只能有一个起始状态
状态活动类型
·简单状态
用自由格式文本代表发生的事件
·发送事件
一个活动出发下一个事件
状态中的活动
·通过关键词的输入,活动被放置在先前状态中
活动被输入直到从状态中退出
·通过关键词Do,活动被放置在先前的状态中
活动从状态中退出
·通过输入关键词exit,活动被放置在先前状态中
嵌套状态
嵌套状态可以用于将复杂的图形简单化
显示继承来的属性和方法
继承来的属性和方法可以在类的规格说明书中看到
抽象类
UML示例见图片笔记Page285