RationalRose用例图及其应用 2
ROSE用例图与活动图示例

2.3.4 使用Rational Rose 绘制用例模型
• 通信关系定义对话框
2.3.4 使用Rational Rose 绘制用例模型
• 依赖关系定义对话框
2.3.4 使用Rational Rose 绘制用例模型
• “车辆管理系统用例图”最终结果
2.3.4 使用Rational Rose 绘制用例模型
它的作用域不仅限于支持面向对象的分析与设计还支持从需求分析开始的软件开发的全过21uml22uml用例图描述的是参与者actor所理解的系统功能用于需求分析阶段列出系统中的用例和参与者并显示哪个参与者参与了哪个用例的执行下面通过uml来分析并构造车辆管理系统模型主要找出系统中所有的用例以及对用例进行说明还需要和车辆管理信息系统的潜在用户进行讨论图形使用visio及rationalrose工具软件绘制用例建模可分为用例图和用例描述
2.2.1 用例图
• 下面通过UML来分析并构造车辆管理系 统模型,主要找出系统中所有的用例, 以及对用例进行说明,还需要和车辆管 理信息系统的潜在用户进行讨论,图形 使用Visio及Rational Rose 工具软件绘制
2.3.1 用例图
• 用例建模可分为用例图和用例描述。用 例图由参与者(角色)、用例(Use Case)、系统边界、箭头组成,用画图 的方法来完成。
2.1 基于UML的用例模型实验
• UML特点:
– – – – 面向对象 可视化 独立与开发过程 程序设计语言以及易于掌握使用
2.2 基于UML的用例模型实验
• 2.2.1 用例图
用例图描述的是参与者(Actor)所理解的系 统功能,用于需求分析阶段,列出系统中的用 例和参与者,并显示哪个参与者参与了哪个用 例的执行
RationalRose工具的使用及如何进行用例图的设计(第2部分)

RationalRose工具的使用及如何进行用例图的设计(第2部分)1.1Rational Rose工具的使用及如何进行用例图的设计(第2部分)1.1.1利用Rational Rose进行建模1、创建模型(1)创建模型文件Rose模型文件的扩展名是.mdl,在该文件中存储我们的各个视图。
要创建出该模型文件,需要完成下列步骤。
(2)新建一个模型文件从菜单栏选择“File→New”,或单击标准工具栏中的“New”按钮;弹出下图所示的对话框,选择要用到的框架,单击“OK”按钮,或者“Cancel”按钮(表示不使用框架)。
(3)保存模型文件Rational Rose的保存,类似于其他应用程序。
可以通过菜单或者工具栏来实现。
1)保存模型:通过选择菜单“File→Save”或者工具栏的“Save”按钮,来保存系统建模。
2)保存日志:激活日志窗口,通过菜单“File→Save Log As”来保存,或者右键单击日志窗口,在弹出的菜单中选择“Save Log As”命令来保存。
输入文件名称为:网上书店(4)发布模型文件可以把Rose建立的模型发布到Web服务器中,使得其他人都能够以浏览器的方式来浏览该模型文件。
1)选择T ools---Web Publisher2)在对话框内进行各项设置最后点击“Publish”按钮进行发布2、在Rose中的操作要点(1)一般对某个元素右键单击,然后在弹出属性菜单中进行操作(2)如果要求新建什么内容时,可以选择弹出属性菜单中的“New”下的功能(3)如果要求对已经创建出的内容进行修改则可以选择弹出属性菜单中的“Open Specification”功能,然后在属性对话框内进行修改(4)如何选择缺省编程语言例如选择Java语言的方法是,Tools->Options->Notation->Default->Java。
1.1.2在Rose中创建出项目中的各个用例及用例图1、新建客户关系系统项目中的用例图(1)新建各个用例新建用例所在的包,包的名称为“前台用例包”在该包中增加本项目中的用例在Rose中分别添加各个用例,如:1)登录(登录系统、在线注销)2)客户资料管理(新增客户、删除客户、修改客户信息)3)客户资料查询(查询所有客户资料、按客户姓名查询、按客户性别查询、按客户年龄查询、按客户职业查询、按客户教育程度查询、按客户收入情况查询、按客户级别查询)4)客户反馈管理(客户反馈信息登记、抱怨业务查询、抱怨业务处理)5)按客户级别分类(按消费金额分类、按消费密度分类)6)客户信息分析及预测(客户满意度分析、客户消费预测、客户流失预测、销售优惠活动)7)群发邮件等。
Rational_Rose_建模工具及应用

