FuLucas's blog

Tags · HIT-Software-Construction

Home

About

Archives

loading..
HIT-Software-Construction

软件构造笔记六——ADT抽象数据类型

抽象数据类型 表示泄露 AF RI Abstraction and User-Defined Types 抽象和用户定义的类型 抽象类型:强调“作用于数据上的操作”,程序员和client无需关心数据如何具体存储的,只需设计/使用操作即可。 ADT是由操作定义的,与其内部如何实现无关! 2 Classifying Types and Operations 分类类型和操作 可变类型的对象:提供了可改变其内部数据的值的操作。不变数据类型: 其操作不改变内部值,而是构造新的对象 Creator 构造器 可以将对象作为参数,但是不能把对象类型作为构造对象。(t* -> T) Producer 生产器 例如 String 的 contact 方法,将两个两个字符串连接为一个新的字符串..

Read more
loading..
HIT-Software-Construction

软件构造笔记五——设计规约

规约的强度及其比较 如何写出好的规约 Functions & methods in programming languages 返回值类型是否匹配、参数类型是否匹配,在静态类型检查阶段完成 使用“方法”的客户端,无需了解方法内部(方法体信息隐藏)具体如何工作—“抽象”。 2 Specification: Programming for communication API:应用程序编程接口 Documenting in programming “假设”写什么?变量的数据类型定义、final关键字定义了设计决策-“不可改变”、方法假设策略 为什么写?:自己记不住、别人不懂 编程时注意两点目标:代码中蕴含的“设计决策”--给编译器读;注释形式的“设计决策”--给自己和别人读。就是依据假设来进行..

Read more
loading..
HIT-Software-Construction

软件构造笔记四——数据类型与类型检验

数据数据类型及定义,检测方式 Mutable, Immutable snapshot图解析数据类型 1 Data type in programming languages 数据类型 A type is a set of values, along with operations that can be performed on those values. 数据类型 = 一组值 + 可执行操作 primitive types 基本数据类型:int, long, boolean, double, char object types 对象数据类型:String, BigInteger Java 约定:基本数据类型是小写字母开头,对象数据类型是大写字母开头 PrimitiveObject ..

Read more
loading..
HIT-Software-Construction

HashSet

HashSet添加元素时如何保证不重复 调用 add(Object 方法时,首先会调用 Object 的 hashCode 方法判 hashCode 是否已经存在 HashCode 相同的元素,如不存在则直接插入元素;如果已存在,则调用 Object 对象的 equals 方法判断是否返回true, 如果为 true 则说明元素已经存在,如为false则插入元素。 可以认为HashMap的key是不能重复的,而这里HashSet的元素是作为了map的key,所以也不能重复。 image-20210718104050829 image-20210914180921174

Read more
HIT-Software-Construction

Java静态实例方法

Java方法 类可以有两种类型的方法:实例方法(非静态方法)和类(静态方法)方法。实例方法用于实现类的实例的行为,只能在类的实例的上下文中调用。类方法用于实现类本身的行为,类方法总是在类的上下文中执行,但也能在类的实例的上下文中调用。 用静态修饰符(static)定义类方法,若缺少则为实例方法。 静态方法和实例方法的调用 外部调用静态方法时:类名.方法名/对象名.方法名;调用实例方法:对象名.方法名,即调用静态方法不需要创建对象。 1234567891011121314public class staticMethod { // a static method public static void callStatic() {    System.out.println("static ..

Read more
loading..
HIT-Software-Construction

软件构造笔记九——面向复用的软件构造技术

Software Reuse 优点:降低成本和开发时间;经过充分测试,可靠、稳定;标准化,在不同应用中保持一致。 缺点:开发可复用的软件(性能差,缺少针对性)和使用已有软件进行开发(需要适配)都需要代价。 measure “reusability”:复用的机会有多频繁;复用的代价有多大(搜索、获取,适配、扩展,实例化,与软件其他部分的互连的难度) 最主要的复用是在代码层面,但软件构造过程中的任何实体都可能被复用(包括需求、规约spec、数据、测试用例、文档等) Source code level: methods, statements, etc (lowest level) Module level: class and interface Library level: API (Java Librar..

Read more
loading..
HIT-Software-Construction

软件构造笔记三——软件构造过程与配置管理

重点掌握:软件开发过程与版本控制工具 Software Development Life Cycle (SDLC) 软件开发生命圈(了解即可) 从无到有,从有到好。 SDLC Traditional Software Process Models 要求 区别不同开发过程模型的异同 根据不同场景给出相应模型 线性过程 Linear:顺序,要求一点要明确,难以更改 迭代过程 Iterative:每个阶段给用户反馈,用户需求不明确 选择合适模型依据:用户参与程度,适应变化能力,开发效率,管理复杂段,开发出的软件质量 瀑布过程 Waterfall (Linear, non-interative) 线性推进、阶段划分清楚、整体推进、无迭代、管理简单 无法适应需求增加/变化(prohibitively ..

Read more
loading..
HIT-Software-Construction

软件构造笔记二——软件测试与测试优先编程

IMPORTANCE 本章重点 什么是测试 白盒测试与黑盒测试 按阶段、分步骤测试 1. Software Testing What is Testing 软件测试:为涉众提供有关被测试产品或服务的质量信息而进行的调查,是提高软件质量的重要手段,但是软件质量取决于设计而不是testing。 - 寻找bug,确认是否达到可用级别(用户需求) - 关注系统的某一侧面的质量特性 测试无法达到100%的无错误,never completely prove the absence of errors。 residual defect rates 残留缺陷率(bugs left over after the software has shipped)。对于大的系统来说,即使残留缺陷率很低,残留的bu..

Read more
loading..
HIT-Software-Construction

软件构造笔记一——软件构造的多维视图和质量目标

多维视图和质量目标 MultiDimensionalSoftwareViews ThreeDimension Build-time Views Build-time(构造阶段):idea -> requirement -> design -> code -> installable / executable package Code-level view(代码的逻辑组织):source code -- how source code are logically organized by basic program blocks such as functions(函数), classes(类), methods(方法), interfaces(接口). Component..

Read more
loading..
HIT-Software-Construction

软件构造——实验二总结

循环判断删除list元素 错误演示增强for循环 12345678List<String> lists = new ArrayList<String>();String deleteString = "del";lists.add("del");lists.add("fhd");lists.add("test");for (String s : lists) if (s.equals(deleteString)) lists.remove(s); 删除元素后继续循环会报错误信息ConcurrentModificationException,如下图所示: 增强forError 直接原因:modCount != expectedModCount + modCoun..

Read more