Rose生成的代码框架 - 共21页

合集下载

Rational-Rose建模讲解(共102张)

Rational-Rose建模讲解(共102张)
第6页,共102页。
Rose的基本操作
• 自定义工具栏
第7页,共102页。
Rose的基本操作
• 系统弹出自定义工具栏窗口,在左面窗口中选中当前工具栏中没 有(méi yǒu)的按钮,点击“添加(A)”按钮即可。
第8页,共102页。
Rose的基本操作
• 保存(bǎocún)模型
右键点击浏览器窗口中的“untitled”,在弹出的快捷菜单中选择 “save”,或者选择主菜单“File”下的“save”子菜单,系统弹 出文件保存对话框,如图所示。
学生(Student)
教师(Teacher) 系统管理员(Administrator) 学籍档案系统(Archive System)
第20页,共102页。
2. 确定业务(yèwù)需求用例
• 以下问题可以帮助我们更好地标识系统的用 例:
每个参与者的特定任务是什么? 是否每个参与者都要从系统中创建、存储、改变、移动或
• 主事件流表示正常情况下执行者与系统之间的信息交 互及动作(dòngzuò)序列,备选事件流则表示特殊情况或异 常情况下的信息交互及动作序列。
• 应给出每个用例的规格说明。
第25页,共102页。
用例“选择课程”的规格(guīgé)说明
第26页,共102页。
• 用例“选择课程”的规格(guīgé)说明
• 通常是围绕参与者创建用例图。
第28页,共102页。
使用Rose创建(chuàngjiàn)用例模型
1. 在Rose中创建参与者(actors)
创建的角色应放在Use-Case Model包中的Actors包中 比较好,如果模型结构中没有这样的包,可以先创建 Actors包,之后按下面的步骤创建角色: (1) 在浏览器窗口中的Actors包上单击鼠标右键,显示 弹出菜单;

Rational_Rose介绍

Rational_Rose介绍

抽象参 与者

规范窗口显示 和修改用例的 属性和关系 ◦ 通用标签 ◦ 模型图标签 ◦ 关系标签 ◦ 文件标签
构造型一般不用 于用例,需要可 以增加
区分用例的 优先次序 抽象用例,不由 参与者直接启动, 而是为其它用例 提供功能
用例所拥有 的模型图
与其他用例 或参与者存 在的关联
所涉及的辅 助文档
◦ 对象 ◦ 链 ◦ 消息
选择工具 注释 对象
文本
类实例
对象间的链接 反身链接 增加消息 增加反向消息
显示对象间的信息流
反方向显示对象间的信息流
通过单击对象间的 链接产生消息。要 在协作图中增加消 息,必须先建立对 象间的链接

时序图→协作图
◦ 打开时序图 ◦ 选择Browse→Create collaboration Diagram 或按F5
选择工具
文本
注释 状态 初始状态 终止状态 转换 反身转换
可同样通过 动作规范窗 口设置动作
主要内容
Rational Rose 简介 用例视图 逻辑视图 构件视图 部署视图



提供当前模型的物理视图,对系统的静态实现视 图进行建模 构件图显示软件构件的组织以及构件间的依赖关 系,包括源代码构件,二进制代码构件以及可执 行构件 构件间的调用表示为构件间的依赖关系
浏览区窗口中的视图
用例视图 逻辑视图 构件视图 部署视图 只关心系统的高级 关注系统如何实现 功能,不关心系统 可看出系统实现 关心系统的实际部 用例中提到的功能 的具体实现细节。 的物理结构,包 署情况。包括:进 包括:类,类图, 包括:用例图,活 括:构件,构件 程,处理器,设备 交互图,状态图, 动图,交互图,包 图,包 活动图,包

RationalRose由代码生成类图

RationalRose由代码生成类图

Rational Rose由代码生成类图Rational Rose由代码生成类图2010-09-28 23:31一正向工程1、设置默认语言为Java,Tools-Options-Notation-default:选择Java。

2、设置环境变量ClassPath,Tools-Java/j2ee-ProjectSpecification-ClassPath:具体路径设置为正向工程生成java文件要保存的目录,一般为项目的src目录。

3、打开设计好的类图,选中要生成的Java文件的类,然后通过Tools-Java/J2ee-GeneralCode生成java文件.4、正向工程注意事项:以上是正向工程的操作流程,过程比较简单,主要是操作过程中以及设计类时有些问题大家需要注意一下,以后实际操作时会节省一些时间,主要有以下几点:1).生成代码前将Project Specifiction属性页Code Generation标签项中的GenerateRoseID和Generate Default ReturnLine两个复选框的默认选中状态去掉,以免生成一些我们不需要的信息2).设计model等值对象时,不必为其设计getter(),setter()方法,将对应字段属性设置为:proertytype:simple即可,正向工程会自动生成其getter,setter方法。