部分对象可以被多个整体对象共享。
组装关系
通过指针引用
组合关系
部分对象只能只属于一个整体对象。
组装关系
通过值
限定词
将多对多的关联转化为多对一的关联。
关联类
具有关联特性的类。
先建立类,然后在工 具栏中选中关联类工 具连接类与关联。
3.1.3 模板
将属性的类型、操作的参 数类型和返回值类型参数 化。
Rational 产品线
Apex Rose SoDA Pure Series ClearCase SQA Suite 集成化软件工程环境 可视化建模 文档自动化 白盒测试 配置管理 黑盒测试
Rational Rose与软件开发阶段
需求分析 Use Case Diagram 和 其它描述 Sequence Diagram Collaboration Digram Class Diagram State Diagram Activity Diagram Component Diagram 和 其它描述
Delete Course Registrar
Modify Course
2.2 活动图
在用例模型中,活动图用来捕捉用例中 的事件,使用框图方式显示动作与结果。 除此外,还可以:描述工作流的方式; 描述对象内部的工作。 活动图由起始状态、终止状态、状态、 活动、转移、分支、对象、同步棒以及 泳道组成。
2.1 用例图
选择工具 文本框
注释 注释连接线
包 用例 参与者 单向关系 依赖关系 泛化关系
在工具栏按鼠标右键,自 定义工具栏
绘图工具栏
添加了关联工具 的工具栏
2.1.1 参与者
Rose操作方法介绍

Rational Rose 基本操作实验1-1:进入Rational Rose2003集成环境。
操作步骤:(1)打开“开始”菜单,选择“程序”命令(2)在“程序”菜单中选择“Rational Software”,然后选“Rational Rose Enterprise Edition”命令(3)进入Rational Rose2003界面,如图1.1所示。
图1.1 Rational Rose系统界面实验1-2:标题栏的使用操作步骤:利用控制菜单栏、是最大化,最小化,关闭按钮对系统界面进行控制。
(1)左键点击标题栏右上角,然后再选择最大化、最小化、移动、关闭等相应的命令菜单(2)点击右上角的最大化、最小化以及关闭按钮。
如图1.2图1-2 标题栏的使用实验1-3:菜单栏的使用(1)了解几种基本的菜单的操作方法图1-3 菜单栏的使用实验1-4:工具栏的使用操作步骤:(1)在工具栏空白处右键点击(2)选择“Customize……”菜单,出现下图-4所示的“自定义工具栏”对话框(3)如果想加入按钮,选中想加入的工具按钮,双击或者点击“添加(A)->”按钮(4)如果想去除掉在工具栏中的按钮,在当前工具栏按钮中选中它,并双击或者点击“-<删除(R)”按钮(5)按“关闭”按钮返回图1-4 工具栏的使用实验1-5:绘制UML模型。
UML模型的几种图的建立具体共性,其操作步骤如下:(1)新建a)在浏览器中选择相应的视图,点击鼠标右键,在弹出菜单中选择“New”菜单,然后在弹出的菜单中选择所要建立的相应的元素,如下图-5b)在浏览器中出现新建立的模型,命名c)双击建立的新元素,在工作区间打开d)填写相应的规范e)从工具栏中选取相应元素按钮的进行建模(2)修改a)双击所要修改的模型元素,在工作区间打开b)根据需求,对模型图进行修改(3)删除a)选中所要删除的元素b)鼠标右键点击,在弹出菜单中选择“Edit”菜单,再从其子菜单中选择“delete frommodel”。
RationalRose详细介绍和例子详细操作

