oo第二次课程总结

greystone      2022-02-09     172

关键词:

OO第五、六、七次作业总结

一、第五次作业

(一)多线程的协同和同步控制

  • 在第五次作业中首次采用了多线程的设计模式。多线程的设计使得对象的设计更具有独立的特性,但是在不同对象之间的交互也需要格外的注意。在此次作业中,经过分析,笔者共有三类线程对象,分别是电梯线程、调度器线程和请求模拟线程(主线程)。再据指导书要求,此次作业需对三个电梯进行调度设计。因此,线程的交互关系如下:
    技术分享图片

  • 请求模拟器线程负责控制台请求的输入,获得请求后将请求送至主请求队列,调度器定时从port获得电梯状态snapshot,然后扫描主请求队列,进行同质请求的判定和请求的分配;各电梯线程进行状态机式运动,并在合适时机扫描各自请求队列执行请求,在每次状态运行结束时更新port中状态。

(二)度量分析

技术分享图片

(三)作业类图与时序图

技术分享图片

(四)自己程序bug分析

  • 【Thread-scheduler类,checkby方法,优先级设计失误】
    在此次作业中,自己的程序在临交之前由于错误修改了FR请求的分配优先级,导致有三个公测点未通过。因此接下来将对程序中该bug进行分析。在进行checkby中FR请求分配时,采用权值设计法,如果符合捎带请求,权值为100000,否则为0,如果电梯处于等待状态,权值为0,否则为-9999,电梯运动量取负值为权值,再将三者之和相加。在三个电梯中取最高值进行分配。错误原因是:最开始将电梯等待状态权值设计相反,导致错误。

(五)别人程序bug分析



二、第六次作业

(一)多线程的协同和同步控制

  • 第六次作业中,此次作业的重点是线程文件操作安全和文件的监控,因此分别采用如下解决办法:将各个线程对于文件的操作都封装到一个类中完成,将该类视作通往文件操作的窗口,在该类的方法上加以锁确保安全;对于文件监控,每个监控任务建立一个监控线程,初始时建立快照,每次从文件操作窗口获得新快照,对比,若满足触发条件进行触发。线程交互同类图。

(二)度量分析

技术分享图片

(三)作业类图与时序图

技术分享图片

(四)自己程序bug分析

  • 【Monitor类,trigger方法,参数书写错误】
    在进行快照的留存与对比中,采用Hashmap进行储存与对比。其中使用迭代器进行遍历,在新map的遍历中,迭代器变量书写错误导致bug。

(五)别人程序bug分析



三、第七次作业

(一)多线程的协同和同步控制

  • 第七次作业,共有两类线程:出租车线程和系统线程。系统线程进行用户请求的获取与分配,出租车线程进行抢单、接单和服务。线程交互同类图。

(二)度量分析

技术分享图片

(三)作业类图与时序图

技术分享图片

(四)自己程序bug分析

(五)别人程序bug分析

  • 【Main类,main方法,构思不完整】
    如果在程序运行时对应目录下map.txt不存在,程序将直接崩溃。
  • 【Main类,main方法,构思不完整】
    对于同质乘客请求,未处理。


四、心得体会

  • 又经过三次作业的训练,有如下心得体会。
    在代码训练上,明显可以感觉到与前三次作业不同,在阅读完指导书后构思、书写行云流水。项目设计与实现的自信心增强了。还记得第一次作业时,进行项目设计时都不是很有自信的。
    在知识的学习上,充分了解并训练了线程的使用以及线程安全的使用与设计。真的感觉线程的实现是一件非常有趣的事情。以多线程电梯为例,当使用状态机完成电梯的实现后,真的感觉RUN起来的那一刻有一个真正的电梯运行在我的眼前。这种感觉,真的有点像创造了小生命一样。
    接下来的作业我们将对出租车进行进一步的设计,前方仍有未知的危险和难度,仅以下句与诸君共勉:

    革命尚未成功,同志们仍需努力!









oo第二次总结-多线程

OO第五次作业-多线程电梯  1、作业分析    这次作业和前两次不同之处在于多线程的使用,也由此引入了线程的安全性问题,给这次作业造成了一定的麻烦。由于采用多线程,就不能用前两次的方式,先将请求全部输入... 查看详情

2019-oo-第二次总结

  这一单元是关于模拟电梯运行,考验多线程的一个单元,难度由简入入深,从多线程单部电梯,到优化,再到多线程多部电梯,难度一次次的提高。 一.多线程单部电梯(傻瓜调度)  1.设计策略  这一次我只额... 查看详情

oo第二次博客作业

