UML实验报告

                                

UML实验报告

                           学院:                    

                              班级:                    

                              学号:                    

                              姓名:                    

UML实验报告

实验一:用例图

实验结果

小结实验心得体会:

用例模型用于需求分析阶段,它描述了待开发系统的功能需求,并驱动了需求分析之后各阶段的开发工作。用例图是UML中用来对系统的动态方面进行建模的7种图之一。用例图描述了用例、参与者以及它们之间的关系。用例图从用户角度描述系统功能,并指出各功能的操作者。通过本次实验,我熟悉Rational Rose建模环境,更加清楚的了解了用例图的语义和功能,如何清晰明了的识别参与者、用例,学会了如何使用事件流描述用例。同时掌握了用例间的类属关系、Include关系和Extend关系的语义、功能和应用。最后通过本次实验学习了如何使用用例图为系统的上下文以及系统的需求建模。

思考题:

1. 如果要删除参与者、用例,请问是在导航窗口删除,还是在绘图窗口删除?

答:都可以删除,但在绘图窗口中有两种删除方式:一种是只删除参与者、用例,而不改变 其在导航窗口中的存在,另一种是从建模中完全删除。

2. 如果要删除参与者和用例的联系,用例和用例的联系,请问是在绘图中删除,还是

在参与者或用例的设置对话框中删除?

答:都可以删除。

实验二:类对象模型的建立

实验结果:

小结实验心得体会:

类图是面向对象系统建模最常用的图,描述了类图、接口集、协作以及它们之间的关系。类图描述了系统的静态设计视,该视主要体现系统的功能需求,即系统应该提供给用户的服 务。通过本次实验,加深了我对类图语义的理解和功能的应用,掌握了类之间的联系,关联、依赖、聚合等,同时基本掌握了在Rational Rose中绘制类的关联、依赖、泛化关系。

思考题:选中一个模型对象,点击鼠标右键,比较快捷菜单项“Edit——Delete”与“Edit——Delete from Model”,它们二者之间区别在哪里?

答:“Edit——Delete”只是在绘图窗口中删除了模型对象,而“Edit——Delete from Model”则是彻底的删除了模型对象。

实验三:顺序图、协作图

实验结果:

顺序图:

1.归还图书

2.借出图书

协作图:

1.  归还图书

2.  借出图书

小结实验心得体会:

顺序图描述了对象之间的动态合作关系,它强调对象之间消息发送的时间顺序,同时显示对象之间的交互。协作图与顺序图是同构的,Rose可自动转换。顺序图是强调消息的交互作用图,协作图描述了对象间的关系,是强调发送和接收消息的对象的组织结构的交互作用图。 通过本次实验,掌握了对图书管理功能中的借书用例、还书用例进行动态建模。实验过程中由于对Rational Rose工具软件的不熟识,导致出现了不该出现的错误。在设计阶段,顺序图中需要引入边界类和控制类,在识别对象职责的基础上,需要将消息转换为类的方法,为方法定义参数、返回值类型,便于计算机的实现。其中,为方法定义参数、返回值类型的时候,还是不能够快速准确的作出判断。

实验四:活动图

实验结果:

小结实验心得体会:

在UML中,活动图是为系统的动态方面建模的7个图之一。活动图主要是一个流图,它描述了从活动到活动的控制流,它还可以用来描述对象在控制流的不同点从一个状态转移到 另一个状态时的对象流。通过本次实验,我对活动图的语义和功能有了更深层次的理解和应用,并对活动图的组成部分,包括动作状态、活动状态、分支、分叉和泳道、对象流,逐一进行了学习。同时基本掌握了用活动图来描述系统中“借出图书”用例的业务过程。

实验五:状态图

实验结果:

小结实验心得体会:

状态图描述了一个特定对象的所有可能状态,以及引起状态跃迁的事件。状态图用来模拟系统的动态方面,这些动态方面指系统对象按事件发生顺序排序的行为。状态图可以用来描述整个系统、子系统或类的动态方面,还可以用来描述用力的一个脚本。通过本次实验,我熟悉了状态图的基本功能和使用方法。掌握了如何使用建模工具绘制状态图方法。同时完成了图书管理业务中,资源项“ResourceItem”的状态图。

实验六:组件图和部署图

实验结果:

组件图:

 main                                      BO

CO

UI

部署图:

小结实验心得体会:

组件图和部署图是用来为面向对象系统的物理实现建模的两种图。组件图描述了组件、组件间的关系,表示了组件之间的组织和依赖关系,它用来为系统的静态实现视建模。部署图描述了节点和运行其上的组件的配置,它用来模拟系统的静态部署视。通过本次实验,我理解了组件图的基本概念及组件图的应用:逻辑部署。理解了部署图的基本概念。及部署图的应用:物理部署。掌握了组件图和部署图绘制的方法。完成了系统的组件图和系统的部署图。

思考题

1.       为什么要求相对应的类名、组件名和实现组件的文件名相同?

