一.设计策略 在第一次作业时,我刚第一次接触多线程这个东西……于是乎对于第一次VIP直上直下一次只接一个人的电梯,我借鉴了指导书中为我们提供的架构,设计了一个输入线程和一个电梯线程,并设置了一个中间类RequestQueue,开一个队列来存放异步输入的请求,并保证这个类是线程安全的.mian类之下的整体架构为“Getrequest-RequestQueue-Elevator”.在main类中仅仅只做了new了这几个类并且启动输入线程以及电梯线程的工作.当电梯运行时,GetRequest线程读入请…
一.程序设计思路 在我的三次作业中都采用了类的分层结构,采用逐项匹配,分层求导的思路. (一). 第一次作业中构建了Polynimial(多项式)类,在类的构造器中就完成了对非法空格的判断并对合法表达式进行删除空格处理.由于第一次作业仅含有带有系数的幂函数与常数项,因而我就没有专门构建针对每一个项的类,而是在本类中就定义了getitem方法,用正则表达式逐项匹配出符合要求的项.在第一次作业中我求导的基本单位为项,在构造正则表达式时我对表达式中可能出现项的类型进行枚举,分别为:(1)系数与指数均有…
这次的系列作业是写一个电梯调度,主要目的是让我们熟悉多线程. 第一次作业是一个傻瓜电梯的调度问题,要求也很简单,即每次接一个人就行了.我只用了两个线程,一个是输入线程,一个是电梯线程,输入线程负责从标准输入中读入请求并加入到请求队列中,电梯线程负责从请求队列中取出请求并执行,思路非常简单,每次取一个请求,把人送到后,再取下一个,直到取完并且输入停止. 第二次作业没有什么本质区别,只不过修改了调度算法,在电梯运行时进行捎带,我这里的思路是,先找到一个主请求,然后在去接主请求和送主请求去目的地的路上…
一.架构设计 1.UML第一次作业——类图 第一次作业基于不同element在UML规格中的从属关系来设计架构.继承了UmlInteraction接口的MyUmlInteraction类是主要的交互层.在其构造函数中对加入进来的每一个element进行分析,判断它的ElementType并根据parentId以及其他解析出的性质决定它的存储位置. 对于不同的ElementType,我将其分为三类: 第一类是有所述其他元素的,代表java中具体的类的element,如UmlClass,UmlOpe…
一.JML 在第三单元的面向对象课程中我们第一次接触了JML语言以及基于JML规范的规格化设计.在之前一系列关于面向对象思想的学习认识中,我们知道了Java是一种面向对象的语言,面向对象思想的一个重要原则就是将过程性的思考尽可能地延迟.而作为Java建模语言,JML给予了我们一种全新的方式来看待Java的类和方法,其通过将一些符号语言显式地插入到Java程序代码中,来描述一个方法所要求的前提以及期望达到的效果,而将过程性的思考延迟到了方法的设计中. JML理论基础 JML是用于对Java程序进行…
OO第二单元优化博客 第五次作业没有性能分,但是,我在这一单元的宗旨就是写一个日常生活中 最常见的那种电梯,所以第五次我没有写傻瓜电梯,而是直接写了个\(look\),和第六次基本相同. 总计一下look算法的几个特点: 1.没有主次请求的区分. 2.电梯会一直往当前方向运行直到需要转向,转向条件为: ​ (1)当前电梯中没有乘客的目的楼层在当前方向上. ​ (2)当前方向上的楼层目前没有请求. 3.捎带时只捎带请求与当前方向相同的乘客. ​ (由于第五次第六次作业没有容量限制,所以可以把当前楼…
第二单元第一次作业 多线程设计策略 第一次作业的想法是设计三个线程:输入线程,调度器线程以及电梯线程.输入线程获取请求并发送给调度器线程:调度器线程通过查询电梯线程的状态(等待.停靠以及移动),并综合已有的请求为电梯线程分配目标:电梯线程根据分配到的目标进行移动,并进行上下乘客操作. 为了这么做输入线程与电梯线程有一共享变量requestQueue用以保存请求,调度器线程与电梯线程有一共享变量taskQueue用来保存电梯的移动目标.这种设计的初衷是让不同线程尽量只干自己该干的事,即输入线程负责…
在我开始写这次博客作业的时候,窗外响起了希望之花,由此联想到乘坐自己写的电梯FROM-3-TO--1下楼洗澡,然后······ 开个玩笑,这么辣鸡的电梯肯定不会投入实际使用的,何况只是一次作业.还是从中认真分析一下经验和不足吧. 作业一:FIFO单电梯 现在看起来,作业一的难度在整个单元真的仅仅相当于热身.使用线程安全的集合类ConcurrentLinkedQueue存储线程,再用while(true)轮询的方法实现电梯的获取请求,获得请求后运行电梯,运行结束后等待下一个请求即可.整个程序甚至不…
OO第二次博客作业 零.写在前面 OO第二单元宣告结束,在这个单元里自己算是真正对面向对象编程产生了比较深刻的理解,也认识到了一个合理的架构为编程带来的极大的便利. (挂三次评测分数 看出得分接近等差数列 菜鸡本质暴露无遗) 一.总体设计策略 三次作业设计策略基本相同.前两次是四个类:Main.Elevator.Taker.Waiter:两个线程:main.elevator.第三次在此基础上多了一个类:Dispatcher,一个线程:dispatcher.之所以前两次没有调度器类,是因为由于只有…
(注意:本文写作顺序与作业要求不完全一致,但涵盖了作业的所有要求) 一学期的BUAA特色OO课程结束了. PART 1  我想先写我这一学期的感想 从第一单元满怀期待地写完多项式求值到最后看着60分不到的成绩伤心欲绝(这个词用的其实并不是特别夸张),到第二单元作业在截止前两小时还在做不停地思考和调试,再到第三单元在活页纸上记下一种又一种可能的实现方法(然后还有一堆bug2333),最后到第四单元,也就是这个单元的与考期共舞,与程序广度作斗争,每个单元都是你从未玩过的船新版本(因为OO课程改革所以…