使用Rational Rose 进行UML可视化建模本课程以某所大学的《在线选修课程管理系统》为例来介绍怎样使用Rational Rose 进行UML可视化建模。
最终递交三个文件:regist.mdl, regist.sql, VB的代码或Java的代码。
内容:一、系统描述 (2)二、用例图(Use Case View) (2)三、活动图(Activity Diagram)(建立选修课程目录表) (5)四、相关的包和类以及简单类图 (11)五、用例实现图(Use Case Realization Diagram) (13)六、顺序图(Sequence Diagram)与合作图(Collaboration Diagram) (15)七、类图中的关系(Relationships) (18)八、类图中的操作与属性 (20)九、类图中的泛化 (22)十、状态图(Statechart Diagram) (26)十一、构件图(Component Diagram) (31)十二、部署图(Deployment Diagram) (34)十三、生成程序代码 (35)十四、创建数据库设计 (40)十五、附件1:转换后的Visual Basic程序 (44)十六、附件2:转换后的Java程序 (45)十七、附件3:生成的SQL语句 (46)一、系统描述1.大学教师选择本学期要教授的课程,每位教师最多只能上报4门课程。
2.教师选课结束后,教务管理人员进行协调和确认教师的课程,并创建本学期的课程目录表,向学生公布。
2.学生填写课程选修表,每个学生最多选修4门课程;每门选修课程的学生数最多为10人,最少为3人。
人数达到10人时,停止学生登记注册此门课程;3.学生选课结束后,系统自动取消人数少于三人的课程。
4.学生按最终的课程表到财务处办理收费手续(billing system)。
5.教师可查询所教课程的学生花名册(roster)。
rational rose使用教程

