软件构造lab3

目标是编写具有可复用性和可维护性的软件,主要使用以下软件构造技术:
子类型、泛型、多态、重写、重载
继承、代理、组合
常见的 OO 设计模式
语法驱动的编程、正则表达式
基于状态的编程
API 设计、API 复用

设计并实现一个抽象数据类型 CircularOrbit,对现实中的各类具备“具有一个圆心/中心点、围绕圆心的多条环路/轨道、多个物体分布在圆心和不同环路上”特征的事物进行抽象,并在具体应用中使用它。在设计该 ADT 时,对其进行泛型化,考虑中心点物体的不同类型、各环路上物体的不同类型,从而使其抽象能力更强、适应现实中不同情况需求的能力更强。
TrackGame
AtomStructure
SocialNetworkCircle

不同:
trackgame需要分组,甚至调换分组,其他的不需要,
AtomStructure轨道上物体没什么差异
SocialNetworkCircle包含关系

相同:
他们都可构成轨道系统,
添加/删除轨道,在某一轨道上添加/删除物体,获得轨道系统的熵值,
并可用MAP来进行可视化

3.1基于语法的图数据输入
利用正则表达式读取文件中的信息,并调用构造函数

3.2面向复用的设计:CircularOrbit
设计新的接口 CircularOrbit<L,E>,其中 L 和 E 分别代表多轨道系统的中心点物体类型和轨道物体的类型。

部分内容如下
void addtrack();
void deletetrack(int i);
void addcenter(L item);
void addobject(int i,E x);
void deleteobject(int i,E x);
void addrelation1();
void addrelation2();
void readfile(File corpus) throws IOException;

进而,设计一个类 ConcreteCircularOrbit 来实现它。
ConcreteCircularOrbit 类中,实现 CircularOrbit 中的所有方法。

从 ConcreteCircularOrbit 派生出面向应用的类,分别是:
TrackGame
AtomStructure
SocialNetworkCircle

3.3面向复用的设计:Track
记录轨道编号和半径

3.4面向复用的设计:CentralObject
实现 CircularOrbit中的 L,即表征中心点物体的类 CentralObject。
根据实验要求完成 L 的具体类的设计和实现
原子核和人

3.5面向复用的设计:PhysicalObject
实现 ConcreteCircularOrbit<L,E>中的 E,即代表分布在不同轨道上的物体类 PhysicalObject。
根据实验要求完成 E 的具体类的设计和实现

运动员 电子 人

3.6可复用 API 设计
JFrame

3.7具体应用开发

  1. 读取数据文件,生成多轨道结构
  2. 可视化展示文件读入的或程序产生的多轨道结构
  3. 用户提供必要信息,以增加新轨道、向特定轨道上增加物体
  4. 用户提供必要信息,以从特定轨道上删除物体、删除整条轨道
  5. 计算熵值;
  6. 每个应用所需的特殊功能
  7. 判断多轨道系统的合法性

心得:
使用语法和正则表达式去解析输入文件并据此构造对象,是一项重要能力
次实验你尝试着开发给别人使用的API,遇到了不少困难

猜你喜欢

转载自blog.csdn.net/weiaibeachsea/article/details/93402500