HIT 软件构造 Lab3

2020年春季学期

计算机学院《软件构造》课程

Lab3实验报告

  1. 实验目标概述

本次实验覆盖课程第 3、4、5 章的内容,目标是编写具有可复用性和可维护性的软件,主要使用以下软件构造技术:

1.子类型、泛型、多态、重写、重载

2.继承、代理、组合

3.常见的 OO 设计模式

4.语法驱动的编程、正则表达式

5.基于状态的编程

6.API 设计、API 复用

本次实验给定了五个具体应用(高铁车次管理、航班管理、操作系统进程管理、大学课表管理、学习活动日程管理),学生不是直接针对五个应用分别编程实现,而是通过 ADT 和泛型等抽象技术,开发一套可复用的 ADT 及其实现,充分考虑这些应用之间的相似性和差异性,使 ADT 有更大程度的复用(可复用性)和更容易面向各种变化(可维护性)。

2 实验环境配置

沿用Lab1搭建的环境

在这里给出你的GitHub Lab3仓库的URL地址(Lab3-学号)。

https://github.com/ComputerScienceHIT/Lab3-1180300612.git

3 实验过程

3.1 待开发的三个应用场景

  1. 航班管理

  2. 高铁车次管理

  3. 大学课表管理

1.位置有一个,两个,多个

2.位置仅有课程可改变

3.航班和课程为单个资源,高铁为多个有序资源

4.仅有高铁可阻塞

5.时间均在创建时确定

3.2 面向可复用性和可维护性的设计:PlanningEntry

3.2.1 PlanningEntry的共性操作

一些针对计划项的操作
在这里插入图片描述

3.2.2 局部共性特征的设计方案
在这里插入图片描述
计划项名称
在这里插入图片描述
Getter方法

3.2.3 面向各应用的PlanningEntry子类型设计(个性化特征的设计方案)

方案二

将特殊操作放入底层子类
在这里插入图片描述

3.3 面向复用的设计:R

直接以三个类的形式实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4 面向复用的设计:Location

属性
在这里插入图片描述

构造函数
在这里插入图片描述

Setter
在这里插入图片描述

Getter
在这里插入图片描述

3.5 面向复用的设计:Timeslot

属性
在这里插入图片描述

构造器
在这里插入图片描述

Setter
在这里插入图片描述

Getter
在这里插入图片描述

3.6 面向复用的设计:EntryState及State设计模式

属性
在这里插入图片描述

Getter
在这里插入图片描述

3.7 面向应用的设计:Board

创建一个Board类

定义两个动态数组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后在各子类中应用遍历器

3.8 Board的可视化:外部API的复用

使用AWT 实现GUI界面

创建一个GuiBoard类

在各个应用Board类的最后调用GuiBoard类中的方法

传入需要输出的信息的字符串数组
在这里插入图片描述

以按钮形式添加到信息板
在这里插入图片描述

如果GUI界面中文显示为方格

在VM arguments:中输入-Dfile.encoding=gbk再运行
在这里插入图片描述

3.12 应用设计与开发

3.12.1 航班应用

实现功能
在这里插入图片描述

3.12.2 高铁应用

实现功能
在这里插入图片描述

3.12.3 课表应用

实现功能
在这里插入图片描述

3.15 Git仓库结构

请在完成全部实验要求之后,利用Git log指令或Git图形化客户端或GitHub上项目仓库的Insight页面,给出你的仓库到目前为止的Object Graph,尤其是区分清楚314change分支和master分支所指向的位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值