答:相应的名字中能够找到相应的类的信息。如果组件名、类名和 Java 文件名不相同,会 出现实体类的语法错误。

实验七:正向工程

实验结果:

BO、CO、UI均为Java文件包

小结实验心得体会:

正向工程是对一个系统物理结构实现的高层抽象性、逻辑性及独立性设计的传统处理过程。通过本次试验,学会了利用 Rose工具生成代码框架及生成数据库脚本,同时在实现过程中使用转换后的代码和数据库脚本。了解了Java 编程综合练习。

思考题:

1.在本案例中,并未对实体类ResourceTitle 设置主键,系统在生成数据库脚本时是如

何处理的?

答:(1)设置类的持久化特性和主键:在导航窗口右击类,如“Loan”,选择快捷菜单“Open Standard Specification”菜单项,打开类设置对话框。选中“Detail”选项卡中的“Persistent” 特性。点击OK按钮,关闭设置对话框。然后,在导航窗口中展开类的属性,鼠标右击类的某个属性,“Loan”如类的属性“LoanID”选中快捷菜单中的,“Data Modeler”的“Part of Object Identity”属性,这样,在生成数据模型时,该属性就成为表Loan 的主键。(2)创建数据库组件。(3)在导航窗口中选择所生成的数据库模式S_0,单击鼠标右键,选择快捷菜单项“Data Modeler——Forward Engineer”,出现生成数据库脚本的导航界面,鼠标单击“Next”按钮,在导航界面输入脚本文件的保存路径,注意 SQL Server2000 的脚本文件扩展名用.sql。单击“Next”直至完成脚本文件的生成。

2. 本案例中,ResourceTitle 与BookTitle、DiscTitle 的继承关系,SQL Server 20## 关系型

数据库的转换合理吗?如不合理,请问该如何修改?

答:不合理。

 

第二篇:UML建模实验报告

面向对象建模方法与技术综合实验报告

    目:在线选课系统的UML建模

    级:信息081  

    号: 3080702138 

    名:      

指导教师:              

UML建模实验报告

一、用例图

(一) 本次目的

1)        熟悉用例图的基本功能和使用方法。

2)        掌握如何使用建模工具绘制用例图方法。

(二) 要求请完成如下任务:

1)        使用Rational rose 画出选课系统的用例图。

2)   同时对主要功能用例进行详细说明。

                        选课系统用例图如下图所示:

                                      图1

二、 活动图

(一) 本次目的

1)熟悉活动图的基本功能和使用方法。

2)掌握如何使用建模工具绘制活动图方法。

(二) 要求请完成如下任务

用活动图来描述系统中已知用例的业务过程

1)        使用活动图对选课用例或相关用例进行描述。

2)        使用活动图对建立选修课程目录表用例进行描述。

                

                             活动图如下图所示:

                               图2

三、类图

(一) 本次目的

1)   理解类的基本概念;

2)   掌握如何从需求分析中抽象出类的方法及关系;

3)   掌握在Rational Rose中绘制类的操作方法。

(二) 要求请完成如下任务

通过这用例图和活动图我们可以初步了解系统的业务处理流程。现在需要对系统进行静态建模,这就需要从系统的用例图、活动图去寻找和发现重要概念和对象,定义类及关系,使用ROSE创建类图。请完成如下任务:

1)        寻找和抽象出选课用例或相关功能中的类,并进行简要说明。

2)        确定类之间的继承关系已经创建类之间的继承关系,。

3)        请根据教材中示例部分在Rational Rose中绘制类间的关联关系。

                            类图如下图所示:

                                图3

四、序列图及协作图

完成了选课系统的需求分析,并从业务对象中抽象出了类。现在需要对前面所给出的用例进行实现,而用例的实现主要由交互图来指定和描述系统的动态特性。

(一) 本次目的

1)   理解顺序图的基本概念;

2)   理解协作图的基本概念;

3)   掌握在Rational Rose中绘制交互图的操作方法。

(二) 要求请完成如下任务

1)        阅读用例建模得到的用例文档说明和用例图。

2)        根据事件流,确定对象,对选课功能中的主要用例进行动态建模。

3)        根据分析设计情况,进一步发现类,细化各类之间的关系,确定主要类的属性和职责。

                       Add Course 序列图如下所示:

 

                          图4

                  Delete Course 序列图如下所示:

                        

                              图5

                Modify Course 序列图如下所示:

 

                           图6

                 Query Course 序列图如下所示:

                           图7

                 Registrar Login 序列图如下所示:

                            图8

                Select Course序列图如下所示:

                            图9

                    Select Course 协作图如下所示:

                               图10

五、状态图

(一) 本次目的

1)   理解什么状态和状态图;

2)        学会使用UML绘制状态图

(二) 要求请完成如下任务

1)考察课程类对象的状态变化情况并分析,定义状态及迁移及条件,对课程类对象进行状态建模。