3).类之间调用关系的设计:一般A类调用B类,最终代码中经常以在A类里初始化一个b类的变量。

在设计时,不要在A类中设计一个B类类型的属性。

这种关系要在AssociationSpecification中通过为RoleA指定值来实现。

4).类设计时要按开发规范写好类和方法的注释,正向工程会将注释生成到代码中,开发过程中注释如有改动,可通过逆向工程将类图和代码保持同步。

二逆向工程操作流程1.点击Tools-Java/J2ee-Reverse Engineer,调出JavaReverseEngineer 对话框。

ROSE

ROSE

右击工具栏 选定制工具 栏
35
实例一 在UseCase视图下创建用例图
36
注意
只有不影响代码生成的图形元素可用中文命名 按Rose各种框图设计比较繁琐,但不能随意简化, 否则对系统认识不完整,最终以说清楚为准。
37
参考书与资源链接
图书馆有关UML的书:【关键词:UML】
UML with Rational Rose从入门到精通
2
Rose界面组成[1]
ROSE的界面分为三个部分——Browser窗口、 Diagram窗口和Document窗口。Browser窗口 用来浏览、创建、删除和修改模型中的模型元素; Diagram窗口用来显示和创作模型的各种图;而 Document窗口则是用来显示和书写各个模型元 素的文档注释。
38
11
Use Case视图[2]
在Use Case视图的图的类型有:用例图、类 图、交互图、顺序图、状态图、活动图。
12
Use Case视图[3]
创建后在浏览器下如下显示
13
Logical视图[1]
Logical视图
关注系统如何实现使用案例中提出的 功能,表达出软件设计的结果。 主要描述实现系统内部功能性工作的 细部设计,这些设计包括静态结构和 动态的行为 。 利用这些细节元素开发人员构造系统 详细设计。
Component视图[2]
在Component视图的图的类型有:组件图。
18
Component视图[3]
创建后在浏览器下如下显示
19
Deployment视图[1]
Deployment视图 关注系统的实际部署,可能与系 统的逻辑结构有所不同。
例:系统可能用三层逻辑结构,界面 和业务逻辑分开,业务逻辑和数据库 逻辑分开。但部署可能是两层,界面 放在一台机器上,业务和数据库放在 另一台机器上。

ROSE画图--UML类图关系大全

ROSE画图--UML类图关系大全

UML类图关系大全(ROSE画图)1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。

在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。

对象引用本身就是有向的,更适合表达我们所讨论的那种关系。

所以这种关系在设计的时候比较少用到,关联一般都是有向的。

使用ROSE 生成的代码是这样的:class C1...{public:C2* theC2;};class C2...{public:C1* theC1;};双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。

单向关联:C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。

没有生命期的依赖。

一般是表示为一种引用。

生成代码如下:class C3...{public:C4* theC4;};class C4...{};单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。

自身关联(反身关联):自己引用自己,带着一个自己的引用。

代码如下:class C14...{public:C14* theC14;};就是在自己的内部有着一个自身的引用。

2、聚合/组合当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。

聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。

这句话怎么解,请看下面组合里的解释)。

代码如下:class C9...{public:C10 theC10;};class C10...{};组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。

但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。

Rose使用示例

Rose使用示例

附录3 建模工具Rose的使用可视化建模使用标准图形元素直观地构造系统,面向对象方法的标准图形建模语言是UML。

手工绘制UML图形是一件困难的事情,只有借助于建模工具才能提高工作效率和工作质量。

Rational Rose就是一种使用UML快速开发应用程序的建模工具之一。

它不仅支持UML9种图形,而且具有正向和逆向转出工程代码的特性,包括C++、Java、VB等语言代码。

也能支持数据模型的建立,并生成DDL脚本文件。

本附录以一个图书订单处理业务为例,介绍如何使用Rose进行面向对象分析与设计。

1.Rose基本结构使用Rose的第一步会出现图1所示的启动窗口。

该窗口提示是创建一个新模型还是打开一个既有模型(后缀为.mdl)。

如果创建新模型,可以选择图1所显示的可用框架,然后按下OK按钮,由此创建的模型中自动装入该框架的默认包、类和组件。

或者选择Cancel 创建一个不使用任何框架的模型。

