OO第二次作业总结

第五次作业:多线程电梯

作业内容:相比于前两次电梯作业,本次电梯作业新的变化是多电梯运行。要想实现功能,便需要学会使用多线程机制,使三部电梯保持相互独立的对分配的请求进行处理。电梯能够处理捎带,且调度时采用运动量均衡策略去响应楼层请求。

类图:

度量图:

bug分析:存在两个bug。在多线程电梯的调度过程中,经过一系列的调度操作后,会出现电梯运动量叠加的错误,原因在于在运动量进行更新时的条件分支判断上存在漏洞,在部分情况下会对于同时响应完成的请求进行重复计数,导致整体运动量计算错误。另外一点同样是由于代码逻辑层次的复杂性而导致的,在对于电梯判断捎带请求的分支中存在着FR后对ER的捎带判断漏洞。

分析评价:从度量图中,可以明显的看出电梯对于入队请求的处理的方法中,分支判断条件太多,使得代码复杂性上升,不利于维护。这也是由于设计上的缺陷导致,不能很有效的将分配机制完善以及其他一些机制进行合并,导致代码复杂性上升并且代码数量也较多。

第六次作业:IFTTT

作业内容:本次作业是实现一个监控程序,针对于给定范围内的文件属性的变化,通过预先设定的触发器的反应从而执行相应操作。监控的范围限定为一颗目录树。

然而,在本次作业中,由于时间安排上的不合理以及对于代码的理解还不够深入,导致未在规定时间内完成。在面对这种文件的监控时,并不能很好的实现对文件属性的扫描、监控。另外,由于个人原因导致的思考设计上的时间消耗过大,并存在部分不合理的设计,从而使得无法正常实现题目所要求的具体功能。

第七次作业:多线程出租车

作业内容:本次作业模拟出租车的乘客呼叫与应答系统,开发相应的程序,继续训练线程安全设计方法,同时应用课堂所讲授的面向对象分析方法和设计原则来开展分析和设计。

类图:

度量属性:

bug分析:bug一个。在乘客发出请求后的3s内,应该对所有进入乘客请求服务区间的空闲车辆进行标记,即抢单,但在此期间,若已进行抢单的出租车响应了另一请求并执行,应当对其状态进行更新,以防止出现同时占用同一辆车的情况。然而,在代码中,并未对该种情况进行处理,导致有时会出现程序输出错误的情况。

分析设计:在这次作业中,主要考察的是课上所讲的SOLID设计原则以及各种设计的注意事项,即对代码的设计、代码风格的考察。

在本次设计中,层次化抽象原则体现在将本次出租车问题抽象成为调度器类、地图类、出租车类、请求类、请求队列类。而各个类之间的方法均衡、分配上还是略有欠缺,部分方法的长度略微大。并且,部分分支的判断条件的部分使得代码逻辑更难被读懂。

心得体会

这一单元的三次作业,难度都十分的大,都是对于多线程的设计与调试。由于课程中后期的代码对于各个类以及类中方法的严密、均衡要求升高,因此,在真正开始作业前,还是应当多花时间去对问题进行细致的分析,并考虑各种可能出现的情况以及哪些情况的判断或功能的实现能够进行整合,以此避免bug的出现并使得代码更为简洁。否则,将会出现由于设计上的漏洞而不得不耗费大量时间重新设计的情况,致使时间被浪费。除此之外,和同学的交流还是十分重要的,因为对于一个人来说,作业设计上的一些要求容易出现理解上的偏差,如果能多与同学进行交流,不仅能很好的发现、修改理解上存在的问题,也能了解到其他人的设计方案,并将其与自己的设计方案进行相互对照,找出自己设计上的不足,从而在之后的作业中加以改进。

原文地址:https://www.cnblogs.com/98-0901/p/8978136.html

时间: 2024-10-07 15:13:04

OO第二次作业总结的相关文章

解题报告——2018级2016第二学期第二周作业

