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

下载本文档

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

文档简介

1、 哈尔滨工业大学计算机科学与技术学院 2017年秋季学期软件工程 Lab 7:OO分析与设计 姓名 学号 联系方式 张秀杨 1150320109Email/手机号码 目 录 1 实验要求 . 1 2 类识别. 1 2.1 边界类 . 1 2.2 控制类 . 1 2.3 实体类 . 1 3 领域模型 . 2 3.1 分析类图 . 2 3.2 实体类图 . 2 3.3 实体类1 . 错误!未定义书签。 3.4 实体类2 . 错误!未定义书签。 3.5 实体类n . 错误!未定义书签。 4 时序模型 . 5 4.1 读入文本并生成有向图 . 6 4.2 查询桥接词 . 6

2、4.3 根据bridge word生成新文本 . 6 4.4 计算两个单词之间的最短路径 . 6 4.5 随机游走 . 6 5 根据OO模型生成的类代码框架 . 6 5.1 实体类1 . 错误!未定义书签。 5.2 实体类2 . 错误!未定义书签。 5.3 实体类n . 错误!未定义书签。 6 对Lab6代码的重构 . 8 7 重构之后的回归测试 . 9 8 测试之后的Git提交 . 9 9 小结. 9 文档全部完成之后,请更新上述区域 1 实验要求 针对Lab6之后的Lab1代码,使用OO思想对其进行重构 Step 1:识别边界类、控制类、实体类 Step 2:设计各边界类、控制类、实体类的

3、属性 Step 3:设计各边界类、控制类、实体类的方法 Step 4:建立分析类图,描述三种分析类之间的逻辑关系 Step 5:建立领域类图,描述实体类之间的五种关系 (继承、关联、组合、聚合、依赖) Step 6:建立时序模型,描述三种分析类之间的消息流和调用关系 2 类识别 2.1 边界类 类名(中文) 类名(英文) 类的作用概述 用户交互界面类 UI(project1) 用于系统与用户之间的交互 2.2 类名(中文) 类名(英文) 类的作用概述 控制向量操作 Draw_operate 用于控制向量画图操作与数据 控制图存储操作模块 Graph_operate 用于控制图形成与图各种操作反

4、应到界面上 控制类 2.3 实体类 类名(中文) 类名(英文) 类的作用概述 向量储存 Vec 存句子的一些词连接关系 图存储数据结构 WordGraph 用于存储图以及有关于图中数据的一系列操作 画图文件 Draw 用于在画图系统文本和图片文件内容读写存储 3 领域模型 3.1 分析类图 建立边界类、控制类、实体类之间的关联关系,使用UML类图形式描述(该图需要使用某种UML建模工具绘制)。 该分析类图中无需给出实体类的属性和方法。 注意:本图中出现的所有类,均应在第2部分的三个表格里有所定义;图中的类名均使用中文。 3.2 实体类图 仅针对实体类,建立UML类图,需详细刻画各类的全体属性集

5、合(可见性、名称、数据类型)、全体操作集合(可见性、名称、返回值数据类型、参数列表)、类之间的关系(关联、组合、聚合、依赖、继承),以及关系的角色名、多重性、方向等信息。 该图需要使用某种UML建模工具绘制。 注意:本图中出现的所有实体类,均应在第4.3节的表格里有所定义;图中的类名、属性名、方法名、参数名均使用中文。 以下各小节,请给出实体类的详细设计,2.3节表格里出现多少实体类,下面就应该有几个小节。撰写的时候,请将小节标题替换为实体类的中文名字+英文名字 3.3 画图文件Draw 属性定义 属性名(英文,与程序属性含义 数据类型 缺省值 可见性(public、private、类型(基本

6、属性、关联属性、状态属中的名字一致) protected) 性、派生属性) 画图文件 写好代码的dot文件 File private 基本属性 图片文件 Dot文件转换成的jpg文件 File private 基本属性 操作设计 操作名(英文,与程序中的名字一致) 操作含义与内部逻辑概述(即:该方法实现什么功能) 可见性 参数列表 返回值类型 类型(对属性CRUD的操作、状态更新操作、辅助操作) 名称 数据类型 生成图代码写成 将向量数组中的词变成用dot写的代码 Public words ArrayList File 图存为图片格式 将dot文件转化为图片格式保存 Public 属性名(英文

7、,与程序中的名字一致) 属性含义 File1 File File 3.4 向量储存 Vec 属性定义 操作名(英文,与程序中的名操作含义与内部逻辑概述(即:该方法实现什么功能) 可见性 参数列表 返回值类型 类型(对属性CRUD名称 数据类型 数据类型 缺省值 可见性(public、private、protected) 类型(基本属性、关联属性、状态属性、派生属性) 一维有重复向量 文件中的词读取后直接存储的一维向量 ArrayList private 基本属性 操作设计 字一致) 的操作、状态更新操作、辅助操作) 返回向量值 返回当前字符向量变量 Public 无 无 ArrayList 向

8、量生成 将txt文件中的内容生成一维向量 Public text file ArrayList 生成图代属性名(英文,与程序中的名字一致) 属性含义 数据类型 缺省值 可见性(public、private、protected) 类型(基本属性、关联属性、状态属性、派生属性) 图存储二维向量 一个二维矩阵,存储图顶点和边的关系 Int Private 基本属性码写成 将向量数组中的词写入文件变成代码 Public words ArrayList file 3.5 图存储数据结构 WordGraph 属性定义 操作名(英文,与程序中的名字一致) 操作含义与内部逻辑概述(即:该方法实现什么功能) 可

9、见性 参数列表 返回值类型 类型(对属性CRUD的操作、状态更新操作、辅助操作) 名称 数据类型 写入二维图向量 写入二维数组,生成图结构 Public words ArrayList int 操作设计 最短路径 求两点之间的最短路径并输出路 Public word1 String String word2 String 查询桥接词 求两个单词之间的桥接词 Public word1 String String word2 String 生成新句子 根据句子与已知的数据生成新句子 Public sentence String String 随机游走 不断地随机游走,输出每次完整的路径 Publi

10、c String 4 时序模型 针对代码中的三个核心功能,分别建立其时序模型。该模型中包含的所有对象必须在第4部分中被识别出来,包含的所有操作必须包含在第3节的类图和表格中。 该图需要使用某种UML建模工具绘制。 4.1 读入文本并生成有向图 4.2 查询桥接词 4.3 根据bridge word生成新文本 4.4 计算两个单词之间的最短路径 4.5 随机游走 5 根据OO模型生成的类代码框架 使用UML建模工具,基于3.2节建立的实体类图,生成相应的类代码框架。以实体类为小节,贴出其相应的代码框架。 请将小节标题替换为实体类的中文名字+英文名字。 5.1 画图文件Draw / / / Gen

11、erated 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 StarU

12、ML(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

13、 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 生成图代

14、码写成(ArrayList words) public ArrayList 返回向量值() public int 写入二维图向量(ArrayList words) 6 对Lab6代码的重构 阐述你们的重构工作,即:相比Lab6中的代码,基于OO重新设计和实现的代码有哪些大的变化?逐项列出变化,并解释说明,必要时可给出代码来帮助佐证和理解。 7 重构之后的回归测试 基于Lab6中设计和实现的各黑盒/白盒测试用例,进行回归测试,发现重构代码中存在的问题,并加以修复。 给出上述过程的截图作为佐证。 8 测试之后的Git提交 在Git仓库内建立Lab7分支,提交重构后的代码,push到GitHub仓库

15、。 给出本组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

提交评论