软件构造Lab2实验总结】的更多相关文章

本次实验训练抽象数据类型(ADT)的设计.规约.测试,并使用面向对象编程(OOP)技术实现ADT.具体来说内容如下: 针对给定的应用问题,从问题描述中识别所需的ADT: 设计ADT规约(pre-condition.post-condition)并评估规约的质量: 根据ADT的规约设计测试用例: ADT的泛型化: 根据规约设计ADT的多种不同的实现:针对每种实现,设计其表示(representation).表示不变性(rep invariant).抽象过程(abstraction function…
(防扒小助手) 本人CSDN博客: https://blog.csdn.net/m0_61753302https://blog.csdn.net/m0_61753302本人博客园博客(同步CSDN): https://www.cnblogs.com/kalesky/https://www.cnblogs.com/kalesky/如果对你有用的话欢迎点赞关注哟! 目录 1.实验目标概述 2.实验环境配置 3.实验过程 3.1 Poetic Walks 3.1.1 Get the code and …
本实验通过解决三个问题,训练了基本的Java编程技能,并给出了Eclipse+Jdk+Junit的配置方案,以及对使用git进行项目管理的方式. 1.因此,本实验的第一个要点是配置环境.具体配置环境过程如下: Eclipse(IDE):直接从官网上安装,按默认配置进行即可. Jdk:官网下载,在eclipse中Windows->preferences->Java->Installed JREs,然后把下的jdk8的最新版本add,然后apply即可.(之前配的18,所以没遇到困难) Ju…
大二软件构造第一次实验 本人本次实验操作系统:macOS high Sierra 10.13.3 任务一:MagicSquare 对于本任务,主要需要实现两个方法,一个是isLegalMagicSquare方法,一个是generateMagicSquare方法. 首先,是要实现isLegalMagicSquare方法,该方法是根据一个String fileName判断路径所指的文件内容重的数据能否构成一个幻方.若能,则返回true,否则返回false. 当然,这个方法要能够正确处理几种异常情况.…
(防扒小助手) 本人CSDN博客: https://blog.csdn.net/m0_61753302 本人博客园博客(同步CSDN): 何以牵尘 - 博客园 (cnblogs.com)https://www.cnblogs.com/kalesky/ 如果对你有用的话欢迎点赞关注哟! ​​​​​​​ 目录 1.实验目标概述 2.实验环境配置 2.1 实验环境 2.2 GitHub Lab3仓库的URL地址 3.实验过程 3.1 待开发的三个应用场景 3.1.1 应用场景 3.1.2 共性需求 3…
目录 一.实验目标概述 二.实验环境配置 1.安装编写java程序的IDE--IntelliJ IDEA 2.安装Git 3.安装Junit 4.GitHub Lab1仓库的URL地址 三.实验过程 1.Magic Squares (1)isLegalMagicSquare() (2)generateMagicSquare() (3)源代码 2.Turtle Graphics (1)Problem 1:Clone and import (2)Problem 3:Turtle graphics a…
本文内容来自MIT_6.031_sp18: Software Construction课程的Readings部分,采用CC BY-SA 4.0协议. 由于我们学校(哈工大)大二软件构造课程的大部分素材取自此,也是推荐的阅读材料之一,于是打算做一些翻译工作,自己学习的同时也能帮到一些懒得看英文的朋友.另外,该课程的阅读资料中有许多练习题,但是没有标准答案,所给出的答案均为译者所写,有错误的地方还请指出. 译者:李秋豪 江家伟 审校:李秋豪 V1.0 Fri Mar 2 16:48:58 CST 2…
由于软件构造课程需要,学习使用git,以下作为学习笔记. 一.Git初始化及仓库创建和操作  1.基本信息设置(设置签名)  命令        项目级别/仓库级别:仅在当前本地库范围内有效 git config 系统用户级别:登录当前操作系统的用户范围 git config –global ls -lA|less   查看文件内容 级别优先级:就近原则->项目级别优先于系统用户级别 1.设置用户名 git config –global user.name ‘hiter1170301015’ 2…
Part A: The Issues 议题 第一章 软件品质 第二章 面向对象的标准 Part B: The Road To Object Orientation 通向面向对象之路 第三章 模块性 第四章 复用性方法 第五章 走进对象技术 第六章 抽象数据类型 Part C: Object-Oriented Techniques 面向对象技术 第七章 静态结构: 类 第八章 运行时结构: 对象 第九章 内存管理 第十章 泛型 第一章 软件品质 1.1 外部和内在的因素 1.2 外部因素介绍 1.…
在大一初学C语言的时候,所解决的问题都是一些轻量级的简单问题,当时写过一个教学管理系统.这个教学管理系统的功能很简单,思想就是“流水线”:按部就班的实现所有流程.要完成整个教学管理系统,实际上就是完成一些函数,这些函数之间的逻辑组织结构就是人所认知的逻辑结构,要完成一个教学管理系统,首先要实现一些功能:比如 1.录入学生信息 2.为每个学生分配课程 3.为每个学生分配老师 4.为每个学生录入成绩 5.进行成绩的统计. 上面这个流程很直观,而且实现起来也很流畅.我们只需要将这些函数进行实现就行了.…
[软件构造]Mutable类型与Immutable类型 1.前言 在软件构造这门课中,对mutable类型和immutable类型的深入理解,有助于后续ADT.可维护性.可复用性的学习,因此我们有必要对其进行详细的分析说明. 我们首先明确的是,mutable类型和immutable类型均属于ADT的范围,二者关系如下图: 2.概念 immutable类:类的实例创建后成员变量值不变,若修改后,引用会指向一个实例对象. mutable类:类的实例创建后可以通过类的方法就地修改值. 3.常见immu…
1,新建 Parser Generator 点击project --> new 2,填写工程名字 随意取一个名字 点击OK 3,点击Project选项下的 parserwizard 分析器向导选项 这里需要填写 工程存放的目录,以及工程名字. 4,选择配置 这里选择 只lex文件,并创建main程序,单线程模式 点下一步 5,点击完成 6,程序会生成 mylexer.l 的lex空文件,我们需要建立一个简单的lex文件已作说明 将下列程序源代码覆盖生成的lex代码 %{ %} %% //表示如果…
识别结果: 识别结果:…
根据guns开发示例,搭建汽车信息管理系统…
导入JFinal的demo 可以增删改查 根据demo以及自己的理解,使用JFinal实现学生信息管理系统.…
编写java程序时,每创建一个新的对象,都会对对象的内容进行初始化. 每一个类的方法中的局部变量都有严格的初始化要求,因此假如写出下面的程序: void f(){ int i; i++; } 编译时就会得到一条出错信息,因为java会严格检查方法内部局部变量的初始化,正如<java编程思想>中所说“未初始化的局部变量更有可能是程序员的疏忽” 但是对于类内部的字段,java并不会严格检查字段是否初始化,因为类的每一个基本数据类型成员都保证会有一个初始值,哪怕构造器什么都没做. 其实一个对象的初始…
第三章第三节 抽象数据型(ADT) 3-1节研究了“数据类型”及其特性 ; 3-2节研究了方法和操作的“规约”及其特性:在本节中,我们将数据和操作复合起来,构成ADT,学习ADT的核心特征,以及如何设计“好的”ADT. Outline ADT及其四种类型 ADT的基本概念 ADT的四种类型 设计一个好的ADT 表示独立性 不变量和表示泄露 抽象函数AF和表示不变量RI AF与RI 用注释写AF和RI Notes ## ADT及其四种类型 [ADT的基本概念] 抽象数据类型(Abstract Da…
第八章第三节 代码调优的设计模式和I/O 本节学习如何通过对代码的修改,消除性能瓶颈,提高系统性能?——代码调优.面向性 能的设计模式 Outline Java调优 代码调优的概念 单例模式(Singleton Pattern) 享元模式(Flyweight Pattern) 原型模式(Prototype Pattern) 对象池模式(Object Pool Pattern) 常见的Java I/O方法 Notes ## 代码调优 [代码调优的概念] 代码调优:代码调优不是为了修复bug,而是对…
版本控制与Git 转自:http://www.cnblogs.com/angeldevil/p/3238470.html 版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本.有时候偷懒省事,保存副本时命名比较随意,时间长了就不知道哪个是新的,哪个是老的了,即使知道新旧,可能也不知道每个版本是什么内容,相对上一版作了什么修改了,当几个…
为了方便阅读和复习,转载至此,原地址:温布利往事的博客 阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Comparable简介 Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序. 此外,实现此接口的对象可以用作有序映射中的键或有序集…
ucore Lab2 lab 2 直接执行make qemu-nox会显示 assert 失败: kernel panic at kern/mm/default_pmm.c:277: assertion failed: (p0 = alloc_page()) == p2 - 1 1 连续物理内存管理 1.1 page 概览 对物理内存的管理,为了节省空间,也是为了配合接下来的虚拟内存管理,通常以某个比 byte 大一些的单位进行管理,我们称这一单位内存为一"页(page)",通常是 4…
[root@localhost ~]# yum history list #查看历史 Loaded plugins: fastestmirror ID | Command line | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 22 | install -y screen | 2021-11-01 09:03…
static void * alloc(u_int n, u_int align, int clear) { extern char end[]; int i; u_long alloced_mem; if(freemem==0) freemem=(u_long)end; freemem = (((u_long)(freemem))+(align)-1)&~((align)-1); //Step 1 finished. alloced_mem = freemem; //Step 2 finish…
不需要重写equals方法: 1.     一个类的每一个实例本质上都是唯一的. 2.     不关心一个类是否提供了“逻辑相等”的测试功能 3.     超类已经改写了equals方法,并且从超类继承过来的行为对于子类也是合适的. 4.     一个类时私有的或者是package私有的,并且可以确定它的equals方法永远不会被调用.(这种情况下最好将equals方法改写成以下方式: public boolean equals(Object obj){ throws new Unsupport…
普通字符:匹配与之相同的字符        字母.数字.汉字.下划线.没有特殊定义的标点符号. 简单的转义字符: \n 换行符 \t 制表符 \\ 代表\本身 \^,\$,\.,\(,\),\{,\},\?,\+,\*,\|,\[,\] 匹配这些字符本身   标准字符集合:与多种字符相匹配的表达式        注:区分大小写,大写即相反的意思 \d 任意一个数字,0-9之间 \D:任意一个不是数字的字符 \w 任意一个字母或数字或下划线,A~Z.a~z.0~9._ \s 空格.制表符.换行符等…
第三章第四节 面向对象编程OOP 本节讲学习ADT的具体实现技术:OOP Outline OOP的基本概念 对象 类 接口 抽象类 OOP的不同特征 封装 继承与重写(override) 多态与重载(overload) 重写与重载的区别 泛型 设计好的类 Notes ## OOP的基本概念 [对象] 对象是类的一个实例,有状态和行为. 例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 概念:一个对象是一堆状态和行为的集合. 状态是包含在对象中的数据,在Java中,…
第三章第五节 ADT和OOP中的等价性 在很多场景下,需要判定两个对象是否 “相等”,例如:判断某个Collection 中是否包含特定元素. ==和equals()有和区别?如何为自定义 ADT正确实现equals()? OutLine 等价性equals() 和 == equals()的判断方法 自反.传递.对称性 hashCode() 不可变类型的等价性 可变类型的等价性 观察等价性 行为等价性 Notes ##  等价性equals() 和 == 和很多其他语言一样,Java有两种判断相…
本节转向“方法/函数/操作”如何定义 上一节是名词 这一节是动词 1.编程语言中的函数和方法 方法 使用者不需要知道方法内部如何实现,这叫做“抽象”. 参数 参数类型是否匹配,在静态检查时完成. 返回值 2.规约:程序用于沟通 (1)程序中的文档 java API 类的层次,类接口的实现列表 直接的子类,对于一个接口的实现类 类的描述 构造方法 能调用的所有方法 对于每个构造器和方法的详细说明,方法签名:返回类型,方法名,参数,例外情况. 设计文档 程序的沟通 代码中蕴含的设计决策:给编译器读…
上一节学习了ADT理论,这一节学习ADT的具体实现:OOP 1.基本概念:对象,类,属性,方法 对象 对象是状态和行为的捆绑.java中,状态=成员变量,行为=方法. 类 每个对象都定义了一个类,类定义了成员变量和方法.类的方法就是他的application Programming  interface(API) API定义了怎样和实例交互. 类中的静态和实例变量/方法 静态方法 就是类方法,静态方法无法直接调用非静态成员. 实例方法 需要引用一个类中变量和方法的实例. 2.接口和枚举类型 接口…
multipath多路径实验02-配置多路径软件 在上一篇文章<multipath多路径实验01-构建iSCSI模拟环境>,我构建了iSCSI的模拟环境,在文章最后,已经成功配置并在主机上认出多个链路分别映射出的盘.而本文我就要对这样的多路径环境,通过Linux自带multipath多路径软件聚合成可以方便我们后期使用的形式. 1.安装多路径软件包 2.设置服务开机启动 3.生成multipath配置文件 4.multipath的常用命令 5.udev绑定权限 6.新建ASM磁盘组测试 1.安…