
HIT软件构造
不卷CV了
热爱历史的工科狗
展开
-
软件构造对于Lab2中P3的ADT设计的思考及想法
初次阅读P3的题目时,这一点让我产生了一个疑问:为什么既要有一个Game类,又要再加上一个基于命令行的主程序MyChessAndGoGame.java呢?二者明明是都是与游戏相关的内容,难道不能直接把主程序放到Game.java中,以达到减少.java文件的目的呢?而后,经过课堂上对ADT的具体学习,让我认识到了ADT设计所应做到的一些要求: 题目所述的要求还是有其合理性的,单独设置一个Ga...原创 2019-03-26 17:13:33 · 353 阅读 · 0 评论 -
软件构造对于Lab3中要求immutable类型的分析与思考
在Lab3中的ADT设计中,有一些面向复用的类中要求我们必须设计immutable的类: 受限于这些类必须是immutable的要求,我们在实现实验的过程中,会遇到许多困扰:未看清immutable的要求导致需删除代码重写。这些类中只能保存其基础的,不变的属性。但轨道系统的要求中,需要轨道上存在物体、物体之间存在联系,并且这些都是可改变的,因此类间可变的联系不能存放于这些类中,需要额外...原创 2019-05-06 11:23:35 · 177 阅读 · 0 评论 -
软件构造Lab4中3.3. Logging的实现
写日志使用 java logging,为 3.1和 3.2 节经过异常处理、错误处理、断言处理的程序增加日志功能。日志需要记录以下信息:1.所有的异常/错误:发生的时间、异常/错误类型、异常/错误发生的类名和方法名,异常/错误的具体信息、异常/错误处理的结果;2.对多轨道系统的所有操作,包括:读取文件、增加/删除轨道、增加中心点物体、增加/删除轨道上的物体、增加/删除物体之间的关系、跃迁等...原创 2019-05-20 16:28:34 · 211 阅读 · 0 评论 -
软件构造Lab4中的3.4. Testing for Robustness and Correctness思考与实现:
Testing strategy使用等价类和边界值的测试思想。鉴于新增的情况主要出现在三个具体应用的实现CircularOrbit接口的类中,此处具体对这三个类的测试策略进行描述。三个类中按3.1中定义的三种Exception的类型进行等价类划分,并对这些异常写了相应的三个.txt测试文件。通过读文件时捕获异常并对异常的类进行比对、对日志文件中记录的情况进行字符串比对等操作,确定原java...原创 2019-05-20 16:42:45 · 217 阅读 · 0 评论 -
软件构造Lab5-使用Map键值对改进程序的运行速度的性能
Lab5中的3.2中要求我们用不同的I/O策略读取大文件,并且记录读取大文件所花费的时间。这里的“大文件”,以SocialNetworkCircle_Most.txt为例,其中有近90w行数据,大小近30M。在仅仅修改了I/O的情况下,利用Lab4原有的代码读取此文件,本人足足花费了近3个小时!!!说明原程序的时间性能实在是太差!因此分析原程序代码寻找找出程序性能瓶颈的代码。最终经本人寻找,...原创 2019-05-31 16:33:19 · 222 阅读 · 0 评论 -
软件构造Lab6中确保Threadsafe的方法(以注释形式描述Threadsafe的练习)
在课堂上我们学到了四种确保threadsafe的方法: 1.Confinement:限制数据共享. Don’t share the variable between threads. 2.Immutability:共享不可变数据. Make the shared data immutable. 3.Threadsafe data type:共享线程安全的可变数据. Encapsulate t...原创 2019-06-20 18:36:12 · 300 阅读 · 0 评论