第二次面向对象博客作业

一、综述

在这几次作业中,我们的作业重点由实现任务慢慢转向了面向对象开发的综合性与平衡性。面向对象开发需要每个类的大小(代码行数)接近,代码容易阅读,说明文档清晰可见。但是,即使到了现在,大家仍然存在很多细节方面的问题。例如在正则表达式中我所阅读到的代码仍然有很多“\d*”的存在,或者是有人使用了Integer.phraseInt(string)进行转换。正则表达式能够进行匹配它是不是数字,但是不能匹配他是不是一个合法的数字(比如超长的2147483648)这些问题值得大家讨论相互商榷并进行相关优化。

此外,在综合类问题中我仍然得到了未经测试过的代码,正常情况不能运行,然而作者自己却不知道。因此我认为,作者自己需要进行相关的debug而不是等待扣分。

二、面向对象第五次作业—多线程电梯调度

第五次作业的多线程电梯调度程序我出现了问题。因为时间比较匆忙,我只完成了相关的结构,完全没有测试正则表达式的数据和模拟运行的状态便提交了作业。最终导致了自己的无效作业。我只测试了正常情况下的错误输入,但是正常情况下的正确极端输入并没有进行相关测试。

这次的电梯调度作业是反复的进

三、面向对象第六次作业—IFTTT模拟

在第六次的作业中,我们实现了文件监控程序。对于每一个文件,我们需要实现递归的监控。我认为,监控的难点在于新建文件。对于新建文件,需要判断其是否是其他文件的重命名或者更改时间。

对于这新建的文件查重涉及到两个集合的操作。对于两个集合的互斥部分,需要判断其是否存在对应关系。但是这个对应关系同时包括了时间、名字等信息的改变。因此不能只写一种.equals 函数,需要定义多种equals函数及比较函数判断两个文件是否存在对应关系。

file类型不是安全的文件访问类型。对于每一个file对象,我们需要创建独一无二的file对象防止同时出现读和写操作。其实在这个过程中,因为读(监控器进程)和写(指令进程)存在相关的操作,其实可以通过自己的wait方法明白这个文件曾经被占用过。因此所谓的“读和写两个进程回见不能存在相互通信”实际上是很难做到的。

四、面向对象第七次作业—第一次模拟出租车调度。

在这一次作业中,存在大量的随机性。随机性的来源是车辆的移动位置。通过观测可以得到,车辆很大的概率是在走回头路。

因为有一百个线程的存在,因此在实际操控车辆的移动过程中,车辆的唤醒时间是随机的。因此,睡眠时间长度不应该是

  Sleep(200)//默认情况下是200ms睡眠一个周期

而应该是Sleep(200-(currenttimemill - previous time mill));以此保证多个线程的时间同步效应。

此外,在这一次的出租车寻路过程中,我的寻路方式是建立bfs,向着更短路径的位置前进。但在未来的堵路等情况下,bfs可能不是最优的选择。

我保存了bfs的时间效果。在三秒钟的时间范围内进行了两次的bfs搜索,以此使得出租车运行时候不需要进行过于复杂的寻路方式。

gui的bfs没有进行bfs 的结果的储存,我认为这应该是后面作业所需要的结果。

猜你喜欢

转载自www.cnblogs.com/pfz-blog/p/8976770.html