面向对象分析实验报告(模板).doc_第1页
面向对象分析实验报告(模板).doc_第2页
面向对象分析实验报告(模板).doc_第3页
面向对象分析实验报告(模板).doc_第4页
面向对象分析实验报告(模板).doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

精品文档哈尔滨工业大学计算机科学与技术学院2017年秋季学期软件工程Lab 7:OO分析与设计姓名学号联系方式张秀杨115032010918846832593Email/手机号码.精品文档目 录1实验要求12类识别12.1边界类12.2控制类12.3实体类13领域模型13.1分析类图13.2实体类图23.3实体类123.4实体类233.5实体类n34时序模型34.1读入文本并生成有向图34.2查询桥接词34.3根据bridge word生成新文本34.4计算两个单词之间的最短路径34.5随机游走35根据OO模型生成的类代码框架35.1实体类145.2实体类245.3实体类n46对Lab6代码的重构47重构之后的回归测试48测试之后的Git提交49小结4文档全部完成之后,请更新上述区域.1 实验要求针对Lab6之后的Lab1代码,使用OO思想对其进行重构Step 1:识别边界类、控制类、实体类Step 2:设计各边界类、控制类、实体类的属性Step 3:设计各边界类、控制类、实体类的方法Step 4:建立分析类图,描述三种分析类之间的逻辑关系Step 5:建立领域类图,描述实体类之间的五种关系 (继承、关联、组合、聚合、依赖)Step 6:建立时序模型,描述三种分析类之间的消息流和调用关系2 类识别2.1 边界类类名(中文)类名(英文)类的作用概述用户交互界面类UI(project1)用于系统与用户之间的交互2.2 控制类类名(中文)类名(英文)类的作用概述控制向量操作Draw_operate用于控制向量画图操作与数据控制图存储操作模块Graph_operate用于控制图形成与图各种操作反应到界面上2.3 实体类类名(中文)类名(英文)类的作用概述向量储存Vec存句子的一些词连接关系图存储数据结构WordGraph用于存储图以及有关于图中数据的一系列操作画图文件Draw用于在画图系统文本和图片文件内容读写存储3 领域模型3.1 分析类图建立边界类、控制类、实体类之间的关联关系,使用UML类图形式描述(该图需要使用某种UML建模工具绘制)。该分析类图中无需给出实体类的属性和方法。注意:本图中出现的所有类,均应在第2部分的三个表格里有所定义;图中的类名均使用中文。3.2 实体类图仅针对实体类,建立UML类图,需详细刻画各类的全体属性集合(可见性、名称、数据类型)、全体操作集合(可见性、名称、返回值数据类型、参数列表)、类之间的关系(关联、组合、聚合、依赖、继承),以及关系的角色名、多重性、方向等信息。该图需要使用某种UML建模工具绘制。注意:本图中出现的所有实体类,均应在第4.3节的表格里有所定义;图中的类名、属性名、方法名、参数名均使用中文。以下各小节,请给出实体类的详细设计,2.3节表格里出现多少实体类,下面就应该有几个小节。撰写的时候,请将小节标题替换为实体类的中文名字+英文名字。3.3 画图文件Draw属性定义属性名(英文,与程序中的名字一致)属性含义数据类型缺省值可见性(public、private、protected)类型(基本属性、关联属性、状态属性、派生属性)画图文件写好代码的dot文件Fileprivate基本属性图片文件Dot文件转换成的jpg文件Fileprivate基本属性操作设计操作名(英文,与程序中的名字一致)操作含义与内部逻辑概述(即:该方法实现什么功能)可见性参数列表返回值类型类型(对属性CRUD的操作、状态更新操作、辅助操作)名称数据类型生成图代码写成将向量数组中的词变成用dot写的代码PublicwordsArrayListFile图存为图片格式将dot文件转化为图片格式保存PublicFile1FileFile3.4 向量储存 Vec属性定义属性名(英文,与程序中的名字一致)属性含义数据类型缺省值可见性(public、private、protected)类型(基本属性、关联属性、状态属性、派生属性)一维有重复向量文件中的词读取后直接存储的一维向量ArrayListprivate基本属性操作设计操作名(英文,与程序中的名字一致)操作含义与内部逻辑概述(即:该方法实现什么功能)可见性参数列表返回值类型类型(对属性CRUD的操作、状态更新操作、辅助操作)名称数据类型返回向量值 返回当前字符向量变量Public无无ArrayList向量生成 将txt文件中的内容生成一维向量PublictextfileArrayList生成图代码写成将向量数组中的词写入文件变成代码PublicwordsArrayListfile3.5 图存储数据结构 WordGraph属性定义属性名(英文,与程序中的名字一致)属性含义数据类型缺省值可见性(public、private、protected)类型(基本属性、关联属性、状态属性、派生属性)图存储二维向量一个二维矩阵,存储图顶点和边的关系IntPrivate基本属性操作设计操作名(英文,与程序中的名字一致)操作含义与内部逻辑概述(即:该方法实现什么功能)可见性参数列表返回值类型类型(对属性CRUD的操作、状态更新操作、辅助操作)名称数据类型写入二维图向量 写入二维数组,生成图结构PublicwordsArrayListint 最短路径 求两点之间的最短路径并输出路Publicword1StringStringword2String查询桥接词 求两个单词之间的桥接词Publicword1StringStringword2String生成新句子根据句子与已知的数据生成新句子PublicsentenceStringString随机游走不断地随机游走,输出每次完整的路径PublicString4 时序模型针对代码中的三个核心功能,分别建立其时序模型。该模型中包含的所有对象必须在第4部分中被识别出来,包含的所有操作必须包含在第3节的类图和表格中。该图需要使用某种UML建模工具绘制。4.1 读入文本并生成有向图4.2 查询桥接词4.3 根据bridge word生成新文本4.4 计算两个单词之间的最短路径4.5 随机游走5 根据OO模型生成的类代码框架使用UML建模工具,基于3.2节建立的实体类图,生成相应的类代码框架。以实体类为小节,贴出其相应的代码框架。请将小节标题替换为实体类的中文名字+英文名字。5.1 画图文件Draw/ Generated by StarUML(tm) Java Add-In/ Project : Untitled/ File Name : 画图文件.java/ Date : 2017/11/25 星期六/ Author : /public class 画图文件 private Object 画图文件file;private Object 图片文件jpg;public file 生成图代码写成(ArrayList words) private file 图存为图片格式(File file1) 5.2 图存储数据结构WordGraph/ Generated by StarUML(tm) Java Add-In/ Project : Untitled/ File Name : 图存储数据结构.java/ Date : 2017/11/25 星期六/ Author : /public class 图存储数据结构 private Object 图存储二维向量;public abstract int 写入二维图向量(ArrayList words);public String 最短路径(String word1, String word2) public String 查询桥接词(String word1, String word2) public String 生成新句子(String sentence) public String 随机游走() 5.3 向量储存Vec/ Generated by StarUML(tm) Java Add-In/ Project : Untitled/ File Name : 向量储存.java/ Date : 2017/11/25 星期六/ Author : /public class 向量储存 extends 图存储数据结构 protected Object 一维有重复向量;public ArrayList 向量生成(file text) public file 生成图代码写成(ArrayList words) public ArrayList 返回向量值() public int 写入二维图向量(ArrayList words) 6 对Lab6代码的重构阐述你们的重构工作,即:相比Lab6中的代码,基于OO重新设计和实现的代码有哪些大的变化?逐项列出变化,并解释说明,必要时可给出代码来帮助佐证和理解。7 重构之后的回归测试基于Lab6中设计和实现的各黑盒/白盒测试用例,进行回归测试,发现重构代码中存在的问题,并加以修复。给出上述过程的截图作为佐证。8 测试之后的Git提交在Git仓库内建立Lab7分支,提交重构后的代码,push到GitHub仓库。给出本组GitHub的截图,证实你已成上述提交任务。最后,给出本组GitHub上从Lab1开始、历经Lab3、Lab4、Lab6、Lab7之后,完整的提交历史(GitHub项目页面里“Graphs”下的“Network”)。9 小结(1) 建模是否有必要?直接去写代码呗?边写代码边思考,岂不是省了建模的大量时间?非常有必要,直接写代码边写边思考,真的不行。直接开始写代码,代码的结构性,以及整体的设计都会有不足与缺陷,特别是多个模块会分的不清楚,而且在写的过程中浪费了很多的时间去不断修改因为在各个边界控制和类没有考虑到的东西。更难的是多人合作时各个板块完成之后的连接问题。(2) 建模时如果能思考得很细节,其实就相当于写代码时的思考工作。如何能逼着自己在建模时想得更细节,你们是否总结出什么方法?方法就是跟着数据流去在程序中走,设计类似于各种白盒测试的样例去跟着在整个里面整体走一遍,然后再各个模块分别走一边,这样考虑到的就会比较详细了。(3) “面向对象”的分析与设计方法,与传统的以“算法+数据结构”为单位的结构化分析方法相比有什么好的地

温馨提示

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

评论

0/150

提交评论