-
OO_U2总结
OO_U2总结 一、简介 本单元三个任务为电梯调度与迭代升级。第一个任务是简单的纵向电梯,每栋楼一座纵向电梯,载人数固定,速度固定,可以简单分解为五个电梯线程与一个生产者线程。第二次任务新增横向电梯,并且保证没有换乘且必定有电梯存在才会有请求。第三次任务为换乘处理,且可能出现多次换乘,调度器的必要性 -
BUAA OO 2022 第二单元总结
OO第二单元总结 1. 第一次作业 1.1 需求分析: 需求: A-E五栋楼中初始均有一部电梯,可达1-10楼,乘客不许跨楼座。 要求使用wait,notifyAll的形式控制电梯 整体设计: 参考实验1中的代码进行设计,实验一中代码过多的无意义notifyAll()也成功在作业2中狠狠坑了我一把. -
OO_Unit2_电梯难题
原博客链接 电梯难题 这单元作业的主题是电车电梯难题,整体感觉还行,如果不去纠结最优,明白锁这个概念的话,实现难度还是挺低的。(感觉不如第一单元。。。。难度) 同步和锁 本次作业我没有使用lock(因为第一次作业用的synchronized,懒得改了).对于同步块的选择,我的想法如下 为何需要同步代 -
OO第二单元博客
OO第二单元博客 目录 OO第二单元博客 架构 第一次作业 第二次作业 第三次作业 UML协作图 同步块与锁 锁方法 锁代码块 调度器设计 测试与bug分析 bug分析 测试 心得体会 线程安全 层次化设计 架构 第一次作业 架构设计 架构中共有输入线程、调度器线程、电梯运行线程三个线程,采用双生产 -
面向对象第二单元总结
面向对象第二单元总结 fishlife 写在前面 终于结束了。。。 面向对象第二单元,算是比较平安地完成了三次作业,没出大锅。因为有了第一单元的锻炼,对面向对象有了更深一层的理解,虽然总的代码量比第一单元多,但是这次的代码编写和迭代相对而言比上一单元轻松了一些。当然这也得益于设计模式。但是由 -
BUAA_OO_2022_Unit_2_Summary
一、程序设计构架 第一次作业 需求简述: 模拟一个多线程实时电梯系统,各楼座有且仅有一台纵向电梯,处理已知起终点的同楼座乘客请求。 代码构架: |- Unit2:主类 |- InputHandler:输入线程 |- Controller:各楼座候乘表 |- Elevator:电梯线程 |- Outp -
OO2022第二单元作业总结
本文为OO2022第二单元总结。本次作业主要以电梯系统的设计为内容熟悉和熟练掌握线程方面的知识。主体思路上我才用了生产者消费者模式,在文章中分别阐述了三次作业中的主要思路,调度器设计与交互,同步代码块的设置与锁的选择。之后利用UML类图,与方法复杂度分析了本次作业架构的不完美之处,最后分享了自己在本次作业中关于层次化设计与线程安全的心得体会。如有错误,谢谢指正! -
面向对象2022-第二单元作业总结
面向对象2022-第二单元作业总结 第一次作业 本次作业是在单栋楼中设置一部电梯接送上下楼的乘客。 (1) 同步块设置&锁的选择 这次作业是多线程作业伊始,能否处理好锁与同步块之间的线程安全,让不同线程间可以共享数据并且保证安全,对多线程作业的发展具有重要意义。在对题干进行一番迅速却又不失严谨的推理 -
BUAA_OO_2022第二单元总结
1 概述 1.1 基本思想 让各个线程处于临界区的时间尽可能短,因此要让临界区操作尽可能简单,这样也有助于避免线程安全问题 电梯只负责乘客上下电梯与电梯的上下移动,电梯的控制工作交给调度器完成 在满足上述两个条件的前提下,代码实现要尽可能简单,即使有可能损失一些性能 注:该作业中没有使用UML类图与 -
面向对象第一单元个人总结
一、第一次作业 UML类图 第一次作业我依托训练的代码进行自己的构造,主要有三个部分:输入转换、表达式解析以及结果的计算与输出。其中,对于表达式的解析结果,我使用后缀表达式进行存储,以方便计算。此时,传入到最后一部分的就只有一串字符,满足低耦合的要求。整体上,使用training的语法分析模式,设计