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

写在最前:

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

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

正文:

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

指导书阅读

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

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

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

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

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

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

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

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

6cc9f8eed8b3fed342549dbc8a8f07fa.png

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

代码编写

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java变量用来干嘛_Java

一、Maven的简介1、Maven是什么?Apache Maven是一个软件项目管理的综合工具。基于项目对象模型(POM)的概念,提供了帮助管理构建、文档、报告、依赖、发布等方法,Maven简化和标准化项目建设过程。处理编译,分配,文档&am…

mysql 视图 数据相加_MySQL

查看安装路径ps -ef|grep mysql1,配置linux虚拟机,修改IP????? vim /etc/sysconfig/network-scripts/ifcfg-eth02,配置完网卡之后,执行清空命令3,reboot查看生产环境上传文件MySQL5.5编译方式安装过程参考连接&am…

java 任意代码执行漏洞_php-fpm在nginx特定环境下的任意代码执行漏洞(CVE-2019-11043)...

目录0x01 漏洞介绍0x02 漏洞影响0x03 漏洞复现0x01 漏洞介绍在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现,向目标服务器 URL 发送%0a符号时,服务返回异常,疑似存在漏洞。在nginx上…

c enum能像java一样吗_不一样的Java Enum

Emum是在Java5中引入的新特性,从那开始,它被广泛的用在不同的Java应用中,相比于C和C的Enum,Java的Enum功能更加强大。但是很多开发人员暂时还没意识到它的强大之处,在Enum的一些细节问题上把握的还不到位。Enum的特性及…

java se 9.0.4_jre 9下载(Java SE Runtime Environment)下载

JRE9官方下载是运行JAVA程序不可缺少的环境。JRE中由ClassLoader负责查找和加载程序引用到的类库,基础类库ClassLoader会到rt.jar中自动加载,其它的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索,按照先来先到的原则&…

php 屏蔽ctrl c,ctrl+c用不了怎么回事

解决办法:首先在运行里输入clipbrd打开剪贴板查看器看看里面是什么东西如果是剪贴板卡死了的话重启可解决问题如果不是复制个别的东西还是那个那么需要杀毒了!(可能是灰鸽子病毒,冲击、震荡、狙击等都有可能导致不能复制粘贴剪切)方法一&…

java在控制台打印余弦曲线,java打印正弦曲线示例

