写在最前:

我我我我我我靠,以后再也不再ddl截止前1小时调试程序了!之前在DDL前1小时修改程序,当我改完后,我想着,再把之前的测试样例跑一遍,如果都对就OK了。就在这时,问题出现了,我之前正确的测试样例变成错误了。我心头一惊,想着会不会是哪里改错了。但是更恐怖的事情还在后面,我打开之后,我的输出是——没有输出!无可奈何之下,我先在本地测了一下,发现是正确的。同样的样例不止一个。很无奈之下,我又交了一次。更更恐怖的事情出现了,刚才错的对了!正当我惊喜之余,发现更更更恐怖的事情,刚才对的又错了。重复好几次,输出为空就像薛定谔的猫一样,随机出现。

我只能安慰自己,这大概是评测机的问题吧,挥手向DDL告别。

正文:

此次作业我们目标是实现一个单部电梯运行控制系统,电梯调度策略为先来先服务(FAFS),与真实生活相比较为简单。接下来我将简单回顾下自己该项目的完成过程,力求再进行项目设计与实现时能够更加合理。

指导书阅读

在项目开发之前,指导书的阅读总是重中之重。在此次项目开发中,指导书的阅读同样占用了不短的时间——一个晚上的时间。

由于指导书本身较长,单通读一遍所花时间已经很长。往往发生的情况是读了后面的忘了前面的,必须要长时间阅读才能对所需完成的项目在任务目标和输入输出格式上有一个基本的了解。此次阅读中我采用了一种方法,感觉效果不错,那就是——笔记!在阅读指导书的同时将要求按照自己的理解进行重新编写,一方面帮助自己更好地理解项目,同时也大大缩减了书写readme的时间。(更为具体的阅读指导书的思路就暂时没有了)

类的构建及相互之间的关系

在进行电梯系统设计时,由于需要将任务分割为多个对象进行分别设计,那这些不同的对象之间如何交互便显得尤为重要。此次电梯控制系统需要设计的主要类有五种,电梯,楼层,调度器,请求队列,请求。在设计之前,首先需要明确五个类各自的功能。

请求类是信息传输的数据包,该类作为信息单位来承担类与类之间交换的责任。电梯由实际状态和电路两部分组成。楼梯有获取上下行请求的需求。电梯与楼层将请求发送至请求队列,调度器获取请求对电梯进行调度。

关键的问题是类与类之间如何交互?

我们当然可以将交互信息放在主函数中,但是这样在该系统中主函数便是一个信息传递的中心,与我们希望实现一个半封闭的电梯系统背道而驰。我们更希望类本身之间能够进行相互访问。想要相互访问,我能想到的方法便是让某些类的对象引用作为属性存在于其他类中。

再结合需求分析,我采取了如下的类的结构关系:

调度器、楼层、电梯共享一个实例化的请求队列类,同时电梯也作为调度器的一个属性存在。采用这种方式实现类与类之间的交互

代码编写

当我回顾编写代码的过程时,总觉得有些哭笑不得。在构思清楚类与类之后,花费一晚上时间才构建并调试好各个类和一个输入的框架,实现了能够将正确的请求列队的操作。当我代码码到这一步时,从来不曾想过该如何实现电梯的调度。而真正开始思考并编写核心——电梯的运转逻辑,竟然只花了前者一半的时间。这样的时间差真让人无可奈何。

