-
BUAA OO Unit2 总结
第二单元的作业是多线程模拟北航新主楼的电梯接人,由第一次作业到第三次作业,编码难度并不大,架构选用也没什么好纠结的,但是由于自己作死,过分迷信助教的实验代码,前两次把该踩的坑,不该踩的坑基本都踩了,体验极差,只有第三次状态正常 第一次作业 作业思路 架构 总框架: 第一次作业是简单的每栋楼只有一部电 -
OO第二单元总结
OO第二单元总结 一、三次作业中同步块的设置和锁的选择 由于每次作业均为上一次作业的增量开发,故此处只分析第三次作业。 代码中: Count类(用于记录电梯系统里现有人数) Distributor类(用于分配人员至相应楼座或楼层) Mask类(记录各层横向电梯的掩码) Output类(安全输出) Q -
面向对象第二单元总结
第五次作业 一、基本需求分析 本次作业的需求简而言之是构建一个电梯模拟系统,通过此系统对电梯的调度进行模拟,根据给定时间顺序的输入行为,给出对应的电梯行为输出。 二、架构设计 本次作业的行为主体有:电梯、调度器、乘客以及输入行为的输入器和输出行为的输出器 2.1 电梯行为解析 电梯具有两个状 -
BUAA_OO_第二单元作业
BUAA_OO第二单元作业 总述 本单元主要考察多线程的交互,线程的安全问题。其次是对电梯调度策略的设计。该单元里我的调度策略似乎不太适合强测的样例。就不多阐述我的调度策略。 第一次作业 架构思路 本次作业主要由三部分组成:电梯线程、数据处理线程和乘客表。 电梯线程:电梯线程主要负责从乘客表将乘客取 -
BUAA_OO_2022 第二单元总结
OO 第二单元 电梯 总结 目录 一、三次作业分析 二、bug分析 三、心得体会 在第一部分将结合三次作业的uml类图,介绍每次作业的设计思路关键点、同步块与锁的选择以及调度器迭代,再展示最后的UML协作图。 在第二部分将介绍程序bug、hack和test策略。 在第三部分讲述心得体会。 一、三次作 -
BUAA_OO_第二单元总结
害羞羞,这多线程啊就喜欢开玩笑! -
oo第二单元总结
OO第二单元博客 写在前面: 本单元的主题是”电梯“,从第一次普通的电梯到第二次可以横向移动的电梯到第三次随便走的电梯。本单元相对于第一单元,减少了重构次数。第二三次作业都是在第一次的基础上进行迭代开发。(体现出架构选择的重要)同时也有被线程安全问题所折磨。总的来说主要进行了多线程开发,电梯调度算法 -
面向对象设计与构造第二单元博客作业
第一次作业总结 UML类图 UML协作图 架构与可扩展性分析 架构分析 本次作业采用了输入-调度-处理的结构。采用生产者-消费者模式,不同环节之间相互独立,仅通过共享托盘进行数据的传输。 复杂度分析 类的规模,类与方法的复杂度如上。 同步块的设置和锁的选择 全部统一使用了synchronize(ob -
BUAA_OO_Unit2
同步块与锁 在3次作业中,我只使用了同步块(synchronized),原因是同步块就完全可以解决共享数据安全问题,并且语法简单、固定并且性能也不差。而锁(lock)虽然更加灵活,但是在作业中并不必要,而且容易出错。 在3次作业中,存在共享数据安全问题的代码主要在"生产者—消费者"模式下的 一级托盘 -
OO第二单元总结
#多线程实时电梯系统 第一次作业 ##架构 ###InputThread 处理输入的线程 当收到的personrequest是null时,代表用户已经输入了^D,此时将五座大楼的等待序列设置finished并通知每座大楼,唤醒正在wait的线程。 若收到的request不是null,将会找到对应bu