OO第二次博客作业——多线程

写在前面:

早在OO课程刚开始的时候,就已经听说了这几次多线程编程作业的威名。虽然做好了一定的心理准备,但还是着实吃了一些苦头,战况也不容乐观,无效作业的数量有增加了一项。但好在及时止损,后两次作业完成的还可以。挑战难度翻倍(其实我觉得不只是翻了倍),收获也翻倍。OO课程虽然很苦,但却可以使我们在重压下,真正的去学习一些东西。好吧,废话少说,来对我这几次作业进行一次总结,及时查漏补缺,也希望能在后面的OO旅途中越走越好。

我的多线程电梯作业为无效作业,所以在后面的文章的有些部分中,不大会提到它。

1、作业简述

虽然作业的内容已经是众人皆知了,但我还是想在这里简单写一写我对作业要完成任务的理解,权当是为后面的内容做一个提醒

(1)多线程电梯

在之前捎带电梯的基础上,将电梯增加到了3部,以达到多线程的初步训练目的。

(2)IFTTT

文件监控,对指定文件进行监控。当文件做出相应的改变时,执行规定动作。

(3)低级出租车作业

对100辆出租车进行调度,完成抢单、接单和接送乘客的过程。

2、作业设计策略

(1)多线程电梯

因为作业无效了,所以设计思路也就不好意思和大家谈了,毕竟无效的设计思路也实在没有什么参考价值。

(2)IFTTT

建立全局的监控文件信息表,包含对应特定文件的触发条件,触发后的行为等信息。每种监控器为一个线程的设计方法,四种触发条件设计四个触发器。每个触发器中存在此触发器监控的文件列表,当列表中的文件发生该触发器监控类型的改变时,触发器记录触发信息。并且会根据对应文件触发后需要执行的动作,做出相应的改变。

(3)低级出租车

每一辆出租车为一个线程,管理自己的运动方式。每当输入一条指令后,会启动一个线程,用来检测符合条件的出租车,并改变其状态。

3、程序结构度量

(1)IFTTT

程序类图:

Metrics度量分析:

时序图:

(2)低级出租车

程序类图:

 Metrics度量分析:

 

时序图:

4、自我bug分析

(1)IFTTT

本次作业公测出现了问题,在阅读完指导书后,我误以为这次作业不对输入进行考察,所以只写了一个简单的正则匹配就结束了,像不合适的触发条件与操作搭配我都写在了readme中。然而公测居然测了,所以可悲的被抓到了bug。在互测过程中,我方未被发现bug。这次作业的主要bug出在对指导书理解不明确(可是我要微微吐槽一下指导书,实在是有点不知道让人干什么)。

(2)低级出租车

这次测试收到了大礼包,测试者十分仁慈的给出了全对,但是我还是自己发现了自己的小bug,比如对同质指令没有进行处理还有公测集中起点和终点为同一地点的乘客请求。其他bug还在后续检查中,为了之后的系列作业不出现错误。

5、测试中他人bug分析

(1)IFTTT

这次的测试我拿到的测试者比较可怜,他/她写错了基本的操作函数,在重命名之后,文件名会变成路径名称加修改后的名称。所以导致其程序结果错误,十分不忍心的挂了他/她一个bug。还希望大家注意检查自己的程序,不要因为这种小错误失分。

(2)低级出租车

本次拿到的测试程序还比较完善,虽然出租车类足足写了有500多行,但是功能完整,没有什么bug。只是程序结构有比较大的问题。但能看出程序的编写者十分认真,写了很多的注释,是一点一点把程序完善好的。

6、心得体会

这三次作业写下来还是感受颇多的,先来说说多线程电梯无效的原因,其实只是没有坚持下来。如果当时再咬牙拼一拼是可以完成,并取得还可以的成果的,可惜当时缺少了坚持下去的勇气。在这次作业后痛定思痛,决定再也不能有这样的情况发生。在IFTTT的作业过程中,因为之前理解错误,导致周二下午打算重写,尽管只有一下午与一晚上的时间,但是想起上次作业的教训,一鼓作气也完成了作业。其实OO除了锻炼了我们的代码能力外,也使我们有了战胜困难的勇气,这在我们今后的生活中也十分重要。所以OO虽苦,但收获颇多,还是要继续坚持下去的。

 

 

 

posted @ 2018-05-02 17:19  A_47  阅读(209)  评论(0)    收藏  举报