| 项目 | 内容 |
|---|---|
| 教学班级 | 006 |
| 项目地址 | https://github.com/Junhaoo/IntersectProject2.git |
| 作业属于 | 2020春季计算机学院软件工程(罗杰 任健) |
| 作业要求 | 结对项目作业 |
| 个人课程目标 | 掌握软件工程基础知识 |
| 具体有助方面 | 双人合作能力提高 |
PSP表格
| Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|
| 计划 | ||
| ·估计任务需要时间 | 30 | 30 |
| 开发 | ||
| ·需求分析(包括学习新技术) | 120 | 180 |
| ·生成设计文档 | 30 | 30 |
| ·设计复审(和同事审核设计文档) | 10 | 10 |
| ·代码规范(为目前的开发制定何时规范) | 10 | 20 |
| ·具体设计 | 40 | 50 |
| ·具体编码 | 100 | -- |
| ·代码复审 | 30 | -- |
| ·测试(自我测试,修改代码,提交修改) | 30 | 60 |
| 报告 | ||
| ·测试报告 | 30 | 30 |
| ·计算工作量 | 10 | 20 |
| ·事后总结,并提出过程改进计划 | 10 | 10 |
| 合计 | 450 | 440 |
扩展计算功能
新增功能的实现
本次作业要求在原有求直线交点的基础上增加对射线和线段的交点求解,我的代码想法是:将其都看做对直线,对其交点求解,再根据直线类型判断交点是否在图形上。
实现上利用了工厂模型:

图源菜鸟网站

其中较为重要的函数有:需要重载的函数为 isOnPlot(Dot* dot);
主要类为父类Plot:
单元测试
测试的函数主要有:
- 针对不同线性图形的
isOnPlot(Dot* dot)函数,针对判断点在是否在射线或线段上; - 工程构造函数能否正确构造相应类型;
- 随机数据结合GeoGebra进行验证。
异常处理
| 错误类型 | 解释 |
|---|---|
| OutRangedException | 输入的数据超出给定的(-100000,100000)范围 |
| DuplicatedDotException | 用于确定几何图形的两点重合 |
| UnknownTypeException | 除了C,L,R,S之外的其他类型 |