- 博客(14)
- 资源 (1)
- 收藏
- 关注
翻译 JAVA 正则表达式
基于I/O的输入流 应用需要从外部读取文本数据, 在应用中做进一步处理。 具体来说,读取的一个字节或字符序列可能是:输入文件有特定格式,程序需读取文件并从中抽取正确的内容。从网络上传输过来的消息,遵循特定的协议。用户在命令行输入的指令,遵顼特定的格式。内存中存储的字符串,也有格式需要。语法使用grammar判断字符串是否合法,并解析成程序里使用的数据结构正则表达式通常是递归的数据结构终止节点:语法中的文字字符串用语法定义一个“字符串”terminals 终止节点、叶节点nonterminal 非终止节点(遵
2022-06-13 17:30:00
254
翻译 软件构造 git相关
在第三讲中我们学习了Software Configuration Management(SCM),以SCI为软件中发生变化的基本的单元,其中的CDMB是配置管理数据库,存储软件的各配置项随时间发生变化的信息+基线。 而git则是一个SCM tool 在git的仓库中,.git文件时本地的CDMB,工作目录(Working directory)是本地文件系统,暂存区(staging area)隔离了工作目录和git仓库。其中的文件属于三个阶段之一:已修改、已暂存、已提交。git的所有操作都是在一个图数据结构
2022-06-12 19:27:10
211
1
翻译 面向可维护性的设计模式
定义: 工厂方法模式也被称为虚拟构造器。当client不知道要创建哪个具体类的实例,或者不想在client代码中指明要具体创建的实例时,用工厂方法。意图: 定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个类的实例化延迟到其子类。主要解决: 主要解决接口选择的问题。应用实例: 需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。优点:一个调用者想创建一个对象,只要知道其名称就可以了。扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。屏蔽
2022-06-10 23:45:00
289
翻译 软件构造 ADT和OOP中的“等价性”
等价关系是指对于关系E ⊆ T x T ,满足:自反性: x.equals(x)必须返回true对称性: x.equals(y)与y.equals(x)的返回值必须相等。传递性: x.equals(y)为true,y.equals(z)也为true,那么x.equals(z)必须为true。从使用者/外部的角度去观察:我们说两个对象相等,当且仅当使用者无法观察到它们之间有不同,即每一个观察总会都会得到相同的结果。例如对于两个集合对象 {1,2} 和 {2,1},我们就无法观察到不同:|{1,2}| = 2,
2022-06-10 08:15:00
191
翻译 软件构造 面向对象编程
对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。概念:一个对象是一堆状态和行为的集合。状态是包含在对象中的数据,在Java中,它们是对象的fields。行为是对象支持的操作,在Java中,它们称为methods。类是一个模板,它描述一类对象的行为和状态。每个对象都有一个类类定义了属性类型(type)和行为实现(implementation)简单地说,类的方法是它的应用程序编程接口(API)。类成员变量(class variable)又叫静态变
2022-06-09 21:08:07
261
翻译 抽象数据类型ADT(2)
-我们通过为每个操作创建测试来为自动测试构建测试套件-这些测试不可避免地会相互影响。-测试构造器、生产器和变值器的唯一方法是对结果对象调用观察器,同样,测试观察器的唯一方法是创建对象供他们观察。▪ 测试creators, producers, and mutators:调用observers来观察这些operations的结果是否满足spec;▪ 测试observers:调用creators, producers, and mutators等方法产生或改变对象,来看结果是否正确。▪ 风险:如果被依
2022-06-07 23:08:26
385
原创 抽象数据类型ADT(3)
回想一下,当且仅当类型的值在创建后从不改变时,该类型才是不可变的。随着我们对抽象空间A和表示空间R的新理解,我们可以完善这一定义:抽象值永远不应改变。但是只要它继续映射到同一个抽象值,实现(implementation)就可以自由地改变表示值,这样客户就看不到变化。这种变化被称为有益的可变性.这种较弱的RI允许一系列RatNum算术运算来简单地忽略将结果减少到最低项。但是,当要向人显示结果时,我们首先要简化它,也就是说:参与运算时,可以有公约数;显示输出时,需要简化(没有公约数)请注意,这个toS
2022-06-07 22:00:00
218
原创 软件构造 ADT和OOP中的“等价性”
一、等价性equals() 和 ==1.1 等价关系 等价关系是指对于关系E ⊆ T x T ,满足: 自反性: x.equals(x)必须返回true 对称性: x.equals(y)与y.equals(x)的返回值必须相等。 传递性: x.equals(y)为true,y.equals(z)也为true,那么x.equals(z)必须为true。 从使用者/外部的角度去观察: 我们说两个对象相等,当且仅当使用者无法观察到它们之
2021-07-07 22:06:08
220
原创 软件构造笔记——面向可维护性的构造技术
一、基于状态的构造技术 基于状态编程 使用有限状态机来定义程序的行为、使用状态来控制程序的执行 根据当前状态,决定下一步要执行什么操作、执行操作之后要转移到什么新的状态 1.1 基于自动机的编程 定义: 基于自动机的编程是一种编程范例,其中该程序或程序的一部分被认为是有限状态机(FSM)或任何其他形式自动机的模型。 将程序视为有限自动机。 每个自动机一次只能执行一个“步骤”,并且程序的执行分为多个步骤。 这些步骤通过更
2021-07-07 20:57:48
155
原创 软件构造笔—String 和 StringBuffer、StringBuilder 的区别
一、三者简介1.1 StringString 表示的就是 Java 中的字符串,日常用到的使用 "" 双引号包围的数都是字符串的实例。String 类其实是通过 char 数组来保存字符串的。下面是一个典型的字符串的声明 String s = "abc"; 上面创建了一个名为 abc 的字符串。 字符串是Immutable的,一旦创建出来就不会被修改1.2 StringBufferStringBuffer对象代表一个可变的字符串序列,当一个 StringBuffer 被创建以后,通过 Str
2021-07-07 18:56:02
169
原创 软件构造笔记-Java 中不能使用泛型的几种情况
一、前言Java 1.5 引入了泛型来保证类型安全,防止在运行时发生类型转换异常,让类型参数化,提高了代码的可读性和重用率。但是有些情况下泛型也是不允许使用的,总结一下编码中不能使用泛型的一些场景。二、基本类型无法直接使用泛型以下写法是错误的:基本类型是不能够作为泛型类型的,需要使用它们对应的包装类。三、泛型类型无法被直接实例化泛型类型可以理解为一个抽象类型,只是代表了类型的抽象,因此不能直接实例化它,下面的做法也是错误的:四、泛型
2021-07-07 18:54:23
1652
原创 软件构造第一章总结
一、软件构造多维度视图1.1 从三个维度看软件系统的构成 按阶段划分:build-time(构造阶段)和run-time(运行阶段) 按动态划分:moment(时刻)和period(时期) 按层次划分:code(代码层面)和component(组件,文件层面) 图1-1 软件构造多维度视图<!--more-->二、软件构造的阶段划分、各阶段的构造活动2.1. Build-time 想法⇒\Rightarrow⇒需求⇒\Right
2021-07-07 18:48:23
714
原创 程序人生-Hello’s P2P
大作业 题 目程序人生-Hello’s P2P 计算机科学与技术学院2021年5月摘 要本文通过分析hello程序从C文件如何转变为可执行文件的全过程,包括预处理、编译、汇编、链接阶段,每一步如何对上一步形成的文件进行操作,形成新文件的过程。hello进程在shell执行的过程,存储管理的过程,I/O处理的过程。以这些过程的分析为例,阐明整个程序的生...
2021-06-27 18:01:34
964
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