2)考虑选课系统的业务流程,对系统进行状态建模,帮助设计人员对系统业务的进一步理解。

                        状态图如下所示:

 

                               图11

六、构建图和部署图

(一) 本次目的

1)   理解组件图的基本概念

2)   理解组件图的应用:逻辑部署

3)   理解部署图的基本概念

4)   理解部署图的应用:物理部署

5)   掌握组件图和部署图绘制的方法

(二) 要求请完成如下任务

参照实验辅导教材,画出选课系统构件图及部署图并进行文字说明。

                    构建图如下所示:

                             图12

    

                              部署图如下所示:

                              图13

七、双向工程

(一)  本次目的

1)        理解双向工程的概念

2)        使用Rose进行完成模型的代码生成

(二) 要求请完成如下任务

现在,选课系统的分析和设计工作已经基本完成,即将进入编码阶段。为了加快编码进度,可以利用建模工具执行正向工程,将系统中的模型转换成指定语言类型的代码框架,现要求您使用Rose工具将设计的模型通过正向工程生成代码框架。按照使用Rose工具生成代码的6步基本步骤可以顺利的完成代码框架的生成工作。

(1)检查模型,

(2)创建组件

(3)将类映射到组件

(4)设置代码生成属性

(5)选择类,组件和包

(6)生成代码

粘贴得到的主要代码

生成代码如下:

//People.java

public class People {

    private String name;

    private int age;

    public People() {

    }

}

//Student.java

public class Student extends People {

    private int StudentID;

    public FormObject theFormObject;

    public Student() {

    }

    public int getStudentID() {

       return StudentID;

    }

}

//DataBase.java

public class DataBase {

    private String dbpath;

    public DataBase() {

    }

    public boolean QueryCourse(int CourseID) {

       return true;

    }

    public Boolean AddCourse(Course Course) {

       return true;

    }

    public Boolean DeleteCourse(int CourseId) {

       return true;

    }

    public void QueryAllCourse() {

    }

    public Boolean querYAssociation(int CourseID, int StudentID) {

       return true;

    }

    public Boolean AddAssociation(int CourseID, int StudentID) {

       return true;

    }

    public void QuerySelectedCourse() {

    }

    public String QueryPasswd(int regID, String Regname) {

       return null;

    }

}

//Registrar,java

public class Registrar extends People {

    private int regID;

    public FormObject theFormObject;

    public Registrar() {

    }

    private void GetRegistRarInfo() {

    }

}

//Course.java

public class Course {

    private String name;

    private String classroom;

    private int CourseID;

    private String teacher;

    private int Students;

    private String firstLessondate;

    private int maxStudent;

    public Course() {

    }

    public void Create(String Coursename, int CourseID, String ClassRoom,

           String Teacher) {

    }

    public void getCourseInfo() {

    }

    public void DestroyCourse() {

    }

}

//ControlObject.java

public class ControlObject {

    public DataBase theDataBase;

    public FormObject theFormObject;

    public Course theCourse[];

    public ControlObject() {

    }

    public boolean VerifyCourse(Course course) {

       return false;

    }

    public boolean CanAdd() {

       return false;

    }

    public boolean CanModify() {

       return false;

    }

    public boolean QueryCourseByID(int courseID) {

       return false;

    }

    public void ConfirmDelete() {

    }

    public void GetAllCourse() {

    }

    public boolean queryAssociation(int CourseId, int StudentID) {

       return false;

    }

    public boolean CanSelect() {

       return false;

    }

    public void QueryCoursseList(int StudentID) {

    }

    public boolean VerifyRegistrar(int regID, String regname) {

       return false;

    }

    public Boolean CheckPasswd() {

       return false;

    }

}

//FormObject.java

public class FormObject {

    public ControlObject theControlObject;

    public Course theCourse;

    public FormObject() {

    }

    private void GetCourseInfo() {

    }

    private void ShowSuccessInfo(String strinfo) {

    }

    public int GetCourseID() {

       return 0;

    }

    private void ShowConfirmPage(String strInfo) {

    }

    private void ConfirmDelete() {

    }

    private void SelectCommand() {

    }

    private void DisplayCourseList(Course[] courseList) {

    }

    private void DisplayCourseList() {

    }

    private void QuerySelectedCourse(int StudentID) {

    }

}

                        实验小结

    本学期的实验到此也告一段落了。一学期的实验主要完成“在线选课系统的UML建模”,现已圆满完成。在学习课本知识的同时,结合实验指导书,边学习新知识边进行实际操作。对书本上的知识有了更全面的掌握。在建模过程中遇到了一些问题,通过询问老师、同学和上网查找资料,得到了比较满意的解决。在这次课程设计实验中,关于UML的概念以前比较模糊的地方,在实际操作中,变得更加清楚了。对Rational Rose的UML功能运用的更加熟练。使我对UML建模的思想有了更进一步的了解,在以后得学习中,还将不断的学习UML的理论知识。