代码如下:/** 绘制0到360的正弦曲线* 分两种情形&#xff0c;y>0和y<0进行绘制* 每种情形中要考虑每行打印两个"*"字符* 并在打印第二个"*"字符后换行*/package hundred;import java.lang.Math;public class SinTest {public static void main(Strin…

matlab怎么计算行列式,Matlab 线性代数(一)–行列式与方程组求解 | 学步园

1.%用克莱姆法则求解方程组clearninput(方程个数)Ainput(系数矩阵A)binput(常数列向量b)if((size(A)~[n,n])|(size(b)~[n,1])) %判断矩阵A和向量b输入格式是否正确disp(输入不正确&#xff0c;要求A是n阶方阵&#xff0c;b是n维列向量) %disp:显示字符串elseif det(A)0 %判断系…

matlab计算16 1 3近似值,8. 科学计算软件Matlab中默认情况下π为近似值3.1416,该近似值与π真值的( )...

柄残的叶的药密集排列突起可见基和材轮状&#xff0c;学计下π部略膨大根头。胸闷&#xff0c;算软似值似值不畅呼吸月1个&#xff0c;为能的最可诊断&#xff0c;信号团块中后纵隔状等I检查见稍高&#xff0c;静脉上腔受压。白细胞&#xff1a;中真值&#xff0c;当病现声音嘶…

加密扩展库 php,如何利Mcrypt扩展库进行加密和解密_php

综述&#xff1a;Mcrypt 2.4.7是一个功能强大的加密算法扩展库&#xff0c;它包括有22种算法&#xff0c;其中就包括下面的几种算法&#xff1a;Blowfish RC2 Safer-sk64 xteaCast-256 RC4 Safer-sk128DES RC4-iv SerpentEnigma Rijndael-128 Threewayhttp://www.gaodaima.com/…

php中数组下标,PHP数组介绍_php

数组基础&#xff1a;php中&#xff0c;数组的下标可以整数&#xff0c;也可以是字符串php中&#xff0c;数组的元素顺序不是由下标决定&#xff0c;而是由其“加入”的顺序决定定义&#xff1a;$arr1 array(元素1&#xff0c;元素2&#xff0c;。。。。。。);array(1,1.1,5,a…

php支持ssi,让Apache支持SHTML(SSI)的配置方法

shtml和asp有一些相似&#xff0c;以shtml命名的文件里&#xff0c;使用了ssi的一些指令&#xff0c;就像asp中的指令&#xff0c;你可以在SHTML文件中写入SSI指令&#xff0c;当客户端访问这些shtml文件时&#xff0c;服务器端会把这些SHTML文件进行读取和解释&#xff0c;把S…

在电脑搭建oracle服务器端,oracle 服务器端搭建(C#开发环境)

oracle 服务器端搭建(C#开发环境)oracle 服务器端搭建(C#开发环境)常见问题&#xff1a;问&#xff1a;安装plsql 能直接 连接 oracle 服务器端吗&#xff1f;答&#xff1a;32可以直接连接&#xff0c;但是64为需要配置问&#xff1a;下载plsql 对于的版本的选择 是选择64位好…

【网络奇遇记】揭秘计算机网络的性能指标:速率|带宽|吞吐量|时延

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 速率1.1 数据量1.2 速率 二. 带宽三. 吞吐量四. 时延4.1 发送时延4.2 传播时延…

怎么查看ip地址下的php文件夹,pe下查看原系统ip的方法

pe下查看原系统ip的方法方法及步骤如下&#xff1a;在PE下加载注册表&#xff0c;找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces]&#xff0c;在“Interfaces”选项下面可以看到有多个注册表子项&#xff0c;依照不同子项下面的“IP…

linux cmake 编译项目,使用CMake构建复杂工程

0. 什么是CMakeCMake是一个跨平台的编译、安装、测试以及打包工具&#xff1b;CMake不直接编译软件&#xff0c;而是结合原生构建系统来构建软件。CMake配置文件是CMakeList.txt文件(每个源码文件夹下都要有一个)&#xff0c;CMake根据配置文件在生成Unix的Makefile或VS的solut…

Linux防火墙屏蔽ip6,观点|Linux 发行版们应该禁用 IPv4 映射的 IPv6 地址吗?

从各方面来看&#xff0c;互联网向 IPv6 的过渡是件很缓慢的事情。不过在最近几年&#xff0c;可能是由于 IPv4 地址资源的枯竭&#xff0c;IPv6 的使用处于上升态势。相应的&#xff0c;开发者也有兴趣确保软件能在 IPv4 和 IPv6 下工作。但是&#xff0c;正如近期 OpenBSD 邮…

linux和pe修复win10启动项,pe下如何重建win10引导?pe下win10引导修复图文教程

[文章导读] 随着win10系统的流行&#xff0c;越来越多的小伙伴经常遇到win10系统引导丢失的情况&#xff0c;我们知道win10系统现在采用的是uefi引导&#xff0c;以前的一些修复工具都只能修复传统模式mbr格式下的硬引导&#xff0c;但对于uefi引导不是很清楚&#xff0c;uefi引…

c语言课程设计大作业模版,c语言课程设计报告模板下载

c语言课程设计报告模板是一款专业的设计模板&#xff0c;对于在大学有需要些设计报告的朋友&#xff0c;可以下载这款模板作为参考&#xff0c;了解设计报告的需求&#xff0c;基本上毕业的论文设计也是在这个基础上严格要求的&#xff0c;欢迎下载使用。C语言介绍C语言是一门面…

c语言如何把变量按位颠倒,求答案,用C语言编程,用户输入一个正整数,把他的各位数字前后颠倒,并输入点到后的结果...

满意答案q15173278975推荐于 2017.11.26采纳率&#xff1a;58% 等级&#xff1a;13已帮助&#xff1a;5665人用字符串处理很简单#include #include void main (){int n,i;char s[20];scanf("%d", &n);sprintf(s,"%d", n);printf("%d\n",s…