java第二部分项目_Java_第二次作业:项目构思与实现相关推荐

  1. 20172307 结对编程项目-四则运算 第二周 阶段总结

    20172307 结对编程项目-四则运算 第二周 阶段总结 (结队项目码云地址) 相关过程截图(关键代码处加了注释) 编写出实现中缀转后缀的类Transform /*Transform.java 作者 ...

  2. Java数据结构和算法(第二版)

    Java数据结构和算法(第二版) 下载地址 https://pan.baidu.com/s/112D5houIgu0eMs_i5o0Ujw 扫码下面二维码关注公众号回复 100066获取分享码 本书目 ...

  3. java第二章复习_JAVA第二章知识点

    JAVA第二章知识点 本章知识梳理 2.1 关键字 2.2 标识符 2.3 变 量 2.4运算符 2.5 程序流程控制 2.6 方法 2.1 关键字 关键字(keyword)的定义和特点 定义:被ja ...

  4. 【eoe特刊】第二十七期 OpenGL ES学习及项目解析

    经过一个月征稿.编辑,新的一版特刊终于出炉了. 本次特刊的制作,改变以往的制作方式,完全取自网友的独自的风格. 在只有一个主题的前提下,完全是通过社区的热心的网友,根据自己的想法,自行设计,自由发挥, ...

  5. 《软件项目管理(第二版)》第 4 章——项目估算 重点部分总结

    文章目录 前言 一.单选题 二.简答题 总结 前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理.团队协作开发等,这就是软件项目管理 ...

  6. 《软件项目管理(第二版)》第 2 章——项目准备和启动 重点部分总结

    文章目录 前言 一.单选题 二.判断题 三.简答题 总结 前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理.团队协作开发等,这就是 ...

  7. 《软件项目管理(第二版)》第 6 章——项目质量管理 重点部分总结

    文章目录 前言 一.单选题 二.判断题 三.简答题 总结 前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理.团队协作开发等,这就是 ...

  8. 《软件项目管理(第二版)》第 7 章——项目风险管理 重点部分总结

    文章目录 前言 一.单选题 二.填空题 三.简答题 四.论述题 总结 前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理.团队协作开 ...

  9. 《软件项目管理(第二版)》第 8 章——项目团队与干系人 重点部分总结

    文章目录 前言 一.简答题 二.论述题 总结 前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理.团队协作开发等,这就是软件项目管理 ...

最新文章

  1. mvc ajax_返回数据
  2. BZOJ 1589 Trick or Treat on the Farm (tarjan缩点,记忆化搜索)[Usaco 2008 Dec Gold]【BZOJ计划】
  3. escape sequence
  4. Kafka笔记:kafka原理简介以及架构
  5. Leet Code OJ 26. Remove Duplicates from Sorted Array [Difficulty: Easy]
  6. VMware pro 15 ubuntu简易安装虚拟机黑屏
  7. 云服务器 ECS(CentOS) 安装 Node
  8. bzoj 1095 捉迷藏
  9. 【XSY1295】calc n个点n条边无向连通图计数 prufer序列
  10. Wirkshark表达式
  11. Linux之chmod命令
  12. MATLAB如何导出高分辨率的模型图片、PDF
  13. 基于ArcScene简单实验操作
  14. 听说你的淘客群又做死了?来学学群维护这几招!
  15. 【Unity3D】Unity5打不开VS2017,Unity打开VS2017异常,并且有时候最后打开的是Mono的解决方案
  16. 安装SQL Server2000 与 SP4补丁时挂起解决
  17. 阿里云安全组设定(虚拟机端口打开)
  18. windbg符号下载
  19. jQuery实战读书笔记(第一章至第四章)
  20. 用树莓派 ZeroW 做一个无线网卡

热门文章

  1. RHEL 7 中 systemctl 的用法(替代service 和 chkconfig)
  2. java简单自定义Annotation
  3. 实数历史无穷小能否带领我们直接走向今日科学之辉煌?
  4. Online Judge System
  5. android 本地地址转换为url,android本地mipmap图片转url、绝对路径转URL URL URI File Path 转换...
  6. Hive 导入CSV文件
  7. Oracle expdp/impdp导出导入命令及数据库备份
  8. MR程序的几种提交运行模式
  9. 物理借助传感器用计算机测速度,用打点计时器测速度教案_物理_教学设计_人教版...
  10. [转载] Java基础——关联、聚合、组合