本周我们完成的任务是傻瓜电梯的调度,对于那十分十分详细的指导书,我感觉想要说明白题目要求,是做不到的,所以就把指导书贴出来给大家看了,,由于在下还不会网页制作,只能通过百度网盘了,https://pan.baidu.com/s/12KLXnQa9ifh1hZQrvqhjAw/pdf争取下次用网页吧,虽然不知道什么时候才能学会。

看完题目我们开始分析吧,

从最直接的角度分析就是请求与调度的关系,直接点就是,发出请求,然后处理请求,将所有合法请求过程构成请求队列,调度器处理一个请求就是根据当前电梯状态发出一条指令,然后电梯运行该条指令,然后更新电梯的状态,然后返回状态只调度器,直到执行完最后一条指令。所以按照思想构造出五个类,但这次作业,在下并没有完全按照要求写,虽然是五个类,但是五个类的作用并不是完全按给出的建议。首先说一下几个类的功能:

  1. 输入我们使用主类,虽然输入是来自电梯类与楼层类,但是作为两处输入太过于麻烦,所以我们使用主类输入
  2. W_legal类,该类作为对于输入的第一层判断,也就是简单的过滤一些不合法输入
  3. Demand类,该类也是作为对于输入的判断,将所有不合法的输入过滤,得到是正确的请求队列
  4. Scheduler类,该类就调度器类,在该类中判断是否是同质请求,同时时间与队列是该类的关键的两个属性,时间用于判断当前类的请求时间与当前时间的大小,请求队列用于判断是否执行结束
  5. Elevator类,该类就是电梯类,接收来自调度器的指令,然后执行该指令,该类中的方法change()意思就是执行指令,然后改变电梯的运行状态,然后返回状态给调度类

对于该想法,本来我也觉得天衣无缝,只可惜还是有漏网之鱼,先列出自己的bug吧:

  1. 对于输入,我依旧采用了第一次作业方法,对输入使用find(),错误……,导致只要存在符合条件的输入就会执行,而忽略了必须是完全匹配的条件
  2. 对于数字的判断,题目的要求是4字节的整数,由于在java中是不存在unsigned类型的数据类型的,也就意味着,我们的数字最大位2^32-1,而不是2^31-1,所有数据类型要是long类型,我都是这么写的,但是还是错了,那么错误在哪里呢?本来在使用下面的这个方法时要注意一点时,一定要是有try catch,除非你事先确定了数据的位数
  3. max = Long.parseLong("4294967295");

对于自己想法的优化:

  1. 最需要优化的地方当然是输入,所以第三次作业在下重写写了一个输入,具体见第三次作业,
  2. 如果还有什么要优化的话那就是代码风格吧

为了纪念自己第一次使用面向对象的方法来实现这个作业,容我贴一点核心代码

request_new.request_old = legal_1.num;
request_new.deal(); //得到一个队列,队列中是按时间顺序的请求都是合法请求
sche.request_n = request_new.request1;
sche.fetch();
while(sche.request_n[sche.i][0]!=0) {
sche.state_c = elev.state;
sche.stop_time = elev.st_time;
sche.deal_t();
elev.move = sche.instr_o;
elev.change();
sche.i++;
}

面向对象初调用:foolish 电梯的更多相关文章

  1. C#-面向对象——如何调用使用类 普通方法、静态方法的使用

    类的调用使用 新建的类的命名空间与主函数的命名空间默认相同,如果不同,则主函数无法调用自定义类 比如: 只需要进行引用即可 如果不知道方法的类名,可以右键鼠标 → 解析 → using 即可 普通方法 ...

  2. TypeScript之面向对象初体验

    1.安装nodejs和vscode: nodejs : https://nodejs.org/en/ Visual Studio Code :  https://www.visualstudio.co ...

  3. python_92_面向对象初体验

    class dog: def __init__(self,name): self.name=name def bulk(self): print('%s汪汪汪!'%self.name) d1=dog( ...

  4. day24:面向对象设计与面向对象编程、类和对象

    一.三大编程范式: 面向过程: 面向函数: 面向对象: 二.程序的进化论: 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 2.从上述的指令中提取重复的代码块或逻辑,组织到一起(比方说,你定 ...

  5. python 面向对象学习

    ------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...

  6. Python第六章 面向对象

    第六章 面向对象 1.面向对象初了解 ​ 面向对象的优点: ​ 1.对相似功能的函数,同一个业务下的函数进行归类,分类 ​ 2.类是一个公共的模板,对象就是从具体的模板中实例化出来的,得到对象就得到一 ...

  7. 10 . Python之面向对象

    面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向对象初识别 面向过程v ...

  8. OO第二单元电梯作业总结

    目录 目录一.第一次作业分析设计策略基于度量分析程序结构二.第二次作业分析设计策略基于度量分析程序结构三.第三次作业分析设计策略基于度量分析程序结构四.分析自己程序的bug五.发现别人程序bug所采用 ...

  9. Python基础入门(6)- 面向对象编程

    1.初识面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本篇随笔将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象 ...

随机推荐

  1. Pandas新建一个DataFrame

    我们在使用Pandas时候,前提需要一个新的DataFrame,需要首先初始化一个: 那么可以根据字典形式初始化: # 新建一个dataFrame df = pd.DataFrame({']) 必须包 ...

  2. HDU - 5969 最大的位或 想法题

    http://acm.hdu.edu.cn/showproblem.php?pid=5969 (合肥)区域赛签到题...orz 题意:给你l,r,求x|y的max,x,y满足l<=x<=y ...

  3. ip相关问题解答

    用路由器上网时电脑的设置: ===================== 路由器如何设置另外讨论,现只讲电脑的设置.在Windows XP下: 1.确定桌面上有没有“网上邻居”图标,如果没有,在桌面空白 ...

  4. WIN7怎么把暴风影视库去除?

    最近在win7 64位系统上安装新版暴风,打开我的电脑里面多了个暴风影视库图标,点击右键也没有删除 每次一打开“计算机”看见这个很碍眼.怎么把它关闭呢? 方法如下: 打开注册表,删除此项 HKEY_C ...

  5. 【python-opencv】几何变换

    """几何变换-缩放""" img = cv.imread(r'pictures\family.jpg') ""&quo ...

  6. kubernetes实战(十六):k8s高可用集群平滑升级 v1.11.x 到v1.12.x

    1.基本概念 升级之后所有的containers会重启,因为hash值会变. 不可跨版本升级. 2.升级Master节点 当前版本 [root@k8s-master01 ~]# kubeadm ver ...

  7. mysql 权限管理 revoke 回收权限 命令

    回收所有库,所有表的所有权限 revoke all on *.* from 针对mike的账号 回收 所有库,所有表的select权限 mysql> revoke select on *.* f ...

  8. word自动导入目录

    1:如果在编写word时,有给各章添加标题,可以使用word的目录生成功能,如图:

  9. mathtype使用方法

    1:使mathtype中的公式左对齐 双击你的公式,进入mathtype编辑状态.用鼠标选中花括号右边的三行公式,不包括花括号本身,然后点format---matrix---change matrix ...

  10. background 背景图片 在IE8中不显示解决方法

    我给ul加了一个背景图片 background 火狐 ie9 ch都显示.唯独在IE8中不显示 之前的样式代码 background: url( rgba(, , , ); 在ie8中改成 backg ...