天津理工大学华信软件学院天津理工大学(华信软件学院)实验指导书课程名称:软件工程与UML建模适应课程:(1969216)上机实验(三)创建类和类图一、实验目的:在Rose 环境下创建类和类图, 完成应用案例的类图设计。
二、实验内容:(一)创建类1)根据“需求陈述”提炼对象和类2)分析对象,并将对象抽象成类(二) 创建类图建立类之间的关系(关联关系、泛化关系、聚集或组合关系、依赖关系等)创建类图。
(三) 综合应用练习。
三、操作步骤:(一) 创建类1、启动Rose 2003进入后,在左面结构框内右击Logical View;2、选New 选Class Diagram ,再在Class Diagram下创建类;3、给类命名(比如Course);4、增加属性(右击框途中的类,选New Attribute);5、添加类操作(右击框途中的类,选New Operation);(二) 建立类之间的关系1.首先关联关系(使用按钮工具,如果当前工具栏中没有,右击工具栏,然后添加相关按钮)1) 单项关联;2) 双向关联。
2.练习聚集和组合(先建立关联,再右击靠近“整体”方的关联线,选Aggregate选项。
)3.然后泛化关系。
4.最后练习依赖关系。
四.实例练习(不能用课件及教材上的示例,要自己来想。
)1.举实例说明类之间的关联关系。
包括:单、双向关联、一对一关联、一对多关联、多对多关联、自反关联、限定关联和关联类。
2.举实例说明类之间的聚合(组合)关系。
3.举实例说明类之间的泛化(继承)关系。
包括:单继承、多继承。
4.举实例说明接口与实现,抽象类与子类等。
五.综合应用:(一)以“学生选课系统”为例建立类图1.“学生选课系统”涉及到的类:1) Database类属性:dbPath: String操作:(以下列出部分操作)Query Course() Add Course() Delete Course() Get dbPath() Set dbPath() ……2) Student类属性:studentID: Int studentName: String操作:get StudentID() set StudentID()get StudentName() set StudentName()3) Registrar类属性:registrarName: String regID: Int操作:get regID() set regID()get registrarName() set registrarName()4) Course类属性:courseID: Int courseName: Stringclassroom: String teacher: string操作:createCourse() destroyCourse() getName()setName() getCourseID() setCourseID() getTeacher() setTeacher()……5) Control类属性: (无)操作:verifyCourse() canAdd() queryCourse()confirmDelete() canSelect() queryAssociation() 6)Form类属性:(接口无属性)操作:getCourseInfo() showSuccessInfo() showConfirmPage() displayCourseList() querySelectCourse()2. 创建上述类之间的关系;①Student和Form之间-----单向关联(一对多)②Registrar和Form之间-----单向关联(一对多)③Form和Course之间-----单向关联(一对多)④Control和Course之间-----单向关联(一对多)⑤Control和Form之间-----双向关联(一对多)⑥Control和Database之间-----单向关联(一对一)3.完成类图(对象模型)的设计(以下是简化的类图参考图,详细的类图由同学们自己来完成。
)图3—1 学生选课系统简化类图4. 生成代码。
可以针对某一个类,比如Course类,生成Java源代码, 操作如下:①设置参数: Tools → Options → Notation标签②在Default 框中选Java;③检查类中所有操作,确认它们都具有返回值类型;④选种类Course,然后选:Tools → Java/J2EE → General code⑤代码存放的路径(CLASSPATH entries)可以设为d:\student_name\code;生成的代码如下://Source file: d:\\code\\Course.javapublic class Course{private String courseName;private Int courseID;private String classRoom;public Database theDatabase;/*** @roseuid 44C6FA3000E6*/public Course(){ }/***@roseuid 4429D321008C*/public void getCourseID(){ }/*** @roseuid 4429D34700EA*/public void getCourseName(){ }/*** @roseuid 44C6F9AC0096*/public void createCourse(){ }/*** @roseuid 44C6F9C403BC*/public void destroyCourse(){ }}注意:此例中已经对某些空格进行了压缩。
其它类对应的Java代码,请学生自己完成。
(二)创建“图书管理系统”的类图(对象模型)ss1.系统涉及到的类①Title类属性:name: String ISBN: String Number of item: Int 操作:Add() Delete() Update()②Borrower Information类属性:name: String address: String tel: String操作:Find() Query() delete()③Item类属性:ID: Int操作:Add() Delete() FindOnTitle()④Loan类属性:time: Date操作:Create() Destroy()⑤Reservation 类属性:time: Date操作:Create() Destroy() Find()2. 上述类的关联1) Title 与Borrower Information 之间的关联2) Title 与Item 之间的关联(学生自己填写)3) Item 与Borrower Information 之间的关联(学生自己填写)3. 完成类图(对象模型)的设计(见下图)图3-2 图书管理系统类图(三)创建“网上购物系统”中与“Add Item to Shopping Cart”对应的类图。
1.分析“Add Item to Shopping Cart”涉及到的类1)CartInterface(或Interface)类属性:(无)操作:AddItem()2)CartManager(或CartMgr)类属性: (无)操作:AddItem()3)ProductMgr 类属性: (无)操作: GetProduct()4) Product类属性:ProductID:Int ProductName:String UnitPrice:Double操作: FindProduct()5)CartItem类属性:Number of Items inCart:Int操作:Add Item to Cart()2.建立关系,(增加版型)创建类图。
(请同学自己完成)3.创建构件图(请学生自己完成)4.类映射到构件; 见实验(五)。
5.生成Java代码(请学生自己完成)。
(四)创建类图补充实例练习A. 根据以下每一组类绘制类图。
1)学校、操场(playground)、校长(principal)、学校人员、教师、食堂(dining room)、设施、教室、学生、机房、计算机、课桌、椅子、书本。
2)文件系统、文件、磁盘(disc)、目录文件(directory file)、磁道(track)、扇区(sector)、ASCII文件、二进制文件。
B. 给每个类添加属性和方法(至少2个属性,2个操作)C. 绘制一个类模型来描述“无向图”(Undirected Graph)。
无向图由一组顶点(vertex)和边(edge)组成。
每个边均连接顶点对。
(模型只捕获图的结构,不考虑外形等方面的问题)D. 绘制一个类模型来描述“有向图”(Directed Graph)。
有向图由一组顶点(vertex)和边(edge)组成。
每个边均连接顶点对,但边是有方向的。
(模型只捕获图的结构,不考虑外形等方面的问题)E.以医院管理信息系统为背景根据以下类构造类图:(属性和操作从略)医院(Hospital)、门诊部(Outpatient Department)、药房(Pharmacy)、住院部(Inpatient Department)、病人(Patient)、病房(Ward)、病床(Bed)、住院病人(Inpatient)、门诊病人(Outpatient)、药品(Drug)、用药纪录(Record on drug)F. 选择填空:供选择的答案①~⑤C ircle , Arc , Point , Polygon , LineG.给上述5个类添加属性和方法(至少2个属性,2个操作)H.某音像出租店,要记录图书、唱碟和客户租借信息。
现已设计了两个类Book 和CD 如下:(1)经过分析,上述两个类重复内容(属性和方法)较多,于是又打算定义一个Loan类,表示Book类和CD类的重复部分。
请画出上述三个类构成的优化类图。
(2)如果再引入一个History类来记录所有租借Book和CD的历史,请画出上述四个类构成的类图。
(只画出类的框架结构)六. 评分标准1.能根据“学生选课系统”、“图书管理系统”的需求陈述正确找出类、正确。