图1 启动Rose第一步确定后,就会打开图2所示的Rose主界面。

主界面包含五大部分:导航窗口、绘图窗口、工具栏、文档窗口和日志窗口。

它们的作用分别介绍如下:图1 Rose 窗口界面● 导航窗口用于在模型中迅速漫游。

导航窗口以树状结构显示了模型中的所有元素,包括参与者、用例、类、组件、图等。

如同文件一样用户可以创建包,包下还可以创建子包,从而可以将繁多的元素纳入不同的包,达到有效组织和管理的目的。

在导航窗口中有四个视图根节点:(1) 用例视图(Use Case V iew ):用于管理需求分析获取的所有用例、参与者和用例图。

(2) 逻辑视图(Logical View ):分析和设计完成的所有制品放置在逻辑视图中,包括所有的类、类图、用例实现的交互图等。

(3) 组件视图(Component V iew ):逻辑视图中的类实现后成为软件组件,可以在组件视图中创建这些组件,并绘制组件图描述它们之间的依赖关系。

(4) 部署视图(Deployment View ):系统最终要实现物理部署,在部署视图中创建物理系统中的节点和节点的连接,并描述软件组件在物理节点中的分布。

Rose生成代码

Rose生成代码
然后按“edit set”将“propertyType”改为“simple”
*/
public GatherColumnAction()
{
}
3、自动生成DTO的set和get方法
右键单击要Leabharlann 成代码的类,选open standard Specification->Attributes,再右键单
击要生成setter/getter的属性,选specification->java.....
4、单击Tools > Java/J2EE > Generate Code
5.单击“Edit…”按钮设置代码输出路径
5.Ok,成功后就可以到指定的classpath下看代码了。
注:
1、
自动生成的代码:
//Source file: E:\\fcas\\18综合查询\\1804综合查询\\03分析设计\\03 Rose设计\\gov\\mof\\fasp\\fcas\\system\\gathercolumn\\GatherColumnAction.java
分享主题
时间
2010-8-19
记录员
武仕强
分享主题描述
Rose利用模型生成代码
具体内容
1、做好详细设计,每个方法的输入、输出、说明文字
2、选择你要转化的包或者类,.单击tools>java/j2ee> Syntax Check来检查目标代码是否符合规范,
3、察看rose log窗口(下方)察看检验结果,如果有错误,即errors那么生成的代码很可能无法通过编译
package gov.mof.fasp.fcas.system.gathercolumn;

rose教程

rose教程

第一章UML简介Rose支持的开发视图及其作用:1.Business Use Case框图表示整个机构提供的功能。

用来设置系统情景和形成创建用例的基础。

它显示了业务用例和业务角色之间的交互。

业务用例表示公司执行的过程,业务角色表示业务要交互的对象。

e Case框图表示用例和角色间的交互。

用例表示从用户角度对系统的要求,因此表示系统功能。

角色是系统主体,表示提供和接收系统信息的人或系统。

这种框图西那是哪个角色使用用例,并显示角色何时从用例收到信息。

业务用例和用例并非一一对应。

3.Activity框图描述工作流。

4.Sequence框图显示用例的功能流程。

框图顶部显示涉及的角色和对象,每个箭头表示角色与对象或对象与对象之间为完成所需功能而传递的消息。

只显示对象而不显示类。

5.Collaboration框图内容与Sequence相同,但表现形式不是按照时间顺序,而是根据对象平铺。

6.Class框图显示类的内容和相互关系。

7.Statechart框图对复杂对象,可能包含多个状态。

使用该框图来描述多个状态之间的转换关系。

ponent框图描述模型的物理视图,显示系统中软件组件及相互关系。

一个.h文件是一个组件,一个.cpp文件是一个组件,一个.exe也是一个组件。

通过该框图描述它们之间的依赖关系。

一般一个可执行文件及其所依赖的源文件对应着一个Component框图。

9.Deployment框图描述网络的物理布局和各个组件的位置。

RUP(Rational Unified Process)的四个阶段和所使用的框图1.开始收集信息和进行概念验证。

使用Business Use Case框图、Use Case框图。

2.细化细化用例和作出结构性决策。

分析、设计、编码和测试。

使用Use Case 框图、Activity框图、Sequence框图、Collaboration框图、Statechart 框图、Component框图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