2020/3/1
2.3.1创建参与者
• (1)在工具栏中选择“Actor”,光标的形状变成加号。 • (2)在用例图中要放置参与者符号的地方单击鼠标左键,键入新参与者的名称
,如“客户”。 • 若要简要的说明参与者,可以执行以下步骤: • (1)在用例图或浏览器中双击参与者符号,打开对话框,而且已将原型
1.1 Rational Rose可视化环境组成
浏览器: 用于在模型中迅速漫游。 文档工具:用于查看或更新模型元素的文档。 工具栏: 用于迅速访问常用命令。 框图窗口:用于显示和编辑一个或几个UML框图。 日志:用于查看错误信息和报告各个命令的结果。
1.2浏览器和视图
浏览器是层次结构,用于在Rose 模型中迅速漫游。在浏览器中显示 了模型中增加的一切,如参与者、 用例、类、组件等等。Rose浏览器 见图。
框。
2020/3/1
2020/3/1
2.3.3记录参与者和用例之间的关系
• (1)从工具栏中选择关联关系箭头。 • (2)将光标定位在用例图中的参与者上,单击鼠标左键并
将光标移动到用例符号上,然后释放鼠标左键。 • 若要简要的说明关系,可以执行以下步骤: • (1) 在用例图中双击关联关系符号,打开对话框。 • (2) 在默认情况下,将显示对话框中的“General”选项卡
、参数类型、参数缺省值和操 形表示
作的返回值的类型等
Account
- balance : double = 1
+ Deposit(amount : double) : int + ComputeInterest() : double
类名 斜体为抽象类
缺省 值 返回值 类型
参数 列表
Rational_Rose[UML建模]_教程+使用详细讲解
![Rational_Rose[UML建模]_教程+使用详细讲解](https://img.taocdn.com/s3/m/e50776a2f61fb7360a4c6512.png)
Rational Rose 简介Rose模型(包括所有框图、对象和其他模型元素)都保存在一个扩展名为.mdl的文件中。
1. 环境简介1.1 Rational Rose可视化环境组成Rose界面的五大部分是浏览器、文档工具、工具栏、框图窗口和日志。
见图1-1。
图1-1:Rose界面●浏览器:用于在模型中迅速漫游。
●文档工具:用于查看或更新模型元素的文档。
●工具栏:用于迅速访问常用命令。
●框图窗口:用于显示和编辑一个或几个UML框图。
●日志:用于查看错误信息和报告各个命令的结果。
1.2浏览器和视图浏览器是层次结构,用于在Rose模型中迅速漫游。
在浏览器中显示了模型中增加的一切,如参与者、用例、类、组件等等。
Rose浏览器见图1-2。
浏览器中包含四个视图:Use Case视图、Logical视图、Component视图和Deployment 视图。
点击每个视图的右键,选择new就可以看到这个视图所包含的一些模型元素。
图1-2:Rose浏览器1.3框图窗口在图1-3所示的框图窗口中,我们可以浏览模型中的一个或几个UML框图。
改变框图中的元素时,Rose自动更新浏览器。
同样用浏览器改变元素时,Rose自动更新相应框图。
这样,Rose就可以保证模型的一致性。
图1-3:框图窗口2.UML各类框图的建立2.1建立用例图use case diagram从用例图中我们可以看到系统干什么,与谁交互。
用例是系统提供的功能,参与者是系统与谁交互,参与者可以是人、系统或其他实体。
一个系统可以创建一个或多个用例图。
●创建用例图(图2-1-1)在浏览器的Use Case视图中,双击Main,让新的用例图显示在框图窗口中。
也可以新建一个包(右击Use Case视图,选择new→package,并命名),然后右击这个新建包的,选择new→use case diagram。
对系统总的用例一般画在Use Case视图中的Main里,如果一个系统可以创建多个用例图,则可以用包的形式来组织。
Rational-Rose-用例图、顺序图、活动图、类图、状态机图-实例

ational-Rose-用例图、顺序图、活动图、类图、状态机图-实例
状态机图
一、问题描述
面对目前大学生日益懒惰的现象,某企业计划开发一套针对大学食堂的网上自动订餐、派送、支付等功能的电子商务系统。
具体包括(但不限于)
1、任何人均可实名注册并登录系统;
2、当日菜品浏览和订餐;
3、可实时浏览订单状态。
如果尚未配送,可撤销菜单;
4、授权人员进行配送并更新状态;
5、支付方式可以是货到付款,可以是从订餐者个人校园卡中扣除(如果余额不足则支付和订餐失败),也可以是其他方式;
6、正常结束和异常结束;
7、系统可实现整体的查询和统计分析功能。
请根据上述需求给出系统的用例图、类图、活动图(泳道)和顺序图和状态机图。
二、解题思路
1、用例图
(1)、一般客户用例图
图1、客户用例图(2)维护人员用例图
图2、维护人员用例图
2、活动图
(1)、一般客户活动图
图3、客户活动图(2)、维护人员活动图
图4、维护人员活动图3、类图
图5、类图4、顺序图
图6、顺序图5、状态机图
(1)客户状态机图
图7、客户状态机图(2)系统维护人员状态机图
图8、系统维护人员状态机图
三、实验总结
通过此次操作,对Rational rose软件有了更进一步的了解,对用例图,活动图,顺序图和类图的画法也有了进一步的学习,不过尚有一些问题,如顺序图中对于关系不能删除修改,对于需要分支的关系也无法建立,类图中的关系掌握的不是特别熟练,还有问题描述的有些出入,不知道是在客户订餐后还是在支付后,维护人员才会配送并更新状态,总之,还需要老师您的讲解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
2 关系及其应用
2.3 泛化关系
– 定义
• 在一个更一般的模型要素和另一个较具体的模型 要素之间存在的一种关系,通常用于表示类(包 括用例、参与者等)之间的继承关系
– 表示方法
• 工具箱中: • 模型图中:一条带空心三角形箭头的实线(箭头 方向从具体用例指向一般用例)
16
2 关系及其应用
2.3 泛化关系
4
1 基本概念
1.1 参与者
– 定义
• 是直接与系统相互作用的系统、子系统或类的外 部实体的抽象。它是用户所扮演的角色,是系统 的用户。每个参与者定义了一个角色集合。通常, 一个参与者可以代表一个人、一个计算机子系统、 硬件设备或者时间等角色。典型的参与者如销售 部经理、销售员和结帐系统。
– 图形表示
19
参与者之间也像用例一样可能存在泛化关系。 参与者之间也像用例一样可能存在泛化关系。 供应代理( agent) 供应代理(supplier agent)供货代表 Restocker)收款人(Collector) (Restocker)收款人(Collector)
20
2 关系及其应用
2.4 关系的扩展
6
1 基本概念Hale Waihona Puke 1.2 用例– 定义
• 对一组动作序列的描述,系统通过执行这一组动作序 列为参与者产生一个可观察的结果
– 用例特征
• • • • • 说明了系统具有的一种行为模式 说明了一个参与者与系统执行的一个相关的事务序列 提供了一种获取系统需求的方法 提供了一种与最终的用户和领域专家进行沟通的方法 提供了一种测试系统的方法
32
识别用例
识别用例最好的办法就是从分析系统的参与者开 考虑每个参与者是怎样使用系统。 始 , 考虑每个参与者是怎样使用系统 。 使用这种 策略的过程中可能会找出一个新的参与者, 策略的过程中可能会找出一个新的参与者 , 这对 完善整个系统建模很有帮助。 完善整个系统建模很有帮助。 在识别用例的过程中, 在识别用例的过程中 , 通过以下的几个问题可以 帮助识别用例: 帮助识别用例: (1)特定参与者希望系统提供什么功能? )特定参与者希望系统提供什么功能? (2)系统是否存储和检索信息?如果是,这个行 )系统是否存储和检索信息?如果是, 为由哪个参与者触发? 为由哪个参与者触发 (3)当系统改变状态时,通知参与者吗? )当系统改变状态时,通知参与者吗? (4)存在影响系统的外部事件吗? )存在影响系统的外部事件吗? (5)是哪个参与者通知系统这些事件? )是哪个参与者通知系统这些事件?
27
28
总结: 总结:用例模型的表示法
用例是参与者发起的,参与者(也许是发起者, 用例是参与者发起的,参与者(也许是发起者, 但不是必须的) 但不是必须的)能够从用例的执行中获得有价 值的事物。 值的事物。 用例分析的优点在于它能够展现出系统和外部 世界之间的边界。参与者是典型的系统外部实 世界之间的边界。 而用例是典型地属于系统内部。 体,而用例是典型地属于系统内部。 参与者, 参与者,用例和互连线共同组成了用例模型 model) (use case model)
29
每个用例是一组场景的集合, 每个用例是一组场景的集合,而每个场 景又是一个步骤序列。 景又是一个步骤序列。 用例图的场景的文档,每个用例中的场 用例图的场景的文档, 景描述通常要描述下列的内容: 景描述通常要描述下列的内容: 发起用例的参与者, 发起用例的参与者,用例的假设条 用例中的前置条件,场景中的步骤, 件,用例中的前置条件,场景中的步骤, 场景完成后的后置条件, 场景完成后的后置条件,从用例中获益 的参与者。 的参与者。
关系反应了参与者和用例之间、用 例和用例之间以及参与者和参与者之间 的相互作用。 在一个用例图中,可能会出现关联 关系、依赖关系、泛化关系以及这三种 关系的扩展形式:扩展关系、包含关系 和精化关系。
11
2 关系及其应用
2.1 关联关系
关联关系表示一种通信路径,它存在于参 与者和用例之间,提供用例和参与者之间的通 信途径。建立通信之后,信息可以双向流动。 关系方向显示的不是信息的流动方向,而 是谁启动信息。
3
1 基本概念
UML中的用例图描述了一组用例 、 参与 中的用例图描述了一组用例、 中的用例图描述了一组用例 者以及它们之间的关系。 者以及它们之间的关系 。 用例图包括以 方面内容。 下3方面内容。 方面内容 (1)用例(Use Case) )用例( ) (2)参与者(Actor) )参与者( ) (3)依赖、泛化以及关联关系 )依赖、
12
2 关系及其应用
2.1 关联关系
– 表示
• 工具箱中:一个直角直线 • 模型图中:一条直线或者 一条带箭头的直线
– 关联命名
• 一个动词或者一个动词短 语,用于指明关系的类型 或者目的。 关联关系表示通信途径
13
2 关系及其应用
2.1 关联关系
– 在用例图中,通常存在两种类型的关联:
• 单向关联
用例图及其应用
1
内 容
基本概念 关系及其应用 参与者规范及应用 用例规范及应用 用例视图
2
一、用例图概述
画好用例图( 画好用例图(Use Case Diagrams)是由软 ) 件需求到最终实现的第一步, 件需求到最终实现的第一步,在UML中用例 中用例 图用于对系统、子系统或类的行为的可视化, 图用于对系统、子系统或类的行为的可视化, 以便使系统的用户更容易理解这些元素的用 途,也便利了软件开发人员最终实现这些元 素。 用例是能够帮助分析员和用户确定系统使用 用例是能够帮助分析员和用户确定系统使用 情况的UML组件。一组用例就是从用户的角 组件。 情况的 组件 一组用例就是从用户的角 度出发对如何使用系统的描述。 度出发对如何使用系统的描述。
• 用小人图符表示
5
1 基本概念
1.1 参与者
– 参与者的识别
• • • • • • • • • • • 谁将使用系统的主要功能? ■谁将需要系统的支持来完成他们的日常任务? ■谁必须维护、管理和确保系统正常工作? ■谁将给系统提供信息、使用信息和删除信息? ■系统需要处理哪些硬件设备? ■系统使用了外部资源吗? ■系统需要与其他什么系统交互吗? ■谁或者什么对系统产生的结果感兴趣? ■一个人同时使用几种不同的规则吗? ■几个人使用相同的规则吗? ■系统使用遗留下来的应用吗?
22
包含关系: 包含关系: 用例间的包含关系使用虚线+ 用例间的包含关系使用虚线+箭头表 并加入构造型《include》 示,并加入构造型《include》
23
2 关系及其应用
2.4 关系的扩展
• 使用包含关系的三种情况: a.如果有多个用例,并且这些用例包含大量类似 的行为,应该考虑将这些类似的行为通过包含关 系包含到用例中 b.对两个或多个互相独立的用例建模时做了重复 的工作,可以通过包含关系包含这些重复的工作 c.如果某个行为可能会引入冗余,或者,当行为 发生变化时可能导致不一致性,这时,应该对这 种行为进行孤立建模并将它包含到用例中
9
1 基本概念
1.4 用例模型
一个用例模型由一个或者多个用例图和 所有的支持文件(诸如用例规范和参与 者定义等)所构成。用例规范是大多数 用例模型的产物,而用例图充当将需求 模型综合在一起的粘胶剂。用例模型应 当从项目投资者的角度进行开发,而不 是从开发者的(通常是技术)观点去开 发。
10
2 关系及其应用
24
2 关系及其应用
2.4 关系的扩展
包含关系举例
25
26
2 关系及其应用
2.4 关系的扩展
–精化关系 精化关系
• 精化关系在不同的语义层或者开发阶段连接两个 或者多个模型要素。它表示了某些在一个特定的 细节层次上规定的东西的更加全面的规格说明。 例如,一个设计类就是一个分析类的一种精化。 在一个精化关系中,源模型要素是一般的,在定 义上更加概括;而目标模型要素更加具体并得到 了进一步的精化。
• 双向关联
Actor1 与 UseCase1 Actor2 与 UseCase1
14
2 关系及其应用
2.2 依赖关系
– 定义
• 存在于两个模型要素之间的一种关系,其中一个 模型要素的改变将影响另一个模型要素
– 表示方法
• 工具箱和模型图中均表示为一个带箭头的虚线 • 画图时,拖动鼠标从客户到提供者画出关联关系
用例之间的泛化关系
参与者之间的泛化关系
17
泛化: 泛化: 在用例继承中, 在用例继承中,子用例可以从父用例 继承行为和含义, 继承行为和含义,还可以增加自己的行 为。 任何父用例出现的地方子用例也可 以出现。 以出现。
18
如果一台饮料销售机建模, 如果一台饮料销售机建模,这台销售机允许顾 客选择买一罐饮料或者买一杯饮料。 客选择买一罐饮料或者买一杯饮料。Buy Soda 就是一个父用例 Buy a can of Soda 和Buy a cup of Soda就是子用例。用例间的泛化关系 Soda就是子用例。 就是子用例 和类间的泛化关系表示方法相同。 和类间的泛化关系表示方法相同。
8
1 基本概念
1.3 事件流
– 事件流是用例完成需求行为的事件描述。 – 事件流的目的是建立用例中逻辑流程的文档, 详细描述系统用户的工作和系统本身的工作, 既包括正常状态下系统完成需求行为的事件, 也包括在其他状态下不能完成需求行为的事 件。 – 事件流通常包括:
• • • • 简要说明 前置条件 事件流 后置条件
30
分组: 分组: 在一些用例中, 在一些用例中,用例的数目可能非 常多,这个就需要组织这些用例。 常多,这个就需要组织这些用例。这种 情况在一个系统包含很多个子系统时就 会出现。 会出现。 还可以把相关的用例放在一个包中