实验目标
本次实验覆盖课程第 3、5、6 章的内容,目标是编写具有可复用性和可维护 性的软件,主要使用以下软件构造技术:
⚫ 子类型、泛型、多态、重写、重载
⚫ 继承、代理、组合
⚫ 常见的 OO 设计模式
⚫ 语法驱动的编程、正则表达式
⚫ 基于状态的编程
⚫ API 设计、API 复用 本次实验给定了五个具体应用(径赛方案编排、太阳系行星模拟、原子结构 可视化、个人移动 App 生态系统、个人社交系统),学生不是直接针对五个应用 分别编程实现,而是通过 ADT 和泛型等抽象技术,开发一套可复用的 ADT 及其 实现,充分考虑这些应用之间的相似性和差异性,使 ADT 有更大程度的复用(可复用性)和更容易面向各种变化(可维护性)。
实验过程
基于语法的图数据输入
首先就是对于正则表达式的使用:
由于读入的文件数据有规范的格式,所以利用正则表达式来筛选并获得有用的信息。
面向复用的设计:CircularOrbit<L,E>接口
然后就是对泛型的设计与使用
设计抽象类CentralObject和PhysicalObject,然后使用每个轨道系统的中心物体继承CentralObject,轨道上的物体继承PhysicalObject
而CircularOrbit<L,E>中的方法也使用L、E作为参数类型和返回值类型。
可复用API设计
在CircularOrbitApis中设计可以复用的静态方法
图的可视化:第三方API的复用
使用javax.swing.JFrame 和 javax.swing.JPanel绘制轨道系统
学习使用第三方API
实验总结
本次实验中,我们需要根据场景从头来设计ADT,并尝试使用泛型来减少代码与工作量。我们学习了正则表达式的使用;还学习了编写specification, invariants, RI, AF,从而能让自己更清楚的认识到每一个方法具有什么样的功能。
此外,我们还尝试了自己编写API以及使用别人已经编写好的API。通过使用API,可以提高编程的效率。