BUAAOO电梯作业总结

自己的初始的傻瓜式电梯设计:

最初的要求是写一部傻瓜式的电梯来满足最基本的电梯需求,电梯的初始设计直接是按照着指导书的输出要求进行了针对的设计。相当于按照需求的输出来对于指令进行翻译的过程,初始的想法就是设计出四个类来满足对应的需求。

线程分成两个,一个是掌控着输入的input线程,帮助用户获取对应的输入并且是存到调度器的内部,另外的一个就是模拟电梯的运行的电梯模拟线程,帮助模拟电梯的运行。对于类的设计,第一个应该是电梯的对应类,包括对于电梯的各种行为的控制以及模拟,之后是input类,对于输入,将输入一个个put到调度器的内部,第三个就应该是调度器的类,对于input类put进来的输入进行处理来传出到电梯这一个类的内部,最后就是main类,总管其余三个类。

首先是对于电梯的类的设计,主要是考虑到了生产者和消费者的模型进行了基础的设计。对于内部的输出的方法,分为了,上下楼,开关门,出入人这几个对应的方面来进行了相关地设计。根据了指导书的输出的接口进行了对应的输出来模拟。同时在函数的内部是采取了sleep的方式来对于需求等待的时间进行了相关的模拟。之后是对于run方法的设计:设计了一个while(true)的死循环来不断从调度器的内部获取相关的请求,每次都是采取了一个获取请求的方法来获取调度器的对应请求,之后进行请求的执行。如果是执行到最后的情况的话,那么就会是判断到一个特殊的输入,从而导致整体break然后电梯的这一个线程就会终止完成。整体的类的初始的构造方法就是,构造初始的楼层为1,之后构造一个调度器供给电梯进行对应的使用,完成后面的需求。

之后是对于input类的设计,构造这一个类的方式就是使用一个对应的调度器进行传入,每当input获取到一个对应的需求的时候,就直接使用put对应方法将需求压入对应的调度器的内部,之后就是交给调度器进行相关的处理。

第三个就是对于构造器的类的设计,因为是傻瓜式的调度,其实只要是保证对于获取到的输入进行收集,当电梯需求获取对应的指令的时候进行输出就足够。所以其实是只需要两个方法,一个是对于输入进行put进一个是对于输出进行get出。

最后也就是main函数的设计,main函数主要还是根据逻辑的执行的顺序对于程序有一个类似于统领的作用,使用start方法来启动对应的线程处理。

关于自己的程序的分析以及对应的度量:

 

自己的程序以及相关的bug:

因为是傻瓜式的电梯设计,所以最容易出现bug的地方还是对于程序的输入的处理的部分。在调试的过程之中,因为要满足程序的关于定时投放的要求,所以要尝试一直对于输入进行提取,直到应该结束的时候再对于程序进行结束。在结束程序以及满足定时投放的方面还是有很多的问题,主要就是该结束的时候不结束,以及运行的时候卡住的问题。

后面的改进主要是采取了最后结束插入特殊字符串的方式,一旦是电梯从调度器里面检测出了对应的特殊字符串以后就直接停止收取指令,从而完成对于程序的结束,这样也就是修复了相关的bug。

关于如何发现其他的人的bug采取的策略:

还是采取一些较为特殊的楼层的尝试以及对于程序对于定时投放的相关的测试来发现,因为作业的输入以及输出的接口都是已经在网站上面设计完成,所以很难通过一些奇奇怪怪的输入输出来对于整体进行hack。主要的尝试hack的方式还是对于正确性质的判断。

最后的总结:

对于这一个部分的最大的收获应该就是逐渐学会如何抽象出对应的线程以及相关的类来满足需求。同时也是在课上的学习的过程之中逐渐了解到了相关的多线程的相关,我们之后编写的程序更可能的就是运行在一个多线程的环境里面,所以现在还是很有必要掌握关于多线程的设计的方式。

比较遗憾的就是因为事件的问题错过了很多相关的练习。

转载于:https://www.cnblogs.com/hsc503680421/p/10740636.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值