度量分析由于第一次作业对面向对象不熟悉,导致一main到底,这里就不单独列出来,以下为第三次作业的类图(第二次与第三次比较类似) 总体结构为main类进行输入,表达式识别与求导具体操作在Expression类中进行。Main类 Expression类 属性:expression String类,从main类中输入的字符串 index int型变量,expression的索引方法:is
转载
2021-04-21 23:10:58
178阅读
2评论
BUAA OO Unit 2 总结博客HW2-1题目要求与分析本次作业的基本目标是模拟单部多线程电梯的运行。第一次作业只要是起到多线程入门的作用,让我们初步了解多线程的实现方法以及注意事项。数据结构为了让作业有更好的扩展性(其实并没有),我将电梯与调度器分离开,调度器采用工厂模式,分为 Morning, Random 和 Night 三种策略去实现。用 Request 存储所有输入的
转载
2021-05-13 20:17:04
132阅读
2评论
面向对象设计与构造 第二单元总结本单元三次作业内容为模拟电梯的运行,主要涉及的知识点为多线程。第一次作业为单部电梯,需要模拟电梯的开关门、上下行、乘客的进出等;第二次作业增加为3部电梯,并可以根据指令动态增加电梯;第三次作业在第二次作业的基础上设置了不同的电梯类型,不同的电梯运行速度、可到达楼层不同,并且乘客在运送的过程中允许换乘。总体来说,三次作业都侧重于多线程的处理,并且每次作业都是在上一次的
转载
2021-05-13 20:37:39
109阅读
2评论
BUAA OO 第二单元总结 线程架构 以下为各个线程类的作用及含义: 类名含义 inputThread 输入线程,将输入乘客加入waitQueue schedulerThread 调度线程,通过调度策略,将waitQueue分配到多个processQueue中 elevatorThread 处理p ...
转载
2021-04-23 16:27:00
78阅读
2评论
BUAA_OO_UNIT2一、同步块和锁第一次作业: 第一次作业比较简单,锁作用的对象只有一个schedule,它是仅有的两个线程输入线程和电梯线程的共享对象,这次作业并未设置调度器。 输入线程只有向schedule中加人和为schedule设置结束位的时候需要拿到锁,加人时拿锁是为了防止电梯线程取人的过程和加人的过程出现冲突,造成线程安全问题。而设置终止的时候加锁,是为了防止电梯线程读取sc
转载
2021-05-13 20:33:29
103阅读
2评论
BUAA_OO_UNIT3 简述 这一单元是整个学期的第三单元,第三单元是JML契约式编程。JML语法和高级语言语法类似,学习起来比较容易,上手比较快,参考课程组发布的JML Level 0手册,可以毫无障碍地理解JML的语义。本单元的任务是将助教们书写的JML转化成为自己的程序代码,和课程组下发的 ...
转载
2021-05-30 23:36:00
209阅读
2评论
OO第一单元总结一、程序结构分析第一次作业设计:设计思路:第一次作业的表达式的基本形式较为简单,只有很简单的求导模式,对每一个项,不论因子有多少,总可以写成axb形式,而其求导的结果是ab****x****(b-1),是一个相对固定的结果,因此不必再建立乘法求导法则或是链式求导法则,而是直接按照公式根据项的系数和指数,直接输出求导后项的结果,再利用输出的方法来输出符合格式要求的表达式。UML类图:
转载
2021-03-27 09:57:29
128阅读
2评论
BUAA_OO_2021_Unit2_Summary(1)基于度量来分析自己的程序结构第一次作业第一次作业为单部电梯,不需要调度器,故基于多线程的考虑,构造接收请求的Dispatch类和实现请求的电梯elevator类,两者均继承Thread类且并行;另外出于线程安全的考虑,构造了WaitingPassenger类封装请求,Dispatch和elevator接收同一个waitingPassenge
转载
2021-05-13 20:37:58
168阅读
2评论
OO-Blogs Unit2单元简介本单元通过迭代开发,最终实现了多种类多电梯(可换乘)调度管理。HW1要求单电梯,有载客量限制,调度无要求但性能不应低于ALS调度。思路和实现这次的需求不算复杂,只需要一个输入线程和一个电梯线程即可实现。为了扩展性,我在输入线程和电梯线程中间插了一个调度器,为后面多电梯的场景留出修改的空间。然而由于这时我并没有感受到到调度器线程的意义所在,故我将调度器和输入线程串
转载
2021-05-13 20:19:11
167阅读
2评论
OO第二单元博客总结 引言 第二单元的作业以Java多线程设计为重点,通过电梯调度的设计,来掌握多线程的设计与处理,以及理解生产者—消费者模式、多个线程的交互、线程安全等方面的知识。 这一次的作业,对我来说是难度逐步递减的,第一次因为对多线程不熟悉,写的很慢,同时线程安全性也存在问题,导致最终到了d ...
转载
2021-04-25 00:28:00
313阅读
2评论
BUAA_OO_第四单元总结(UML) 第四单元架构设计 本单元作业由于并没有什么迭代难度,只需要根据新需求添加相应的解决方案即可,因此并没有出现像第一单元,第二单元那样难以预测新增需求导致重构的问题。因此,这里只选取本单元最后一次作业的架构来说明。 架构图 架构说明 在本单元实现时,我选择了按需架 ...
转载
2021-06-23 23:36:00
188阅读
2评论
1.总结本单元作业的架构设计 本次作业三种UML图:类图,顺序图和状态图。三次作业的架构几乎是一致的,有的只是对前一次架构的添加,很少有对前一次架构的修改,就直接拿最后一次作业的架构来讲好了。 整个的架构十分简洁(简单),没有根据三种图的类型再进行整合,直接根据需要从哈希表或者是列表中取出。自己编写 ...
转载
2021-06-22 23:41:00
151阅读
2评论
BUAA OO 第二单元总结——多线程电梯一、同步块的设置和锁的选择本单元第一次作业本次作业为单部电梯,只有两个线程,一个是输入线程,一个是一部电梯。本次作业采用了简单的生产者——消费者模式,输入线程InputThread充当Producer,电梯类Elevator充当Consumer。因此二者的共享对象需要采用加锁即sychronized,共享对象为一个等待队列类RequestQueue,里面队
转载
2021-05-06 21:26:20
271阅读
2评论
BUAA OO第三单元总结:模拟社交网络 本单元作业的主要任务为根据JML规格,完成对应的社交网络系统。 不得不说这一单元的代码量相比之前降低了很多,需要思考和完成的部分相比之前也有所减少,然后不幸的是本单元的分数却实在惨不忍睹:40->10->0,归根结底原因是没有进行足够充分的测试,也没有想着如 ...
转载
2021-05-31 23:21:00
94阅读
2评论
第四单元架构设计 第十三次作业 按照 UML 图建立类和关系即可。 需要注意的是输入的顺序是随机的,但是 UML 的 parent_id 隐含了一个继承的关系,所以我才用的是每次只读取一种 UmlElement 的方法,多次读取: for (UmlElement element: elements) ...
转载
2021-06-23 01:10:00
56阅读
2评论
BUAA-OO Unit2 目的选层电梯 本单元模拟了多线程实时电梯的运行,其中电梯是目的选层电梯,乘客在进入电梯之前就输入自己的目的楼层。在获取每个乘客的起始楼层和目标楼层后,要求程序模拟完成电梯的上下行、开关门和乘客进出,在一定的时间限制内将所有乘客运送到目的地。 第一次作业模拟单部多线程电梯的运行;第二次作业模拟多部同型号电梯的运行,并支持在运行过程中动态增加电梯;第三次作业将
转载
2021-05-13 20:35:08
236阅读
2评论
BUAA_OO_2021_ 第二单元 - 难度巅峰之多线程电梯写在前面早就耳闻了面向对象课程第二单元的难度,在面临一个全新的领域——多线程时,或多或少都会手足无措吧。对于一个普普通通的计算机专业的学生来说,没有大佬们对于代码强大的理解与拓展能力,只能看着入门教程一点点自学,十分痛苦。多亏了廖雪峰老师网站的java多线程入门,我才对多线程思想有了些许体会。但俗话说“师傅领进门,修行在个人”,对于这个
转载
2021-05-06 19:50:13
277阅读
2评论
OO,OO以后,及其极限(2)3 维特跟斯坦(Wittgenstein)与OO 维特跟斯坦是本世纪乃至人类哲学史上最伟大的哲学家之一。 他生前只于1922年出版了一本著作——《逻辑哲学论》(Tractatus Logico-Philosophicus)。 在该书中,他阐述了一种世界观,或者说一种认识世界的观点,这种观点,在六七十年后的今天,终于由一种哲学思想沉淀到技术的层面上来,成为计算机业
转载
2007-12-17 11:18:00
90阅读
2评论
OO,OO以后,及其极限(1)1、什么是软件开发? 软件开发的过程就是人们使用各种计算机语言将人们关心的现实世界映射到计算机世界的过程; 现在的计算机的数学理论基础是由计算机的开山鼻祖,大名鼎鼎的图灵于1937年提出的图灵机模型。 随后不到十年,电子计算机就诞生了(1945)。(埃尼亚克) 我们都知道,它当时的主要任务之一就是用于导弹弹道轨迹的计算。当时的软件开发(如果可以称之为软件开
转载
2007-12-17 11:18:00
226阅读
2评论
OO,OO以后,及其极限(3)4. OO之后是什么?一、 从软件工程的发展历史来看 1969年NATO会议之后,“软件危机”成为人们关注的焦点。为迎接软件危机的挑战,人们进行了不懈的努力。这些努力大致上是沿着两个方向同时进行的。一是从管理的角度,希望实现软件开发过程的工程化。这方面最为著名的成果就是提出了大家都很熟悉的“瀑布式”生命周期模型。它是在60年代末“软件危机”后出现的第一个生命周期
转载
2007-12-17 11:18:00
112阅读
2评论