解题报告——2018级2016第二学期第二周作业 D:迷宫问题 题目描述: 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线. 输入 一个5 × 5的二维数组,表示一个迷宫.数据保证有唯一解. 输出 左上角到右

马哥linux 培训第二周作业

注意:第二周作业,请将以下题目整理在51cto博客当中,完成后请将对应的博文链接地址提交在答案栏中,提交格式如下:学号+姓名+博文链接地址eg:1+张三+http://mageedu.blog.51cto.com/4265610/1794420 本周作业内容:1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 文件管理的命令有cp.mv.rm 复制命令:cp 用法: cp [-adfilprsu] 来源文件(source) 目标文件(destination) cp [o

第二次作业 孙榜婷

2.9 设有如下语句,请用相应的谓词公式分别把它们表示出来: (1) 有的人喜欢梅花,有的人喜欢菊花,有的人既喜欢梅花又喜欢菊花 . 解:定义谓词 P(x):x是人 L(x,y):x喜欢y 其中,y的个体域是{梅花,菊花}. 将知识用谓词表示为: (∃x )(P(x)→L(x, 梅花)∨L(x, 菊花)∨L(x, 梅花)∧L(x, 菊花)) (2) 有人每天下午都去打篮 解:定义谓词 P(x):x是人 B(x):x打篮球 A(y):y是下午 将知识用谓词表示为: (∃x )(∀y) (A(y)→

牛老师第二次作业

namespace 第二次作业{    class RandomNumber    {        public int Add(int x, int y)        {            return x + y;        }        public int Sub(int x, int y)        {            return x - y;        }        public int Mul(int x, int y)        {    

Linux+Python高端运维班第二次作业

Linux+Python高端运维班第二次作业 1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. [[email protected] ~]# who |cut -d" " -f1|uniq (unknown) root test1 [[email protected] ~]# who |cut -d" " -f1|sort -u root (unknown) wangyanglin 2.取出当前系统上被用户当作其默认shel

第二周作业补交(请老师看一下)

#include<stdio.h> #include<math.h> int main(void) { int money,year; double rate,sum; printf("Enter money:"); scanf("%d",&money); printf("Enter year:"); scanf("%d",&year); printf("Enter rate:

耿丹16-1第二次作业

-- Deadline: 2016-09-23 23:00 pm -- 作业内容:https://edu.cnblogs.com/campus/bjgygd/Sixteen-One/homework/85 -- 第二次作业总结: 1. 总共5位同学未按时提交,且目前未交. 2. 大部分同学都注意了代码的缩进格式,希望继续保持! 3. 希望同学们下节课作业可以使用博客中自带的代码编辑器,养成良好的代码编写风格! 周刘晋源同学已经开始使用了,特此提出表扬! 4. 大家学习了变量类型的定义,以后会遇到

第二次作业: 二维数组

高级语言程序设计报告   实习题目 第二次作业: 二维数组 P228计算机双学位第8章实验题:学生成绩管理系统 l 在上次作业的基础上,改为每学生2门课,用二维数组编程实现相应功能,相应功能所有涉及分数的均需可以处理每门课程分数及每个学生课程总分. l 涉及到排序的,均需提供冒泡及选择两种排序方法,可增加菜单项. l 功能5中按学号查询学生排名及成绩,要求用折半法,为此你的学生数据可以多一点. l 数组中可以事先有数据(省却每次输入数据浪费时间),为此输入数据菜单可以改造为增加数据菜单. l 在

对于第二次作业的不懂之处

助教老师您好: 对于第二次作业这个计算器,我花费了四个白天的时间,做了N多次,由于我的基础太差,我曾最大限度地在控制台做到了能随机产生数字,和四则算法,(我能做的最大限度)而难处在于我不能让用户对这四则算法算出结果,更不要说正确率了,而且它不能识别除法时除数不能为零. 在窗体程序中我做出来了form框架,然而我在写完代码后发现TextBox1和TextBox2竟然不会随机产生数字,我也像大多数同学一样,照着课本上的例题做修改,但是我却不如人家,我并没有用窗体完成,而且在窗体中我无法让用户选择一种