3901130721-谭淇蔚-实验一_第1页
3901130721-谭淇蔚-实验一_第2页
3901130721-谭淇蔚-实验一_第3页
3901130721-谭淇蔚-实验一_第4页
3901130721-谭淇蔚-实验一_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件体系结构实验报告项目名称 UML实验 专业班级 软件工程1307班学 号 3901130721姓 名 谭淇蔚 实验成绩:批阅教师:2015年 11 月 25 日实验1 UML实验实验学时: 4 每组人数: 1 实验类型: 3 (1:基础性 2:综合性 3:设计性 4:研究性)实验要求: 1 (1:必修 2:选修 3:其它)实验类别: 3 (1:基础 2:专业基础 3:专业 4:其它)一、实验目的1. 学会安装和使用建模工具PowerDesigner,熟练使用PowerDesigner绘制常用的UML图形,熟悉常用的UML符号;2. 构建用例模型来描述软件需求,包括绘制用例图,撰写用例文档并制作用例检查矩阵;3. 学习使用状态图描述对象的状态及转换;4. 学习使用活动图为业务流程建模;5. 学习使用顺序图描述对象之间的交互;6. 学习类图的绘制;7. 学习从系统需求中识别类,并构建相应的面向对象模型;8. 学习使用PowerDesigner实现正向工程和逆向工程。二、实验内容1. 某酒店订房系统描述如下:(1) 顾客可以选择在线预订,也可以直接去酒店通过前台服务员预订;(2) 前台服务员可以利用系统直接在前台预订房间;(3) 不管采用哪种预订方式,都需要在预订时支付相应订金;(4) 前台预订可以通过现金或信用卡的形式进行订金支付,但是网上预订只能通过信用卡进行支付;(5) 利用信用卡进行支付时需要和信用卡系统进行通信;(6) 客房部经理可以随时查看客房预订情况和每日收款情况。绘制该酒店订房系统的用例图。2. 根据以下场景绘制用例图:某企业为了方便员工用餐,为企业餐厅开发了一个订餐系统(COS:Cafeteria Ordering System),企业员工可通过企业内联网使用该系统。该系统功能描述如下:(1) 企业的任何员工都可以查看菜单和今日特价;(2) 系统的顾客是注册到系统的员工,可以在线订餐(以下操作均需先登录)、注册工资支付、修改订餐信息和删除订餐信息,在注册工资支付时需要通过工资系统进行身份验证;(3) 餐厅员工是特殊的顾客,可以进行备餐(系统记录备餐信息)、生成付费请求和请求送餐,其中对于注册使用工资支付的顾客生成付费请求并发送给工资系统;(4) 菜单管理员是餐厅员工的一种,可以管理菜单;(5) 送餐员也是餐厅员工的一种,可以打印送餐说明、记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。3. 根据以下场景绘制用例图:某公司需开发一个反馈处理系统作为其CRM的一部分。系统基本功能描述如下:(1) 客户可通过系统发布反馈信息;(2) 公司客户关系(CR)部门员工也可以在系统中记录反馈信息;(3) 业务部门的主管和员工均能看到本部门的反馈信息,但只有CR部门员工拥有修改与删除反馈的权限;(4) 对于部分需要调查以便验证其真实性并需要做相关处理的反馈信息,业务部门主管有权通过系统安排本部门员工调查及处理该反馈;(5) 反馈调查与处理完毕后,负责调查的员工可通过系统输入反馈的详细情况;(6) 公司高层可查看未决反馈统计报表和各业务部门的反馈统计报表;(7) 所有人员进入本系统需先登录。4. Draw a use case diagram for the following library system:The library stores various items that can be borrowed, including books and journals. Books can be borrowed by both staff and students, but only staff members can borrow journals. When a user borrows a book, their loan details are checked to ensure that they have no overdue books on loan, and have not already borrowed the maximum permitted number of books.Users can check their own loan details at any time. Librarians are permitted to check the loan details of any user.Library users can reserve books that are currently out on loan. If three reservations have already been made for a given book, and a further reservation is made, a new copy will be ordered by the librarian.5. 某银行准备开发一个网上信用卡管理系统 CCMS,该系统的基本功能为: (1) 信用卡申请。非信用卡客户填写信用卡申请表,说明所要申请的信用卡类型及申请者的基本信息,提交 CCMS登录。如果信用卡申请被银行接受,客户会收到银行的确认函, 并告知用户信用卡的有效期及信贷限额;否则银行会发送一封拒绝函给该客户。客户收到确认函后,需再次登录 CCMS,用信用卡号和密码激活该信用卡。激活操作结束后,CCMS将激活通知发送给客户,告知客户其信用卡是否被成功地激活。(2) 月报表生成。在每个月第一天的零点,CCMS为每个信用卡客户创建一份月报表,对该客户上月的信用卡交易情况及交易额进行统计。信用卡客户可以登录 CCMS查看月报表,也可以要求 CCMS提供打印出的月报表。 (3) 信用卡客户信息管理。信用卡客户的个人信息可以在 CCMS 中进行在线的管理。每个信用卡客户可以在线查询其个人信息。 (4) 信用卡交易记录。信用卡客户使用信息卡进行的每一笔交易都会记录在 CCMS中。 (5) 交易信息查询。信用卡客户可以登录 CCMS查询并核实其信用卡交易记录及交易额。 构造该系统的用例模型,要求绘制用例图,编写相应的用例文档,还需提供用例追踪矩阵。6. 根据以下描述绘制状态图:某销售信息管理系统中销售部员工可以提交订单,刚提交的订单为“初始”状态;系统管理员可以处理订单,如果订单无误,则修改订单为“备货”状态,否则将订单退还给提交订单的销售部员工修改,员工此时可以取消订单;仓库管理员备货完毕后可将订单状态改为“发货”状态;销售部员工在确认客户已经收到货物后,可将订单改为“关闭”状态。7. 根据以下描述绘制某订餐系统中顾客订餐过程的活动图(要求绘制泳道):(1) 顾客请求查看菜单;(2) 系统显示菜单和今日特价;(3) 顾客选菜;(4) 系统显示订单和价格;(5) 顾客确认订单;(6) 系统显示可送餐时间;(7) 顾客指定送餐时间、地点和支付方式;(8) 系统确认接受订单,然后发送Email给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。8. 根据如下描述绘制顺序图:在某在线订房系统中,顾客输入房间套数、房间类型、入住时间、入住天数等信息,系统显示符合要求的房间号;顾客确定预订的房间,系统显示预付订金信息;顾客输入信用卡账号和密码,系统请求银行信用卡系统提供支付服务;银行信用卡系统验证用户信息并返回验证通过和支付成功消息;顾客请求系统打印预订单和收据,系统打印相关资料;预订结束。9. 根据以下Java源代码绘制相应的顺序图:public class Sale private List productItems = new ArrayList;public Money getTotal() Money total = new Money();Money subTotal = null;for (SalesProductItem item : productItems) subTotal = item.getSubTotal();total.add(subTotal);return total;10. 根据以下描述绘制类图,再正向工程生成Java源代码(也可生成其他面向对象语言的源代码,如C+或C#等):图形(Shape)可分为圆形(Circle)、矩形(Rectangle)、椭圆形(Ellipse)等具体图形,在Shape类中提供了一个抽象的draw()方法用于绘制图形,而在具体的图形类中实现该抽象draw()方法。提供一个图形工厂类(ShapeFactory),该类提供一个静态方法createShape(char type),其返回类型为Shape,参数type为所需绘制图形对应的代码,例如“c”表示圆形,“r”表示矩形,“e”表示椭圆形等,在createShape()方法中,可以使用条件语句来判断所需绘制图形的类型,并根据参数的不同返回不同的具体形状对象。【注:“创建关系”是一种特殊的“依赖关系”】11. 根据以下描述绘制类图:某商场会员管理系统包含一个会员类(Member),会员的基本信息包括会员编号、会员姓名、联系电话、电子邮箱、地址等,会员可分为金卡会员(GoldMember)和银卡会员(SilverMember)两种,不同类型的会员在购物时可以享受不同的折扣;每个会员可以拥有一个或多个订单(Order),每一个订单又可以包含至少一条商品销售信息(ProductItem),商品销售信息包括订单编号、商品编号、商品数量、商品单价和折扣等;每一条商品销售信息对应一类商品(Product),商品信息包括商品编号、商品名称、商品单价、商品库存量、商品产地等。12. 某基于C/S的即时聊天系统的注册和登录模块功能描述如下:(1) 注册功能:用户通过注册界面(RegisterForm)输入新帐号,系统检测该帐号是否已存在,如果不存在则可注册成功,否则提示“帐号已存在”,用户再次输入帐号;用户输入其他个人信息;系统保存用户个人信息;用户个人信息包括帐号、密码、姓名、性别、年龄、电话、电子邮箱等。(2) 登录功能:用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是否正确,如果输入正确则进入主界面(MainForm),否则提示“输入错误”。现对这两个模块进行设计,要求如下:(1) 根据以上描述绘制类图,要求分析出每个类中的主要方法;(2) 需要提供独立的业务逻辑类和数据访问类,考虑到数据库的移植性,需提供抽象的数据访问接口;(3) 尽量使用数据传输对象(DTO)来传递参数,减少方法中参数的个数。三、实验要求1. 正确安装PowerDesigner;2. 熟练使用PowerDesigner绘制用例图、状态图、活动图、顺序图和类图;3. 需按照用例建模的流程,提供用例图、用例文档和用例追踪矩阵;4. 熟练使用PowerDesigner实现正向工程和逆向工程;5. 使用UML2.X中的标准图符绘制图形,对于一些较为复杂的图形,适当增加文字注释来进行说明;6. 所绘制图形必须正确、完整,需具有较好的可读性,注意图形中图符和文字大小及布局。四、实验步骤1. 安装PowerDesigner15.X;2. 熟悉PowerDesigner15.X的常用功能;3. 分析实例场景,识别执行者;4. 识别用例及用例之间的关系;5. 使用PowerDesigner15.X绘制用例图;6. 撰写用例文档;7. 创建用例追踪矩阵;8. 使用PowerDesigner15.X绘制状态图;9. 分析订餐系统中顾客订餐过程的流程,绘制相应的活动图;10. 分析在线订房系统中顾客与系统之间的交互过程,绘制相应的顺序图;11. 根据源代码绘制相应的顺序图;12. 根据描述绘制类图并正向工程生成源代码;13. 分析商场会员管理系统中实体类之间的关系,绘制相应的类图;14. 分析某基于C/S的即时聊天系统的注册和登录模块的功能,绘制对应的类图。五、实验结果1. 酒店订房系统用例图:原题目:1. 某酒店订房系统描述如下:(1) 顾客可以选择在线预订,也可以直接去酒店通过前台服务员预订;(2) 前台服务员可以利用系统直接在前台预订房间;(3) 不管采用哪种预订方式,都需要在预订时支付相应订金;(4) 前台预订可以通过现金或信用卡的形式进行订金支付,但是网上预订只能通过信用卡进行支付;(5) 利用信用卡进行支付时需要和信用卡系统进行通信;(6) 客房部经理可以随时查看客房预订情况和每日收款情况。绘制该酒店订房系统的用例图。解答:场景分析:n 识别执行者这里面用户的执行者有1. 顾客(使用系统在线预订)2. 前台服务员(利用系统直接前台预订)3. 客房部经理(查看客房预订情况和每日收款情况)4. 信用卡系统(系统在信用卡支付时和信用卡系统进行通信,信用卡系统属于外部系统交互范畴,所以也属于执行者)n 识别用例这里面用例有这些:1. 在线预订2. 前台预订房间3. 支付相应定金4. 现金的形式进行订金支付5. 信用卡的形式进行订金支付6. 查看客房预订情况7. 每日收款情况由于现金支付和信用卡支付都属于支付范畴,所以我选择用这两个用例用扩展关系来表示。可以使用泛化,但是其一,不好表示网上预订只能通过信用卡进行支付的情形,其二,增加了一个基用例会造成一个图里的用例过多,造成杂乱,所以我选择扩展关系。n 绘制用例图2. 订餐系统用例图:原题目:2. 根据以下场景绘制用例图:某企业为了方便员工用餐,为企业餐厅开发了一个订餐系统(COS:Cafeteria Ordering System),企业员工可通过企业内联网使用该系统。该系统功能描述如下:(1) 企业的任何员工都可以查看菜单和今日特价;(2) 系统的顾客是注册到系统的员工,可以在线订餐(以下操作均需先登录)、注册工资支付、修改订餐信息和删除订餐信息,在注册工资支付时需要通过工资系统进行身份验证;(3) 餐厅员工是特殊的顾客,可以进行备餐(系统记录备餐信息)、生成付费请求和请求送餐,其中对于注册使用工资支付的顾客生成付费请求并发送给工资系统;(4) 菜单管理员是餐厅员工的一种,可以管理菜单;(5) 送餐员也是餐厅员工的一种,可以打印送餐说明、记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。解答:场景分析:n 识别执行者1. 企业的任何员工(查看菜单和今日特价)2. 工资系统(外部系统执行者,内部用例注册工资需要使用其来验证身份)3. 餐厅员工(备餐等活动)4. 菜单管理员(管理菜单等)5. 送餐员(打印送餐等等)6. 顾客n 识别用例1. 在线订餐2. 查看菜单3. 查看今日特价4. 注册工资支付5. 修改订餐信息6. 删除订餐信息7. 身份验证8. 备餐9. 生成付费请求10. 请求送餐11. 管理菜单12. 打印送餐说明13. 记录送餐信息14. 记录收费15. 登录16. 注册n 绘制用例图通过分析,该系统的执行者包括员工、顾客、餐厅员工、菜单管理员、送餐员和工资系统,员工与顾客之间具有泛化关系,顾客与餐厅员工之间具有泛化关系,餐厅员工与菜单管理员和送餐员之间具有泛化关系。3. 反馈处理系统用例图:原题目:3. 根据以下场景绘制用例图:某公司需开发一个反馈处理系统作为其CRM的一部分。系统基本功能描述如下:(1) 客户可通过系统发布反馈信息;(2) 公司客户关系(CR)部门员工也可以在系统中记录反馈信息;(3) 业务部门的主管和员工均能看到本部门的反馈信息,但只有CR部门员工拥有修改与删除反馈的权限;(4) 对于部分需要调查以便验证其真实性并需要做相关处理的反馈信息,业务部门主管有权通过系统安排本部门员工调查及处理该反馈;(5) 反馈调查与处理完毕后,负责调查的员工可通过系统输入反馈的详细情况;(6) 公司高层可查看未决反馈统计报表和各业务部门的反馈统计报表;(7) 所有人员进入本系统需先登录。解答:场景分析:n 识别执行者1. 客户2. CR部门员工3. 公司员工4. 业务部门主管5. 业务部门员工6. 公司高层n 识别用例1. 发布反馈消息2. 记录反馈消息3. 管理反馈消息(修改与删除反馈消息的操作的归纳)4. 查看反馈消息5. 安排员工调查和处理6. 输入反馈详情7. 查看反馈统计报表(查看未决反馈统计报表和各业务部门的反馈统计报表)8. 登录n 绘制用例图4. 图书馆系统(Library System)用例图:原题目:4. Draw a use case diagram for the following library system:The library stores various items that can be borrowed, including books and journals. Books can be borrowed by both staff and students, but only staff members can borrow journals. When a user borrows a book, their loan details are checked to ensure that they have no overdue books on loan, and have not already borrowed the maximum permitted number of books.Users can check their own loan details at any time. Librarians are permitted to check the loan details of any user.Library users can reserve books that are currently out on loan. If three reservations have already been made for a given book, and a further reservation is made, a new copy will be ordered by the librarian.解答:场景分析:n 识别执行者1. Users2. Librarian3. Staff4. Studentsn 识别用例1. Borrowed book2. Borrowed journal3. Check loan details4. Check the loan details of any user5. Reserve books6. Ordere a new copy7. Ensure check no overdue books on loan8. Ensure not more than the maximum permitted number of booksn 绘制用例图5. 网上信用卡管理系统CCMS的需求模型:原题目:5. 某银行准备开发一个网上信用卡管理系统 CCMS,该系统的基本功能为: (1) 信用卡申请。非信用卡客户填写信用卡申请表,说明所要申请的信用卡类型及申请者的基本信息,提交 CCMS登录。如果信用卡申请被银行接受,客户会收到银行的确认函, 并告知用户信用卡的有效期及信贷限额;否则银行会发送一封拒绝函给该客户。客户收到确认函后,需再次登录 CCMS,用信用卡号和密码激活该信用卡。激活操作结束后,CCMS将激活通知发送给客户,告知客户其信用卡是否被成功地激活。(2) 月报表生成。在每个月第一天的零点,CCMS为每个信用卡客户创建一份月报表,对该客户上月的信用卡交易情况及交易额进行统计。信用卡客户可以登录 CCMS查看月报表,也可以要求 CCMS提供打印出的月报表。 (3) 信用卡客户信息管理。信用卡客户的个人信息可以在 CCMS 中进行在线的管理。每个信用卡客户可以在线查询其个人信息。 (4) 信用卡交易记录。信用卡客户使用信息卡进行的每一笔交易都会记录在 CCMS中。 (5) 交易信息查询。信用卡客户可以登录 CCMS查询并核实其信用卡交易记录及交易额。 构造该系统的用例模型,要求绘制用例图,编写相应的用例文档,还需提供用例追踪矩阵。(1) 用例图:解答:场景分析:n 识别执行者1. 非信用卡客户2. 信用卡客户3. 银行n 识别用例1. 申请信用卡2. 登录3. 查看月报表4. 打印月报表5. 发送确认函6. 发送拒绝函7. 激活信用卡8. 查询个人信息9. 管理个人信息10. 交易信息查询n 绘制用例图(2) 用例描述文档:目 录1. 用例编号:UC001 用例名:申请信用卡192. 用例编号:UC002 用例名: 登录203. 用例编号:UC003 用例名: 激活信用卡204. 用例编号:UC004 用例名: 发送确认函215. 用例编号:UC005 用例名: 发送拒绝函226. 用例编号:UC006 用例名: 查看月报表227. 用例编号:UC007 用例名: 打印月报表238. 用例编号:UC008 用例名: 管理个人信息249. 用例编号:UC009 用例名: 查询个人信息2410. 用例编号:UC010 用例名: 交易信息查询251.用例编号:UC001用例名:申请信用卡 用例名申请信用卡用例编号UC001执行者非信用卡用户前置条件CCMS系统运行后置条件银行接收到信用卡申请基本路径1. 非信用卡用户填写信用卡申请表的相关信息2. 包含用例“登录”3. 非信用卡用户提交信用卡申请表4. 系统处理信用卡申请表5. 系统向银行发送非信用卡用户申请表请求扩展路径无2.用例编号:UC002用例名: 登录用例名登录用例编号UC002执行者用户前置条件用户要与系统进行信息交互后置条件用户登录了CCMS系统基本路径1. 用户填写账户和密码2. 系统验证用户输入的账户和密码3. 用户通过系统验证并登录了CCMS系统扩展路径3a1:用户没通过系统验证,要求重新输入账户和密码非功能需求安全性:用户密码输入错误达到3次,则需要停止验证并锁定用户登录,需要用户等待一段时间再进行输入。3.用例编号:UC003用例名: 激活信用卡用例名激活信用卡用例编号UC003执行者非信用卡用户前置条件非信用卡用户收到银行确认函后置条件通知用户激活信用卡成功并将用户由非信用卡用户转成信用卡用户基本路径1. 包含用例“登录”2. 用户提交信用卡号和密码3. 系统验证信用卡号和密码4. 系统激活信用卡5. 系统将屏幕显示“激活成功”6. 系统将该用户修改成信用卡用户扩展路径无4.用例编号:UC004用例名: 发送确认函用例名发送确认函用例编号UC004执行者银行前置条件银行处理完信用卡申请后置条件客户会收到银行发送过来的确认函, 并得知信用卡的有效期及信贷限额基本路径1. 银行发送确认函2. 银行发送信用卡的有效期及信贷限额消息3. 用户收到确认函和消息扩展路径2a1:用户未登录时,CCMS系统等待用户登录时再发送5.用例编号:UC005用例名: 发送拒绝函用例名发送拒绝函用例编号UC005执行者银行前置条件银行处理完信用卡申请后置条件客户会收到银行发送过来的拒绝函基本路径1. 银行发送拒绝函2. 用户收到拒绝函扩展路径2a1:用户未登录时,CCMS系统等待用户登录时再发送6.用例编号:UC006用例名: 查看月报表用例名查看月报表用例编号UC006执行者信用卡用户前置条件用户已登录CCMS系统后置条件系统显示月报表基本路径1. 用户发送查看月报表申请2. 系统接收到申请3. 系统按照用户提交申请中的月份等数据查询相应的月报表4. 系统在屏幕显示出查询到的月报表扩展路径 无7.用例编号:UC007用例名: 打印月报表用例名打印月报表用例编号UC007执行者信用卡用户前置条件用户已登录CCMS系统后置条件用户个人信息得到修改并修改了数据库基本路径1. 用户发送查看月报表申请2. 系统接收到申请3. 系统按照用户提交申请中的月份等数据查询相应的月报表4. 系统在屏幕显示出查询到的月报表扩展路径 无8.用例编号:UC008用例名: 管理个人信息用例名管理个人信息用例编号UC008执行者信用卡用户前置条件用户已登录CCMS系统后置条件用户个人信息得到修改并更新了用户的相关数据库表基本路径1. 用户修改用户的个人信息2. 用户提交修改请求3. 系统处理请求4. 系统根据修改的信息更新系统数据库的相关表5. 系统屏幕显示修改成功扩展路径 无9.用例编号:UC009用例名: 查询个人信息用例名查询个人信息用例编号UC009执行者信用卡用户前置条件用户已登录CCMS系统后置条件系统屏幕显示个人信息基本路径1. 用户提交查看的申请2. 系统根据用户的账号等相关信息查询数据库3. 系统根据返回的数据库信息显示在屏幕上扩展路径 无10.用例编号:UC010用例名: 交易信息查询用例名交易信息查询用例编号UC010执行者信用卡用户前置条件用户已登录CCMS系统后置条件显示交易记录基本路径1. 用户提交查询信用卡交易记录的请求2. 系统接收用户提交的请求3. 系统处理请求4. 系统根据用户的账号查询其交易记录5. 系统在屏幕显示查询到的交易记录扩展路径 无(3) 用例追踪矩阵:用例编号需求信用卡相关月报表相关信用卡客户信息管理交易信息查询UC001UC002UC003UC004UC005UC006UC007UC008UC009UC0106. 销售信息管理系统订单的状态图:原题目:6. 根据以下描述绘制状态图:某销售信息管理系统中销售部员工可以提交订单,刚提交的订单为“初始”状态;系统管理员可以处理订单,如果订单无误,则修改订单为“备货”状态,否则将订单退还给提交订单的销售部员工修改,员工此时可以取消订单;仓库管理员备货完毕后可将订单状态改为“发货”状态;销售部员工在确认客户已经收到货物后,可将订单改为“关闭”状态。解:7. 订餐系统活动图:原题目:7. 根据以下描述绘制某订餐系统中顾客订餐过程的活动图(要求绘制泳道):(1) 顾客请求查看菜单;(2) 系统显示菜单和今日特价;(3) 顾客选菜;(4) 系统显示订单和价格;(5) 顾客确认订单;(6) 系统显示可送餐时间;(7) 顾客指定送餐时间、地点和支付方式;(8) 系统确认接受订单,然后发送Email给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工解:8. 在线订房系统顺序图:原题目:8. 根据如下描述绘制顺序图:在某在线订房系统中,顾客输入房间套数、房间类型、入住时间、入住天数等信息,系统显示符合要求的房间号;顾客确定预订的房间,系统显示预付订金信息;顾客输入信用卡账号和密码,系统请求银行信用卡系统提供支付服务;银行信用卡系统验证用户信息并返回验证通过和支付成功消息;顾客请求系统打印预订单和收据,系统打印相关资料;预订结束。解:9. 顺序图:原题目:9. 根据以下Java源代码绘制相应的顺序图:public class Sale private List productItems = new ArrayList;public Money getTotal() Money total = new Money();Money subTotal = null;for (SalesProductItem item : productItems) subTotal = item.getSubTotal();total.add(subTotal);return total;解:10. 类图:原题目:10. 根据以下描述绘制类图,再正向工程生成Java源代码(也可生成其他面向对象语言的源代码,如C+或C#等):图形(Shape)可分为圆形(Circle)、矩形(Rectangle)、椭圆形(Ellipse)等具体图形,在Shape类中提供了一个抽象的draw()方法用于绘制图形,而在具体的图形类中实现该抽象draw()方法。提供一个图形工厂类(ShapeFactory),该类提供一个静态方法createShape(char type),其返回类型为Shape,参数type为所需绘制图形对应的代码,例如“c”表示圆形,“r”表示矩形,“e”表示椭圆形等,在createShape()方法中,可以使用条件语句来判断所需绘制图形的类型,并根据参数的不同返回不同的具体形状对象。【注:“创建关系”是一种特殊的“依赖关系”】解:类图为:步骤如下:由于图形(Shape)可分为圆形(Circle)、矩形(Rectangle)、椭圆形(Ellipse)等具体图形,而且Shape类中提供了一个抽象的draw()方法用于绘制图形,所以说明了Shape类是一个抽象类。创建Shape类:点击Class图标,创建一个Class,如图所示:双击这个Class然后修改如下:这是设置类为abstract类型下面是设置draw方法为abstract类型,因为是抽象方法,可以不用写返回值,也就是不用写具体块,由软件自动生成就好:我们可以查看一下生成的代码:发现生成的代码并没有错误,可以进行下一步的操作。下面是创建Shape类所具体泛化的类。圆形(Circle)、矩形(Rectangle)、椭圆形(Ellipse)我举一个为例子,那么举圆形为例子。这个是类的创建,包括名字和它的修饰类型以及父类。我们为这个类增加一个默认的构造函数。点击后会生成垃圾处理机制所用的finalize的函数方法,不过不需要它,所以可以把它删掉,删掉就不截图了。它还要实现它所继承的类的方法。点击Override Inheited Operation,弹出如下的框这就是后面生成了具体的类我们可以查看一下代码是否正确:发现代码并没有什么问题,所以我选择弄下一个类。下面两个类的创建过程是一样的,所以我就不截图了。接下来是创建一个工厂类。由于是通过type参数进行判断对象并创建对象,所以不打算将ShapeFactory变成泛型类,就使用普通类型就好。下面是创建ShapeFactory的过程下面是参数然后添加其的get和set方法以下是自动生成get和set函数添加createShape(char type)函数双击这个函数在这里面增加其参数由于要根据type的不同值来生成不同的对象类型,所以我们得在powerdesigner里面编辑代码。编辑如下:if(type = c) return new Circle();else if(type = r) return new Rectangle();else if(type = e) return new Ellipse();else System.out.printIn(type is error); return null; return null;如图所示:接下来就是生成代码啦这是生成的源代码结构:源代码:Circle.java/* * Module: Circle.java * Author: tqw * Purpose: Defines the Class Circle */import java.util.*;/* pdOid ec982f7f-e58f-4265-989c-613f227c5f27 */public class Circle extends Shape /* pdOid 875865f2-21a0-48de-9c9f-96850d587a6b */ public Circle() / TODO: implement /* pdOid b2df28a8-9e30-4fe5-843a-c35c7da1996b */ public void draw() / TODO: implement Ellipse.java/* * Module: Ellipse.java * Author: tqw * Purpose: Defines the Class Ellipse */import java.util.*;/* pdOid 6a57fd84-7b75-4739-bc97-800480a809fe */public class Ellipse extends Shape /* pdOid 1a599aa0-dc55-456c-a039-d62fb86ad91d */ public Ellipse() / TODO: implement /* pdOid 620e5d14-92fe-4a32-93f5-7b8241344b58 */ public void draw() / TODO: implement Rectangle.java/* * Module: Rectangle.java * Author: tqw * Purpose: Defines the Class Rectangle */import java.util.*;/* pdOid 98043fef-cdff-4780-87c4-d0889fb66336 */public class Rectangle extends Shape /* pdOid 2c42fa4f-0b4f-4bbd-8dda-75ce27108c97 */ public Rectangle() / TODO: implement /* pdOid 10ad73ef-9098-4e03-a27a-d7e58dfc1063 */ public void draw() / TODO: implement Shape.java/* * Module: Shape.java * Author: tqw * Purpose: Defines the Class Shape */import java.util.*;/* pdOid ac2a51a6-54e5-48d9-9502-d013e7503dd0 */public abstract class Shape /* pdOid cc1d8d18-d8b9-4c3d-88e5-678626cb4587 */ public abstract void draw();ShapeFactory.java/* * Module: ShapeFactory.java * Author: tqw * Purpose: Defines the Class ShapeFactory */import java.util.*;/* pdOid 8f9a77e0-b2c0-43c0-8951-528d40f59668 */public class ShapeFactory /* pdOid b9c3a33f-11ad-49e9-a122-3bb4099c7bfa */ private char type; /* pdOid da7e2389-14ad-4e29-b132-edf0b2e41f6b */ public char getType() return type; /* param newType * pdOid d555316c-d696-4fff-b212-dc8828f0f0c8 */ public void setType(char newType) type = newType; /* param type * pdOid b45a21a7-178c-46c0-85ad-1fe46e403a14 */ public Shape createShape(char type) / TODO: implement if(type

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论