2012012194信安1202李自然-UML-实验报告(03)-类图.doc_第1页
2012012194信安1202李自然-UML-实验报告(03)-类图.doc_第2页
2012012194信安1202李自然-UML-实验报告(03)-类图.doc_第3页
2012012194信安1202李自然-UML-实验报告(03)-类图.doc_第4页
2012012194信安1202李自然-UML-实验报告(03)-类图.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

北京信息科技大学实验(上机)报告课程名称 UML及建模工具 学号 2012012194 姓名 李自然 成绩_专业名称信息安全实验室名称3-607实验时间15.6实验名称实验3: 使用类图进行面向对象建模1. 实验目的:1) 掌握UML类图建模的意义。2) 掌握Rational Rose或其他工具绘制类图的方法。3) 掌握对象关联关系的含义和表示。4) 掌握泛化、实现关系的含义和表示。5) 了解依赖关系的含义和表示。2. 实验内容:1) 根据附录源程序,绘制类图。2) 绘制ADO.NET主要对象(SqlConnection、SqlCommand、SqlParameter、DataReader、SqlDataAdapter、DataSet、DataTable、DataRow、DataColumn等)的类图(包含常用属性、方法、关系),可以参考MSDN帮助找到以上类的相关基类和接口。3) 根据/gzzd/rcpy/201405/t20140528_23261.html “荐优秀应届本科毕业生免试攻读硕士学位研究生遴选程序与办法”,请识别该领域的对象、属性以及它们之间的关系,绘制领域类图。(提示:学院、指标、学生、申请、审核、成绩、初选入围名单、公示资格名单、接收学校、申诉、资格取消等)4) 同步课程设计任务:多余时间小组成员共同讨论分析课题,寻找领域对象及其属性,绘制一张类图(成果不在本实验报告中上交)。3. 实验要求:1) 直接将类图拷贝粘贴到实验报告中提交。2) 正确使用类图中的关系,包括关联、泛化、实现和依赖,要求各种符号使用遵守UML语法规范。3) 个人独立完成。4) 提交最后期限:当日提交。4. 实验准备:1) 源程序2) Rational rose5. 实验过程和结果:6.1) 根据附录源程序,绘制类图7. 实验总结:通过这次试验,我学会了用工具画类图,并且更加熟练了根据程序画图附录:影片租赁源程序/租赁类的定义class Rental private Movie _movie; / 影片 private int _rentDate; / 租赁日期 private int _daysRented; / 租期public Rental(Movie movie, int daysRented) _movie = movie; _daysRented = daysRented; public int getDaysRented() return _daysRented; public Movie getMovie() return _movie; double getCharge() return _movie.getCharge(_daysRented); int getFrequentRenterPoints() return _movie.getFrequentRenterPoints(_daysRented); /顾客类的定义class Customer private String _name; / 姓名 private String _phone; / 电话号码 private Vector _rentals = new Vector(); / 租借纪录public Customer(String name) _name = name; public void addRental(Rental arg) _rentals.addElement(arg); public String getName() return _name; /输出租赁交易报告public String statement() Enumeration rentals = _rentals.elements(); String result = Rental Record for + getName() + n; while (rentals.hasMoreElements() Rental each = (Rental) rentals.nextElement(); /显示该顾客的每个租赁 result += t + each.getMovie().getTitle()+ t + String.valueOf(each.getCharge() + n; /结尾打印(总费用和积分) result += Amount owed is + String.valueOf(getTotalCharge() + n; result += You earned + String.valueOf(getTotalFrequentRenterPoints() + frequent renter points; return result; /已超文本方式输出租赁交易报告public String htmlStatement() Enumeration rentals = _rentals.elements(); String result = Rentals for + getName() + n; while (rentals.hasMoreElements() Rental each = (Rental) rentals.nextElement(); /显示该顾客的每个租赁 result += each.getMovie().getTitle()+ : + String.valueOf(each.getCharge() + n; /结尾打印(总费用和积分) result += You owe + String.valueOf(getTotalCharge() + n; result += On this rental you earned + String.valueOf(getTotalFrequentRenterPoints() + frequent renter points; return result; / 计算总积分private int getTotalFrequentRenterPoints() int result = 0; Enumeration rentals = _rentals.elements(); while (rentals.hasMoreElements() Rental each = (Rental) rentals.nextElement(); result += each.getFrequentRenterPoints(); return result; / 计算总费用private double getTotalCharge() double result = 0; Enumeration rentals = _rentals.elements(); while (rentals.hasMoreElements() Rental each = (Rental) rentals.nextElement(); result += each.getCharge(); return result; /抽象价格类的定义abstract class Price abstract int getPriceCode(); / 取得价格代号 abstract double getCharge(int daysRented); / 根据租期计算费用int getFrequentRenterPoints(int daysRented) / 根据租期计算积分 return 1; /儿童价格类的定义class ChildrensPrice extends Price int getPriceCode() return Movie.CHILDRENS; double getCharge(int daysRented) double result = 1.5; if (daysRented 3) result += (daysRented - 3) * 1.5; return result; /新片价格类的定义class NewReleasePrice extends Price int getPriceCode() return Movie.NEW_RELEASE; double getCharge(int daysRented) return daysRented * 3; int getFrequentRenterPoints(int daysRented) return (daysRented 1) ? 2: 1; /普通片价格类的定义class RegularPrice extends Price int getPriceCode() return Movie.REGULAR; double getCharge(int daysRented) double result = 2; if (daysRented 2) result += (daysRented - 2) * 1.5; return result; /影片类和主程序public class Movie public static final int CHILDRENS = 2; public static final int REGULAR = 0; public static final int NEW_RELEASE = 1; private String _title; / 名称 private Price _price; / 影片的价格public Movie(String title, int priceCode) _title = title; setPriceCode(priceCode); public int getPriceCode() return _price.getPriceCode(); public void setPriceCode(int arg) switch (arg) case REGULAR: / 普通片 _price = new RegularPrice(); break; case CHILDRENS: / 儿童片 _price = new ChildrensPrice(); break; case NEW_RELEASE: / 新片 _price = new NewReleasePrice(); break; default: throw new IllegalArgumentException(Incorrect Price Code); public String getTitle() return _title; / 影片租金double getCharge(int daysRented) return _price.getCharge(daysRented); / 影片积分int getFrequentRenterPoints(int daysRented) return _price.getFrequentRenterPoints(daysRented); / 主程序public static void main(String args) System.out.println(Refactoring, a First Example, step7); Movie m1 = new Movie(2012, Movie.NEW_RELEASE); Movie m2 = new Movie(南京南京!, Movie.REGULAR); Movie m3 = new Movie(喜羊羊, Movie.CHILDRENS); Rental r1 = new Rental(m1, 4); Rental r2 = new Rental(m1, 2); Rental r3 = new Rental(m3, 7); Rental r4 = new Rental(m2, 5); Rental r5 = new Rental(m3, 3); Customer c1 = new Customer(张三); c1.addRental(r1); c1.addRental(r4); Customer c2 = new Customer(李四); c2.addRental(r1); c2.addRental(r3); c2.addRental(r2); Customer c3 = new Customer(王五); c3.addRental(r3); c3.addRental(r5); Customer c4 = new Customer(钱六); c4.addRental(r2); c4.addRental(r3); c4.addRental(r5); System.out.println(c1.statement(); System.out.println(c

温馨提示

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

评论

0/150

提交评论