OO近期学习总结  OO这门课学到现在已经过了大半了,可以说是结局基本已定了,这让本来还存有一丝侥幸挣扎心理的我反而冷静下来了。与其像其他和我类似的同学一样苟延残喘,只是为了作业有效而盲目的跟着大众奔走呼... 查看详情

oo第二次博客作业

作业总结第五次作业:多线程电梯                         本次作业的设计思路是:共有5个并行的线程,分别是输入控制器(inHandler)、调度... 查看详情

oo第二次大作业

前言前言的前言第二篇blog跟上一篇只隔了将近一个月,但是感觉心境上好像发生了很多的变化,认识到了自己存在的很多不足(可能是菜单折磨的),感觉对很多东西都一知半解,希望在写完这篇总结性blog之后,我能清晰一点... 查看详情

oo第二次博客

1.从多线程的协同和同步控制方面,分析和总结自己三次作业来的设计策略及其变化。2.基于度量来分析自己的程序结构一下是我两次作业当中写出来的大概类(当然还有很多功能还没写,因为我的程序还未完成)。FileModificationM... 查看详情

oo第二次博客作业

前言没什么好说的,名副其实最绝望的一个月,不接受反驳,估计过来人也没有什么会进行反驳这个月我们完成作业上的矛盾,主要存在于大家对多线程完全不了解和老师在课上根本没时间讲明白多线程程序书写规范的矛盾,于... 查看详情

oo第二次博客作业

作业总结分析多线程电梯(1)作业设计本次作业要求完成能捎带的3个电梯的运行;需要多线程。这次作业每部的电梯都和之前的电梯大致相同,由请求处理后的请求队列,请求调度,电梯来完成请求,不同的是这次是3部电梯同时... 查看详情

oo第二次博客作业

多线程协同与同步控制总结 第五次作业-多线程电梯  本次作业是我第一次接触多线程,建立了请求模拟器、调度器和电梯运行三种线程。请求模拟器负责在输入后识别有效请求;调度器在扫描有效请求后将新的请求加入... 查看详情

oo第二次博客作业

一、作业分析与总结  第五次作业是多线程电梯,线程的协同主要体现在两方面,一方面是从输入中获得请求和加入到请求队列和从请求队列中拿请求,另一方面是从请求队列中拿请求和获取电梯状态进行判断来分配请求,同... 查看详情

oo第二次博客总结

...己学的不精,导致最后时间不够,所以这题就没有完成,第二题和之前的题目类似·,没什么说的,到第三题,一开始想用ArrayList和里面的方法add和contain解决的,但是n过大时程序会超时,所以有几个点一直过不去,后面在同学... 查看详情

oo第二单元单元总结

总述  OO的第二单元主题是电梯调度,与第一单元注重对数据的输入输出的处理、性能的优化不同,第二单元的重心更多的是在线程安全与线程通信上。这此次单元实验之前,我并未对线程有过了解,更谈不上“使用经验&rd... 查看详情

oo第四单元及课程总结

目录OO第四单元及课程总结架构设计四个单元中架构设计及OO方法理解的演进四个单元中测试理解与实践的演进课程收获课程改进建议OO第四单元及课程总结架构设计总体实现的类图如下总体思路就是功能的分发,由一个总类把各... 查看详情

第二次课程设计实验

2019春第二次课程设计实验报告一.实验项目名称贪吃蛇游戏二.实验项目功能描述一个能由用户手动输入实现的用户操控一串字符数组移动达成相应条件改变字符数组的贪吃蛇游戏三.项目模块结构介绍四.实现界面展示五.... 查看详情

第二次课程实验报告

2019春第二次课程设计报告一.实验项目名称:众所周知的经典小游戏“贪吃蛇”。二.实验项目功能描述:控制小蛇移动吃到界面中的食物,吃到食物能增长小蛇长度。但是碰到自身或墙壁会死亡。三.项目模块结构介绍;&... 查看详情

oo第二次博客

 oo5_7html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,cent 查看详情

oo第一单元总结

...法来编写,虽然通过中测,但是在互测中给我上了一课。第二次作业  构建了除了Main之外的字符串处理StringProcesser,字符串匹配StringMatcher,求导Derivation类(UML图中的TermMatcher是用于测试的与主程序无关)。在Main中先用StringPro... 查看详情

第二次实验总结

2019春第二次课程设计实验报告一、实验项目名称:空战游戏。二、实验项目功能描述:发射子弹来消灭敌机。三、项目模块结构介绍:主函数的调用以及一些判断语句。四、实验界面展示:五、代码托管链接:https://gitee.com/xu032... 查看详情