- 博客(7)
- 收藏
- 关注
原创 软件构造6
在此记录一个之前从未了解到的问题。首先来看本人定义的一个ADT,命名为Employee,定义的ADT如下:public class Employee { private final String name; private final String job; private final String phone; // Abstraction function: // name映射为员工名字,job映射为员工职务,phone映射为员工电话号码 // Representa
2021-07-07 12:58:51 73
原创 软件构造5
由于软件构造课程需要用到git来提交实验结果,而本人是第一次使用到git,在使用过程中遇到了许多问题,故在此记录下一些git的使用方法以及一些问题的处理。一.仓库克隆1.右键点击要克隆到的本地文件夹,选择git bash here。2.在命令行中输入git clone +要克隆的仓库的URL地址,回车,即可将远程的github上的仓库中的东西克隆到本地的文件夹中。二.提交1.右键点击要提交的文件或项目文件夹,选择git bash here。2.输入git init命令,回车,用来在当
2021-07-07 12:37:58 78
原创 软件构造4
1.参数类型是否匹配,在静态类型检查阶段完成。返回值类型是否匹配,也在静态类型检查阶段完成。2.精确的规约有助于划分责任,规约可以扮演防火墙的角色。只讲能做什么,不讲怎么实现。可以通过规约判断方法的等价性。3. 静态类型声明是一种规约,可据此进行静态类型检查static checking。4. spec变强:更放松的前置条件+更严格的后置条件。在比较后置条件时,应该在满足对方的前置条件的情况下进行判断。一旦规约1比规约2强,那么可以用规约1替换规约2。5.抽象数据型由操作定义,与内部实现无关。
2021-07-06 23:44:32 84
原创 软件构造3
继承继承关系可以有效地在先前定义的某个类的基础上实现其定义的所有方法功能,并添加自己的独特方法功能。继承关系不仅能够体现复用的价值,还能够使设计思路变得清晰,逻辑结构更加鲜明。同时能够减少工作量,也更容易应对新的变化。在继承时应遵循LSP原则,final定义的类无法派生出子类,且子类应比父类具有更强的规约、更强的不变量。子类型可以增加方法,但是不能删除。子类型需要实现抽象类型中的所有未实现方法。子类型中可以重写父类型中的方法,但是需要满足子类型方法的参数满足逆变、子类型方法的返回值满足协变且子类型不
2021-07-06 00:20:53 57
原创 软件构造2
1.静态类型语言:在编译阶段进行类型检查并发现错误,避免将错误代入运行阶段,提高了代码的正确/健壮性。 动态类型语言:在运行阶段进行类型检查。静态检查无法检查出与变量值有关的错误。可以检查出:语法错误,类名/函数名错误,参数数目错误,参数类型错误,返回值类型错误。动态检查能检查出:非法的参数值,非法的返回值,越界,空指针。2.final类无法派生子类。final变量无法改变值/引用。final方法无法被子类重写。3. 不变对象:一旦被创建,始终指向同一个值/引用。可变对象:拥有方法可以修改.
2021-07-05 23:56:27 60
原创 软件构造1
在经过一段时间的软件构造课程以及java编程的学习过后,本人总结了许多收获与先前未曾了解的知识,在此将分成几个部分进行阐述。1.接口以及面向对象的编程对于java语言来说,最突出的优势就在于其面向对象的编程能力。其中接口是很方便的一个工具。当接口被定义好后,后续可以有多种实现。当完成这些不同的实现后,可以根据具体的需求来使用不同的实现。这样可以很好地进行复用。在具体的需求发生变化时,也可以更加灵活地进行调整与改变,而不需要像面向过程的编程那样需要调整许多代码,且每面临一次变化都需要调整一次代码,这样
2021-07-04 00:02:22 89 1
原创 计算机系统大作业——程序人生-Hello’s P2P
摘 要本文主要介绍了hello程序在Linux系统下的整个生命周期。详细地对预处理、编译、汇编、链接的过程进行了分析,并讨论了hello的进程管理、存储管理以及IO管理,介绍了汇编指令、机器代码、重定位、动态链接、异常控制流、虚拟内存以及IO函数的相关内容,对hello的一生进行了完整的描述,漫游了整个计算机系统。关键词:汇编;链接;进程;虚拟内存;IO;目 录第1章 概述 1.1...
2021-06-30 14:58:02 684
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人