- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 软件构造复习小知识点总结(3)
1.以下关于ADT ThreadSafe的说法,不正确的是__A 任何对外发布的ADT都必须要做到thread safeB 不管怎么time slicing和interleaving,一个线程安全的ADT对象的RI要始终为真C 在不同的机器上、不同的OS上执行关于该ADT的程序,都不应该出现RI被违反的情况D 任何immutable的ADT都是threadsafe的E 做到ThreadSafe与否,只与ADT自己的内部rep和内部方法实现有关,与client是否应遵循特定条件有关正确答案:AD
2020-07-03 16:29:22
221
原创 软件构造复习小知识点总结(2)
1:单选题某个ADT的Rep是:private int no;private String name;它的AF是:AF(no) == ID of a student那么以下equals()正确的是__A return this.no == that.noB return this.no == that.no && this.name == that.nameC return this.no == that.no && this.name.equals(t
2020-06-26 17:49:09
234
原创 软件构造复习小知识点总结(1)
`String a = "5" + 6;System.out.println(a);`会在控制台打印出什么? [填空1]可填写“编译错误”、“运行错误”,或具体输出的字符串,无需带引号。int a = "5" + 6;System.out.println(a);此时的打印输出呢? [填空2]答案:56,编译错误。编译错误不用解释了,就是int声明和字符串“5”不匹配。第一个能成功输出56,是因为字符串加法能将int类型强转为String类型List<String>...
2020-06-18 19:08:33
344
原创 软件构造第六章复习心得
第六章主要讲解了如何增强程序的健壮性,即使在用户不遵守规约时,即输入不满住前置条件时,我们程序员也要保证程序不崩溃,能够继续运行。本章主要利用的工具即是,异常和断言,需要掌握的思想是防御式编程。先来看一下异常:错误与异常分类如下:Error:内部错误:程序员通常无能为力,一旦发生,想办法让程序优雅的结束用户输入错误(有争议), 设备错误, 物理限制Exception:异常:你自己程序导致的问题,可以捕获、可以处理其中RuntimeException: 类的内部代码错误(不应该捕获,应该避
2020-06-14 11:44:42
257
原创 lab3正则表达式应用总结
废话不多说,直接上题目,需要依据下面的要求从文件中读入信息,构造航班计划项集合,若有不符合的输入,直接抛出异常即可首先,题目给人感觉是非常复杂的,读入一共有十三行,一次性判断恐怕正则表达式会过于复杂,且可读性差。所以我的想法是先将数据读进来,大体格式正确即可,正则表达式如下:Pattern pattern = Pattern.compile(“Flight:(.?),(.?)\{DepartureAirport:(.?)ArrivalAirport:(.?)DepatureTime:(.?)Ar
2020-05-18 14:57:18
300
原创 软工lab3状态模式使用心得
先来谈一谈状态设计模式,简单的说就是给给对象添加状态属性,并且可以通过输入进行状态转换,并且在不同的状态下可以实现不同的功能,这与自动机的思想是一致的先来谈一谈naive想法,利用if,else就能实现,起始相当与实现了一个二阶矩阵,x记录原状态,y记录输入值,表中记录得到的新的状态。类似于下图但是这样实现得到的代码复用性很差,一旦添加心得状态或者添加新的输入,对源代码的改动很大。因而有了状态模式然后谈一谈在lab3中的应用,lab3让实现的状态转换如下(以可阻塞为例)首先创一个状态管理的类
2020-05-12 19:50:09
404
1
原创 软件构造lab2问题3ADT设计总结
这里直接开始实验三吧,题目要求蛮长的,简单的说完成ADT设计,最终实现能够进行国际象棋和围棋的游戏。先提纲挈领,ADT设计为了防止表示暴漏,不能将内部属性暴漏出去,故获取或改变都只能通过该类的方法去实现。因此我们需要先考虑你要实现的各层ADT分别能实现怎样的功能。这里我完成实验后最大的经验教训就是,底层的ADT设计确实要考虑最终的功能,但是主要还是要考虑本身的应有的功能,否则会出现底层ADT将...
2020-04-22 11:35:45
255
原创 软件构造遍历list删除元素方法总结
在做软件构造lab2时,忽然遇到的问题,老师上课其实将来,下面来汇总一下有关遍历list然后删除元素的方法,以lab2的set函数中删除边为例(这个函数是创建新编,但是如果两点间已存在边,则删除原有边再添新边)目前姑且有三种方法:1.for(int i=0;i< edges.size;i++){ if(edges.get(i).getsource()==vertex &&a...
2020-03-30 12:35:05
275
2
原创 软件构造3.2设计规约学习笔记
1.程序设计语言中的函数与方法“方法”是程序的“积木”,可以被独立开发、测试、复用使用“方法”的客户端,无需了解方法内部具体如何工作—“抽象”小结:规约不只是注释还包括函数的声明,是可以进入编译器编译的,并且,在软件开发中规约也是给程序员看的也是给用户看的,程序员凭借着规约编写程序,而用户通过规约理解函数的使用方法。稍稍比喻一下,规约相当于函数与方法的“说明书”,使程序员和用户达成一致...
2020-03-28 16:34:43
193
原创 软件构造Lab1实验心得
先聊一聊作为一个新手首次使用java的一些感受吧,具体的实验细节放到后面:(1)java编写代码需要更好的分块,且更需要了解各种接口即权限,它不像之前用的C语言只在一个文件下编程。(2)同时java的包装好的函数也比c多好多,需要大量记背,并善加利用,能极大地减少代码行数,增加可读性。这一点真的极其重要,完成一个任务,你用的工具不同,编码效率完全不同,就好比拿刀的永远打不过拿枪的(大概)。(...
2020-03-15 11:18:12
420
原创 计算机系统 大作业 题 目 程序人生-Hello’s P2P
计算机系统大作业题 目 程序人生-Hello’s P2P摘 要hello.c是所有程序员所见到的第一段代码,它看似简单易懂,实则再计算机内部不为人知之处有许多复杂的,值得我们深究的操作过程。本文将展示hello从c语言一步步走向可执行程序,再由开始执行走到进程结束被系统回收。通过见证hello.c的一生,我们将更加的深入了解计算机系统。所谓三大境界:看山是山,看水是水;看山不是...
2020-01-01 10:03:53
1936
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人