{ return null; } /** update preparedStatement @param form @throws ng.Exception @roseuid 4157B0D00280 */ public void update(ActionForm form) throws Exception { } /** delete preparedStatement @param form @throws ng.Exception @roseuid 4157B10C02E1 */ public void delete(ActionForm form) throws Exception { } } . delete update
theStudentDAO=new
@param form @return java.util.Collection @throws java.sql.SQLException @roseuid 4157B04D03C2 */ public Collection query(ActionForm form) throws SQLException { return ቤተ መጻሕፍቲ ባይዱull; } /** relation boolean connection=dataso theStudentDAO=new
true false datasource urce.getConnection() connection StudentDAO StudentDAO(connection) theStudentDAO update @param form @throws ng.Exception @roseuid 4157B0B802D6 */ public void update(ActionForm form) throws Exception { } /** relation true false datasource urce.getConnection() connection StudentDAO StudentDAO(connection) theStudentDAO delete @param form @throws ng.Exception @roseuid 4157B0F901D5 */ public void delete(ActionForm form) throws Exception { } }
2.2
StudentBO.java
//Source file: c:\\a\\school\\schoolmanager\\bo\\StudentBO.java package school.schoolmanager.bo; import school.schoolmanager.dao.DAOObject; import school.schoolmanager.dao.StudentDAO; import javax.sql.DataSource; import java.sql.Connection; import org.apache.struts.action.ActionForm; import java.util.Collection; import java.sql.SQLException; public class StudentBO { private DataSource datasource; private Connection connection; public DAOObject theDAOObject; public StudentDAO theStudentDAO; /** @param datasource @roseuid 4157B33F016E */ public StudentBO(DataSource datasource) { } /** datasource connection StudentDAO StudentDAO(connection) theStudentDAO @param form @throws ng.Exception @roseuid 4157AF750187 */ public void add(ActionForm form) throws Exception { } /** datasource )
/** Sets the value of the special property. @param aSpecial the new value of the special property */ public void setSpecial(String aSpecial) { special = aSpecial;} }
connection=dataso theStudentDAO=new
2.3
StudentDAO.java
//Source file: c:\\a\\school\\schoolmanager\\dao\\StudentDAO.java
package school.schoolmanager.dao; import school.schoolmanager.form.Student; import school.schoolmanager.db.ConnectionPool; import java.sql.Connection; import org.apache.struts.action.ActionForm; import java.util.Collection; import java.sql.SQLException; public class StudentDAO implements DAOObject { private Connection conn; public Student theStudent; public ConnectionPool theConnectionPool; public DAOObject theDAOObject; /** @roseuid 4371588500EA */ public StudentDAO() { } /** this.conn=conn @param conn @roseuid 436EB8EB035B */ public StudentDAO(Connection conn) { } /** insert preparedStatement @param form @throws ng.Exception @roseuid 4157AF9B0376 */ public void add(ActionForm form) throws Exception { } /** select preparedStatement @param form @return java.util.Collection @throws java.sql.SQLException @roseuid 4157B0720018 */ public Collection query(ActionForm form) throws SQLException select insert
Rose
School Schoolmanager Bo StudentBO.java RoomBO.java TeacherBO.java Dao StudentDAO.java RoomDAO.java TeacherDAO.java DAOObject.java Controller StudentController.java RoomController.java TeacherController.java Form Student.java Room.java Teacher.java
2.1
Student.java
//Source file: c:\\a\\school\\schoolmanager\\form\\Student.java package school.schoolmanager.form; import org.apache.struts.action.ActionForm; public class Student extends ActionForm { private String student_id; private String student_name; private String birthday; private String sex; private String special; /** @roseuid 43715F1B0148 */ public Student() {}
/** Access method for the student_id property. @return the current value of the student_id property */ public String getStudent_id() { return student_id;} /** Sets the value of the student_id property. @param aStudent_id the new value of the student_id property */ public void setStudent_id(String aStudent_id) {student_id = aStudent_id;} /** Access method for the student_name property. @return the current value of the student_name property */ public String getStudent_name() {return student_name;} /** Sets the value of the student_name property. @param aStudent_name the new value of the student_name property */ public void setStudent_name(String aStudent_name) {student_name = aStudent_name;} /** Access method for the birthday property. @return the current value of the birthday property */ public String getBirthday() {return birthday;} /** Sets the value of the birthday property. @param aBirthday the new value of the birthday property */ public void setBirthday(String aBirthday) {birthday = aBirthday;} /** Access method for the sex property. @return the current value of the sex property */ public String getSex() { return sex;} /** Sets the value of the sex property. @param aSex the new value of the sex property */ public void setSex(String aSex) { sex = aSex;} /** Access method for the special property. @return the current value of the special property */ public String getSpecial() { return special; }
相关文档
最新文档